Бакалавриат
2022/2023


Язык программирования Python (углубленный курс)
Лучший по критерию «Полезность курса для Вашей будущей карьеры»
Лучший по критерию «Полезность курса для расширения кругозора и разностороннего развития»
Лучший по критерию «Новизна полученных знаний»
Статус:
Курс по выбору (Прикладная математика и информатика)
Направление:
01.03.02. Прикладная математика и информатика
Где читается:
Факультет компьютерных наук
Когда читается:
2-й курс, 1, 2 модуль
Формат изучения:
без онлайн-курса
Охват аудитории:
для своего кампуса
Язык:
русский
Кредиты:
5
Контактные часы:
56
Программа дисциплины
Аннотация
На первом курсе вы уже познакомились с Python: писали классы, разбирались с итераторами, щупали декораторы. Этого достаточно, чтобы решать задачи и писать небольшие скрипты — но явно не хватает для понимания того, как устроен язык изнутри и как выглядит настоящий продакшн Python-код.
На этом курсе мы постараемся это исправить. Разберёмся, как работает CPython под капотом, научимся писать строго типизированный код и понимать, зачем это нужно, поговорим про метаклассы и дескрипторы — те самые штуки, на которых держатся все любимые фреймворки. Потрогаем asyncio и корутины, разберёмся с многопоточностью и тем, почему в Python она работает именно так. Напишем биндинги к C-коду и поймём, как Python дружит с другими языками. Научимся правильно паковать и распространять свой код, отлаживать его через pdb и покрывать код тестами
Мало теории — много практики. Планируются мелкие задачи и два больших домашних задания.
Цель освоения дисциплины
- Проектирование и упаковка Python-библиотек для production (pyproject.toml, wheel, PyPI, C-extensions)
- Работа с продвинутой системой типов Python на уровне библиотечного кода (Protocol, Generic, variance, Overload, mypy --strict)
- Многопоточность, многопроцессность и асинхронное программирование (GIL, threading, multiprocessing, asyncio, subinterpreters, free-threading)
- Понимание внутренностей CPython: байткод, adaptive interpreter + JIT, memory model, garbage collector
- Отладка, профилирование и оптимизация производительности (dis, inspect, sys.monitoring, cProfile, py-spy, memray)
- Продвинутые механики объектной модели: дескрипторы, метаклассы, dataclass_transform
- Продвинутые механики объектной модели: дескрипторы, метаклассы, dataclass_transform
- Ускорение критичных участков через Cython и C-bindings
Содержание учебной дисциплины
- Bash, Git, среды разработки
- Numpy, pandas, scipy
- Matplotlib, seaborn
- Plotly, Typing, Jax
- ООП
- HTTP, REST
- Парсинг данных
Элементы контроля
- Домашнее задание 1Numpy, Pandas, визуализация
- Домашнее задание 2ООП
- Домашнее задание 3Веб-разработка
- Домашнее задание 4
- Проект