- Git. Что такое система контроля версий. Основные понятия: коммиты, ветки, слияния. Основные рекомендации к ведению репозиториев.
- Организация кода в Python: директории, модули, файлы, импорт модулей и объектов из них. Объект как основная сущность языка.
- Структуры данных. Мутабельность и иммутабельность. Списки, словари, строки, числа.
- ООП в Python: реализация наследования, полиморфизм, инкапсуляция. Методы классов и объектов, property, конструкторы.
- Numpy. Что такое массив. Отличие от списков. Размерность массивов. Векторные операции, отличие от последовательных операций.
- Потоки в Python. GIL, приоритет потоков. Многопоточные и многопроцессорные вычисления. Отличие потоков от процессов. Когда лучше использовать потоки, а когда процессы. Когда появляется выигрыш от параллелизации?
- Numba. На чем основано ускорение. Что такое JIT-компиляция. Декоратор njit. Аргументы декоратора. Сигнатура функции. Что это такое, на что влияет. Основные типы в сигнатурах.
- Составляющие хорошего кода. Архитектура, документация, тесты. Типы документации, инструменты для реализации. Типы тестирования.
- Юнит-тестирование. Unittest. TestCase. Итеративные тесты, subTest. Настройка окружения перед тестом с помощью setUp.
- Markdown, TeX. Чем подход TeX и Markdown отличается от визуальных текстовых редакторов. Основы синтаксиса формул.
- Jupyter notebook. Как устроен. Когда лучше применять, а когда нет.
- Matplotlib. Создание двухмерных графиков. Добавление линий и точек на график. Метки линий и легенда.