Бакалавриат
2024/2025


Язык программирования Python (углубленный курс)
ID 792075
Лучший по критерию «Полезность курса для Вашей будущей карьеры»
Лучший по критерию «Полезность курса для расширения кругозора и разностороннего развития»
Статус:
Курс по выбору (Прикладная математика и информатика)
Направление:
01.03.02. Прикладная математика и информатика
Где читается:
Факультет компьютерных наук
Когда читается:
2-й курс, 1, 2 модуль
Формат изучения:
без онлайн-курса
Охват аудитории:
для всех кампусов НИУ ВШЭ
Преподаватели:
Васина Олеся Игоревна,
Дешеулин Олег Андреевич,
Коган Александра Сергеевна,
Петров Тимур Александрович,
Садуллаев Музаффар Тимурович
Язык:
русский
Кредиты:
5
Программа дисциплины
Аннотация
На первом курсе вы уже познакомились с 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
Содержание учебной дисциплины
- Работа с github, conda, venv
- Numpy, scipy
- Pandas, matplotlib
- Logging, Testing, Exceptions
- Seaborn, plotly, Dash
- ORM, БД
- Telegram Bot + API
- HTTP, парсинг данных
- Парсинг данных (продолжение)
- Веб-разработка на Flask
- PySpark
- Threading, Multiprocessing
- Асинхронность
Элементы контроля
- Домашние заданияДомашние задания выдаются после лекции и семинара по пройденной теме. Домашнее задание состоит из нескольких (до 10 практических заданий), сдающиеся в проверяющую систему + проводится дополнительная проверка кода силами семинаристом и ассистентами.
- Доклад
- ЭкзаменЭкзамен представляет из себя проект, который студенты делают в командах до 4 человек на протяжении курса. Защита проводится устно в аудитории в виде доклада на 5-10 минут. По итогу комиссия выставляет оценку, исходя из: Соблюдения сроков сдачи (для проекта существуют 2 контрольные точки) Итоговый проект Вклад студента в реализацию проекта внутри команды Защита производится всей командой, в ситуации, если кто-то из команды пропускает по уважительной причине, то оценка ставится исходя из проделанной работы