Информация будет обновлятся.
Занятия происходят в очно формате, по четвергам в 203 УПМ.
Для получения оценки за курс надо выполнять курсовой проект: разработку микрофреймворка для анализа данных и создание графического приложения.
- Телеграмм-чат: https://t.me/mipt_npm_python
Материал сгруппированный по темам, но даваемый в разные семинары.
- Парадигмы программирования: процедурная, функциональная и объектно-ориентированная. Паттерны проектирования и их реализация в Python.
- ООП в Python. Магические методы и метаклассы. Менеджеры контекста. Декораторы классов.
- ФП в Python. Обработка коллекций в функциональном стиле. Инструменты функционального программирования. Декораторы функций.
- Инструменты разработки: инструменты анализа кода, отладчик, профилирование кода. Соглашения о стиле кода. Виртуальное окружение.
- Документация: аннотация типов, документирование кода, автоматическая генерация документации. Соглашения о стиле кода. Формат ReStructuredText.
- Тестирование: модульное тестирование, CI/CD.
- Дополнительные типы данных: перечисления, время и дата, классы данных, расширения стандартных коллекций.
- Работа со строками: шаблоны строк, регулярные выражения,
- Работа с файловой системой.
- Ввод/Вывод: работа с бинарными и текстовыми данными; сериализация/десериализация структур данных в текстовые форматы JSON, XML, бинарный формат Protobuf и с использованием встроенной сериализации; хранение данных в научных форматах HDF5 и ROOT; Numpy IO; архивация данных, отображение данных в память.
- Основы баз данных. Использование СУБД Sqlite3.
- Численное моделирование и анализ данных с использованием Numpy и Scipy.
- Создание графических материалов, анимации и интерактивной инфографики.
- Типовые инструменты: логирование, разбор аргументов командной строки, создание командной оболочки, взаимодействие с ОС
- Асинхронное, параллельное и многопоточное исполнение программы. Управление процессами, межпроцессорное взаимодействие.
- Событийно-ориентированное программирование и создание GUI приложений. Типовые архитектуры GUI приложений;
- Сетевое программирование --- передача данных через сокеты. Использование встроенного сервера.
- Основы веб-разработки.
- Дистрибуция программного обеспечения, распространение пакетов Python.
- Оптимизация производительности. Numba. Cython. PyPy.
- Управление физическими устройствами. USB.
Курсовой проект выдается в виде еженедельного набора задач, за каждую решенную задачу начисляются баллы, за просрочку сдачи на неделю баллы за задачу уменьшаются наполовину. Для получения зачета требуется набрать не менее 50% баллов за семестр.