• A
  • A
  • A
  • АБB
  • АБB
  • АБB
  • А
  • А
  • А
  • А
  • А
Обычная версия сайта
Бакалавриат 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
  • Парсинг данных
Элементы контроля

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

  • неблокирующий Домашнее задание 1
    Numpy, Pandas, визуализация
  • неблокирующий Домашнее задание 2
    ООП
  • неблокирующий Домашнее задание 3
    Веб-разработка
  • неблокирующий Домашнее задание 4
  • неблокирующий Проект
Промежуточная аттестация

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

  • 2022/2023 учебный год 2 модуль
    0.5 * Проект + 0.15 * Домашнее задание 4 + 0.1 * Домашнее задание 2 + 0.1 * Домашнее задание 1 + 0.15 * Домашнее задание 3

Авторы

  • Оруджева Альбина Александровна
  • Рословцева Кристина Олеговна