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

Материал из Wiki - Факультет компьютерных наук
Перейти к навигации Перейти к поиску
гр
 
(не показано 15 промежуточных версий 2 участников)
Строка 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 (ЭАД)]
|| '''Номер группы''' || [https://t.me/+m2xKtQ6v73A5NTUy Группа 1] || Группа 2 || [https://t.me/+rGetBSn9-AViZjVi Группа 3] || [https://t.me/+qGTj9RHbmTVkMTEy Группа 4] || [https://t.me/+VIMwq7NR_FoxYzQ6 Группа 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 Лабутин Антон]
|| '''Семинаристы''' || [https://t.me/kiDaniel Хайбулин Даниэль] || [https://t.me/mfgnik Михаил Федоров] || [https://t.me/on1kova Дарья Оникова] || [https://t.me/codeforcesrankzero Андрей Новгородский] || [https://t.me/fsnaumov Федор Наумов]
|-
|| '''Ассистенты''' || [https://t.me/Diluc_Strawberry Ахтямова Жанна] || [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"
|-
|-
|| '''Дата''' || '''Тема'''
|| Packaging и tooling
|-
|-
|| 08.09 || Введение в курс. Пакетные менеджеры. Импорты. Консольные утилиты.
|| Типы: почему и как
|-
|-
|| TBA || Архитектура кода, типизации. Mypy. Ruff. Ty. Pydentic
|| Тестирование и логирование
|-
|-
|| TBA || Тестирование. Зачем оно нужно? Виды тестирования. Пирамида тестов. Pytest. Unittest. Mocks. FreezeGun. Распараллеливание тестов.
|| PDB, introspection и dis
|-
|-
|| TBA || Введение в многопоточность. ThreadSafe. Threads, Multiprocessing.
|| Threading, GIL basics
|-
|-
|| TBA || EventLoop. Executors. Asyncio. AioHttp.
|| Multiprocessing, IPC, subinterpreters, free-threading, subprocess
|-
|-
|| TBA || БД-1: Реляционные базы данных. Транзакции. Explain analyze запросов. Миграции БД. Индексы.
|| Async, coroutines, event loop
|-
|-
|| TBA || БД-2: Нереляционные базы данных. NewSQL (Google Spanner, CockroachDB, VoltDB, YugabyteDB)
|| Дескрипторы
|-
|-
|| TBA || System Design
|| Метаклассы и <code>__init_subclass__</code>
|-
|-
|| TBA || Flask. Docker. Docker-Compose. DockerHub
|| Faster CPython: Adaptive Interpreter и JIT
|-
|-
|| TBA || FastAPI. Dependency Injector. Tenacity. Circuit Breaker
|| Memory model, GC, weakref
|-
|-
|| TBA || Parsers
|| Профилирование и performance
|-
|-
|| TBA || Intro to DA (Визуализация, АБ-тестирование)
|| Cython, C-extensions, bindings
|-
|| TBA || Как Python работает внутри себя Cpython ?? БОНУС
|}
|}


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


* [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]
* [https://sourcecraft.dev/hsemanytask/ami-python-advanced-public-26f Ссылка на репозиторий с задачами и лекциями]
* [https://t.me/hse_python_advanced_25_26 Канал с анонсами по курсу]
* [https://pyadv.hsemanytask.org/intro.html Материал лекций]
* [https://t.me/+16qQPcvNstBkYmIy Ссылка на чат]
* [https://t.me/+U3Lc4H5eokNkYWY6 Канал с анонсами по курсу]
* [https://t.me/+pZqsKY9Ine5jYzg6 Ссылка на чат]


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


* Итоговая оценка:
Итоговая оценка:
 
            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]. Защита решений. Преподаватель вправе в любой момент семестра вызвать студента на устную защиту любой сданной задачи или группы задач. Студент обязан объяснить свое решение, работу кода и используемые языковые конструкции. Если студент не может дать связного объяснения по существу, баллы за всю соответствующую группу задач в manytask обнуляются; повторная сдача этих задач не восстанавливает балл. Если провалено больше одной защиты, то преподаватель вправе написать дисциплинарную записку за академические нарушения студента.
* '''Мок-интервью''' — устная форма контроля


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


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


== Домашние задания ==
Часть I. Теория
[[Настройка_окружения_для_курса | Настройка окружения ]]
 
{| class="wikitable" style="text-align:center"
|-
|| '''Дата''' || '''ДЗ-1'''
|-
|}


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


== Проекты ==
Часть II. Разбор задач
TBA


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


==== Оценка за проект ====
Критерии оценивания
TBA


Дата защиты: TBA
Каждая часть даёт до 5 баллов, итого 0-10.

Текущая версия от 07:53, 13 сентября 2026

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

Лектор Иван Лущ
Номер группы Группа 1 Группа 2 Группа 3 Группа 4 Группа 1 (ЭАД)
Семинаристы Хайбулин Даниэль Михаил Федоров Дарья Оникова Андрей Новгородский Федор Наумов

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

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

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

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

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

           Oитог = 0,2 * Семинары + 0,5 * Задачи + 0,3 * Мок-интервью
  • Семинары — активность на семинарах
  • Задачи — регулярные ДЗ через manytask. Защита решений. Преподаватель вправе в любой момент семестра вызвать студента на устную защиту любой сданной задачи или группы задач. Студент обязан объяснить свое решение, работу кода и используемые языковые конструкции. Если студент не может дать связного объяснения по существу, баллы за всю соответствующую группу задач в manytask обнуляются; повторная сдача этих задач не восстанавливает балл. Если провалено больше одной защиты, то преподаватель вправе написать дисциплинарную записку за академические нарушения студента.
  • Мок-интервью — устная форма контроля

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

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

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

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

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

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

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

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

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