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

Материал из Wiki - Факультет компьютерных наук
Перейти к навигации Перейти к поиску
удалил ненужное
Нет описания правки
Строка 1: Строка 1:
== Преподаватели и учебные ассистенты ==
== Преподаватели ==
{| class="wikitable" style="text-align:center"
{| class="wikitable" style="text-align:center"
|-
|-
|| '''Лектор''' ||colspan="8"| [https://t.me/turbomuza Садуллаев Музаффар Тимурович]
|| '''Лектор''' ||colspan="5"| [https://t.me/Ch0p1k3 Иван Лущ]
|-
|-
|| '''Номер группы''' || [https://youtu.be/t89-iUDsc4M?feature=shared Группа 1] || [https://youtu.be/t89-iUDsc4M?feature=shared Группа 2] || [https://youtu.be/t89-iUDsc4M?feature=shared Группа 3|| [https://youtu.be/t89-iUDsc4M?feature=shared Группа 4] || [https://youtu.be/t89-iUDsc4M?feature=shared Группа 5] || [https://youtu.be/t89-iUDsc4M?feature=shared Группа 1 (ЭАД)] || [https://youtu.be/t89-iUDsc4M?feature=shared Группа 2 (ЭАД)] || [https://youtu.be/t89-iUDsc4M?feature=shared  Группа 3 (ЭАД)]
|| '''Номер группы''' || Группа 1 || Группа 2 || Группа 3 || Группа 4 || Группа 1 (ЭАД)
|-
|-
|| '''Семинаристы''' || [https://t.me/selvig0317 Солодовников Михаил] || [https://t.me/lesikv Васина Олеся] || [https://t.me/syubogdanov Богданов Сергей]  || [https://t.me/haiot4105 Дергачев Степан ] || [https://t.me/turbomuza Садуллаев Музаффар] || [https://t.me/boboevm003 Бобоев Мурод] || [https://t.me/sp_gn Какурин Василий] || [https://t.me/Anton_Labutin Лабутин Антон]
|| '''Семинаристы''' || TBA || TBA || TBA || TBA || TBA
|-
|| '''Ассистенты''' || [https://t.me/jenyasubbotina Евгения Субботина] || [https://t.me/Knyaginia_R Анастасия Иванникова] || [https://t.me/mariaskai13 Деминова Мария] || [https://t.me/ShNuriddin Шарипов Нуриддин] || [https://t.me/Oladiy2504 Копнев Максим] || [https://t.me/olezha223 Олег Швецов] || [https://t.me/WolfrahmMetallic Нарек Хоранян] || [https://t.me/jenyasubbotina Евгения Субботина]
|-
|| '''Ассистент лектора''' || colspan="8"| [https://t.me/dashhhitt Фоминых Дарья]
|-
|| '''Инфраструктура''' || colspan="8"| [https://t.me/pythonabuser  Хорст Алина]
|}
|}


== Прошедшие занятия ==
== Программа курса ==


{| class="wikitable" style="text-align:center"
{| class="wikitable"
|-
|| '''Дата''' || '''Тема'''
|-
|-
|| 08.09 || Введение в курс. Пакетные менеджеры. Импорты. Консольные утилиты.
|| Packaging и tooling
|-
|-
|| TBA || Архитектура кода, типизации. Mypy. Ruff. Ty. Pydentic
|| Типы: почему и как
|-
|-
|| TBA || Тестирование. Зачем оно нужно? Виды тестирования. Пирамида тестов. Pytest. Unittest. Mocks. FreezeGun. Распараллеливание тестов.
|| Тестирование и логирование
|-
|-
|| TBA || Введение в многопоточность. ThreadSafe. Threads, Multiprocessing.
|| PDB, introspection и dis
|-
|-
|| TBA || EventLoop. Executors. Asyncio. AioHttp.
|| Threading, GIL basics
|-
|-
|| TBA || БД-1: Реляционные базы данных. Транзакции. Explain analyze запросов. Миграции БД. Индексы.
|| Multiprocessing, IPC, subinterpreters, free-threading, subprocess
|-
|-
|| TBA || БД-2: Нереляционные базы данных. NewSQL (Google Spanner, CockroachDB, VoltDB, YugabyteDB)
|| Async, coroutines, event loop
|-
|-
|| TBA || System Design
|| Дескрипторы
|-
|-
|| TBA || Flask. Docker. Docker-Compose. DockerHub
|| Метаклассы и <code>__init_subclass__</code>
|-
|-
|| TBA || FastAPI. Dependency Injector. Tenacity. Circuit Breaker
|| Faster CPython: Adaptive Interpreter и JIT
|-
|-
|| TBA || Parsers
|| Memory model, GC, weakref
|-
|-
|| TBA || Intro to DA (Визуализация, АБ-тестирование)
|| Профилирование и performance
|-
|-
|| TBA || Как Python работает внутри себя Cpython ?? БОНУС
|| Cython, C-extensions, bindings
|}
|}


== Материалы курса ==
== Материалы курса ==


* [https://github.com/turbomuza/Advanced-Python-2025-2026 Репозиторий с лекциями]
* [https://hsemanytask.org/ami-python-advanced Manytask]
* [https://app.manytask.org/hse-advanced-python-2025-fall/  Manytask]
* [TBD Канал с анонсами по курсу]
* [https://t.me/hse_python_advanced_25_26 Канал с анонсами по курсу]
* [TBD Ссылка на чат]
* [https://t.me/+16qQPcvNstBkYmIy Ссылка на чат]


== Система оценки ==
== Система оценки ==


* Итоговая оценка:
Итоговая оценка:


             O<sub>итог</sub> = min(10, 0,2 * ДЗ<sub>1-3</sub> + 0,3 * ДЗ<sub>4-8</sub> + 0,1 * Доклад + 0,4 * Экзамен + 0,1 * Семинары)
             O<sub>итог</sub> = 0,2 * Семинары + 0,5 * Задачи + 0,3 * Мок-интервью


* '''Семинары''' — активность на семинарах
* '''Задачи''' — регулярные ДЗ через [https://hsemanytask.org/ami-python-advanced manytask]
* '''Мок-интервью''' — устная форма контроля


== Мок-интервью ==


* '''ДЗ<sub>1-3</sub>''' — проект, который размазан на 3 домашки. Среднее из 3 домашек с весом 0.2
Устная форма контроля в формате технического собеседования, имитирующая Python-интервью. Проходит на последних 2-3 лекциях семестра
* '''ДЗ<sub>4-8</sub>''' — регулярные домашки по пройденной теме. 
(декабрь).
* '''Доклад''' — рассказ про библиотеку (доклад)
* '''Экзамен''' — защита написанного проекта (Выполняется в команде. Темы появятся в октябре 2025 года).


Часть I. Теория


== Домашние задания ==
Интервьювер задаёт 4-5 открытых вопросов равномерно по блокам курса. Формат — открытые вопросы, требуют объяснения "почему". Примеры:
[[Настройка_окружения_для_курса | Настройка окружения ]]
* почему list[Dog] нельзя передать вместо list[Animal], а Sequence[Dog] — можно?
* чем logger.error(exc) хуже logger.exception()?


{| class="wikitable" style="text-align:center"
Часть II. Разбор задач
|-
|| '''Дата''' || '''ДЗ-1'''
|-
|}


== Доклады ==
Интервьювер выбирает несколько задач из сданных студентом. Студент рассказывает, как устроено его решение, почему выбрал именно такой
TBA
подход, какие видит компромиссы, и отвечает на уточняющие вопросы.


== Проекты ==
Критерии оценивания
Темы проектов на 2025/2026 год -- https://docs.google.com/spreadsheets/d/1YK5xi6On5y49G-1HVVQ21RsZ01WzwlnvukLKNgx0p2A/edit?usp=sharing


[[Описание_работы_над_проектом | Описание работы над проектом ]]
Каждая часть даёт до 5 баллов, итого 0-10.

Версия от 15:47, 26 августа 2026

Преподаватели

Лектор Иван Лущ
Номер группы Группа 1 Группа 2 Группа 3 Группа 4 Группа 1 (ЭАД)
Семинаристы TBA TBA TBA TBA TBA

Программа курса

Packaging и tooling
Типы: почему и как
Тестирование и логирование
PDB, introspection и dis
Threading, GIL basics
Multiprocessing, IPC, subinterpreters, free-threading, subprocess
Async, coroutines, event loop
Дескрипторы
Метаклассы и __init_subclass__
Faster CPython: Adaptive Interpreter и JIT
Memory model, GC, weakref
Профилирование и performance
Cython, C-extensions, bindings

Материалы курса

  • Manytask
  • [TBD Канал с анонсами по курсу]
  • [TBD Ссылка на чат]

Система оценки

Итоговая оценка:

           Oитог = 0,2 * Семинары + 0,5 * Задачи + 0,3 * Мок-интервью
  • Семинары — активность на семинарах
  • Задачи — регулярные ДЗ через manytask
  • Мок-интервью — устная форма контроля

Мок-интервью

Устная форма контроля в формате технического собеседования, имитирующая Python-интервью. Проходит на последних 2-3 лекциях семестра (декабрь).

Часть I. Теория

Интервьювер задаёт 4-5 открытых вопросов равномерно по блокам курса. Формат — открытые вопросы, требуют объяснения "почему". Примеры:

  • почему list[Dog] нельзя передать вместо list[Animal], а Sequence[Dog] — можно?
  • чем logger.error(exc) хуже logger.exception()?

Часть II. Разбор задач

Интервьювер выбирает несколько задач из сданных студентом. Студент рассказывает, как устроено его решение, почему выбрал именно такой подход, какие видит компромиссы, и отвечает на уточняющие вопросы.

Критерии оценивания

Каждая часть даёт до 5 баллов, итого 0-10.