• A
  • A
  • A
  • АБB
  • АБB
  • АБB
  • А
  • А
  • А
  • А
  • А
Обычная версия сайта
Бакалавриат 2025/2026

Язык программирования Python (углубленный курс)

ID 987268

Лучший по критерию «Полезность курса для Вашей будущей карьеры»
Когда читается: 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
Планируемые результаты обучения

Планируемые результаты обучения

  • Умение писать асинхронные и мультипроцессинговые скрипты
  • Умение работать с API
  • Создание телеграм-ботов
Содержание учебной дисциплины

Содержание учебной дисциплины

  • Введение в курс
  • Архитектура кода, типизации. Mypy. Ruff. Ty. Pydentic
  • Тестирование.
  • Введение в многопоточность. ThreadSafe. Threads, Multiprocessing.
  • EventLoop. Executors. Asyncio. AioHttp.
  • БД-1
  • БД-2
  • System Design
  • Flask. Docker. Docker-Compose. DockerHub
  • FastAPI. Dependency Injector. Tenacity. Circuit Breaker
  • Parsers
  • Intro to DA
  • Как Python работает внутри себя Cpython?
Элементы контроля

Элементы контроля

  • неблокирующий Экзамен
    Экзамен представляет из себя проект, который студенты делают в командах до 4 человек на протяжении курса. Защита проводится устно в аудитории в виде доклада на 5-10 минут. По итогу комиссия выставляет оценку, исходя из: Соблюдения сроков сдачи (для проекта существуют 2 контрольные точки) Итоговый проект Вклад студента в реализацию проекта внутри команды Защита производится всей командой, в ситуации, если кто-то из команды пропускает по уважительной причине, то оценка ставится исходя из проделанной работы
  • неблокирующий Доклад
  • неблокирующий Домашние задания
    Домашние задания выдаются после лекции и семинара по пройденной теме. Домашнее задание состоит из нескольких (до 10 практических заданий), сдающиеся в проверяющую систему + проводится дополнительная проверка кода силами семинаристом и ассистентами.
  • неблокирующий Семинары
Промежуточная аттестация

Промежуточная аттестация

  • 2025/2026 2nd module
    Oитог = min(10, 0,2 * ДЗ1-3 + 0,3 * ДЗ4-8 + 0,1 * Доклад + 0,4 * Экзамен + 0,1 * Семинары)

Авторы

  • Рословцева Кристина Олеговна
  • Волкова Вера Константиновна