Основы программирования
- Высокоуровневые и низкоуровневые языки, интерпретируемые и компилируемые.
- Выражения, структуры данных, переменные, функции, ifelse, циклы, ввод/вывод(консоль и файлы)
- Организация кода c main(), exceptions
- Модули и бибиотеки
- Чеклист “Узнать новый язык прграммирования”
Hands-on programming
- Как исполняется программа, где на компьютере живет интепретатор или компилятор. Выполнение в командной строке, REPL, IDE.
- Установка среды программирования - что может пойти не так?
- Синтаксис языка и примеры кода. “Hello world” и примеры простых программ. Чем отличаются сложные программы от простых?
- Стандартная библиотека и пакеты, менеджер пакетов. Популярные библиотеки, фреймворки, их использование. Особенности развития open-source проектов.
- Качество кода. Best coding practices. Рефакторинг.
- Юнит-тесты, тестирование, TDD.
- Документация.
- Контроль версий, git, github/gitlab. Workflow c git. Как написать хороший коммит. Issue tracker.
- Базовое администрирование удаленной машины. Continious integration (Travis CI, Circle CI).
Чуть более сложное программирование
- Проект как пакет (структура, оформление, распространение)
- Абстракции (уровни, границы, соответствие реальным объектам). State (состояние), побочные эффекты (side effects).
- ФП и ООП. Динамическая и статическая типизация. Чем отличаются высокоуровневые и низкоуровневые языки программирования.
- Чем новые языки программирвания отличаются от более старых? Как создать новый язык программирвания и зачем это нужно?
- Паттерны (GOF), их судьба в программирвании.
- Подходы к разработке.
Отдельные темы и навыки
- Дебаггер
- Теория автоматов
- Регулярные выражения
- Сериализация
Также для мотивации