МОВС Прикладной Python, (2023-24 уч. год, 2-3 модули) — различия между версиями

Материал из Wiki - Факультет компьютерных наук
Перейти к: навигация, поиск
 
(не показано 57 промежуточных версии 2 участников)
Строка 3: Строка 3:
 
''В данном курсе изучаются основные инструменты и подходы, которые используются в backend-разработке современных сервисов на языке Python.<br/> Курс предназначен для освоения веб-фреймворка FastAPI и всей сопутствующей экосистемы: асинхронное программирование, тестирование, SQLAlchemy, Redis, Celery, Pytest, логирование, мониторинг.''
 
''В данном курсе изучаются основные инструменты и подходы, которые используются в backend-разработке современных сервисов на языке Python.<br/> Курс предназначен для освоения веб-фреймворка FastAPI и всей сопутствующей экосистемы: асинхронное программирование, тестирование, SQLAlchemy, Redis, Celery, Pytest, логирование, мониторинг.''
  
Занятия проводятся в [[https://us06web.zoom.us/j/85786469151?pwd=SdgYapp3zZdD0bpI1ceWFno94sgL2C.1 Zoom]] '''по пятницам в 19:40'''
+
Занятия проводятся в [[https://us06web.zoom.us/j/85045136682?pwd=WxMnLBiRcco4Vp7sac2Ycf3AwkQa0t.1 Zoom]] '''по средам в 19:40'''
  
 
==Контакты==
 
==Контакты==
Строка 32: Строка 32:
  
 
==Материалы курса==
 
==Материалы курса==
Плейлист курса на YouTube: https://www.youtube.com/playlist?list=PLmA-1xX7IuzADGz3hSgPPm6ib11Z0HSML
+
 
 +
Ссылка на плейлист курса на YouTube: [[https://www.youtube.com/playlist?list=PLmA-1xX7IuzADGz3hSgPPm6ib11Z0HSML YouTube-playlist]]
 +
 
 +
Презентация с интро курса: [[https://docs.google.com/presentation/d/18EdzJmc2ENrYpTYhRILd1-K1nQzFvrhCzxrQAlV7mNs/edit?usp=sharing Слайды]]
  
 
{| class="wikitable"
 
{| class="wikitable"
Строка 38: Строка 41:
 
  ! Занятие !! Тема !! Дата !! Ссылки
 
  ! Занятие !! Тема !! Дата !! Ссылки
 
|-
 
|-
| style="background:#eaecf0;" | '''1''' [[https://www.youtube.com/watch?v=vBwq7oUT0cg&list=PLmA-1xX7IuzADGz3hSgPPm6ib11Z0HSML&index=1 Запись]] || [[ Ноутбук]] Асинхронность 1: генераторы, конструкция yield from. От генераторов к асинхронности. Обработка исключений в Python || 03.11.23 ||  
+
| style="background:#eaecf0;" | '''1''' [[https://www.youtube.com/watch?v=vBwq7oUT0cg&list=PLmA-1xX7IuzADGz3hSgPPm6ib11Z0HSML&index=1 Запись]] || [[ Ноутбук]] [[https://docs.google.com/presentation/d/1Ik28hL_gLFD3MFQibtrJt3KYplaszQ67WwLrJaZJScY/edit?usp=sharing Слайды]] Асинхронность 1: генераторы, конструкция yield from. От генераторов к асинхронности. Обработка исключений в Python || 03.11.23 ||
 +
|-
 +
| style="background:#eaecf0;" | '''2''' [[https://www.youtube.com/watch?v=GS2MvlXqLDg&list=PLmA-1xX7IuzADGz3hSgPPm6ib11Z0HSML Запись]] || [[https://colab.research.google.com/drive/1VlGdcMNSwFFeFy0LuQKPiy-_EKu-EIQr?usp=sharing Ноутбук]] [[https://docs.google.com/presentation/d/1Ik28hL_gLFD3MFQibtrJt3KYplaszQ67WwLrJaZJScY/edit#slide=id.gf1e88225b8_0_69 Слайды]] Асинхронность 2: основы асинхронного программирования, awaitable-объекты, Event Loop, Asyncio, Aiohttp || 13.11.23 ||  
 
|-
 
|-
| style="background:#eaecf0;" | '''2''' [[https://www.youtube.com/watch?v=GS2MvlXqLDg&list=PLmA-1xX7IuzADGz3hSgPPm6ib11Z0HSML Запись]] || [[ Ноутбук]] Асинхронность 2: основы асинхронного программирования, awaitable-объекты, Event Loop, Asyncio, Aiohttp || 13.11.23 ||  
+
| style="background:#eaecf0;" | '''3''' [[https://www.youtube.com/watch?v=ytEmALVGzAY&list=PLmA-1xX7IuzADGz3hSgPPm6ib11Z0HSML&index=3 Запись]] || [[https://colab.research.google.com/drive/1w0UpJuksiCmGjhlrKv0r38lIy_M_S3oa?usp=sharing Ноутбук]] [[https://docs.google.com/presentation/d/13qPkZiUfKytuFOkx6BKrp6x3VJ3KZFb9wz2AAyh8jjc/edit?usp=sharing Слайды]] Продвинутый ООП: магические методы, property, статические методы, методы класса. Класс как пространство имён || 23.11.23 ||
 
|-
 
|-
| style="background:#eaecf0;" | '''3''' [[ Запись]] || [[ Ноутбук]] Продвинутый ООП: магические методы, property, статические методы, методы класса. Класс как пространство имён || 23.11.23 ||
+
| style="background:#eaecf0;" | '''4''' [[https://www.youtube.com/watch?v=J0EnFcdGW1I&list=PLmA-1xX7IuzADGz3hSgPPm6ib11Z0HSML&index=4 Запись]] || [[https://colab.research.google.com/drive/1fXNkVLig7zq8KCLqvi8d0j-FD6OGKG9Z?usp=sharing Ноутбук]] [[https://docs.google.com/presentation/d/13qPkZiUfKytuFOkx6BKrp6x3VJ3KZFb9wz2AAyh8jjc/edit#slide=id.g29e60f88531_0_130 Слайды]] Продвинутый ООП: абстрактные классы, классы-декораторы. Нововведения Python 3.8+. Работа с виртуальным окружением. [[https://colab.research.google.com/drive/1pGsKUPzlTxb-E2ovY-odUBG0XF0etdmv Фреймворк Streamlit]] [[https://t.me/c/1987318607/168/227 больше ссылок тут]] || 24.11.23 ||
 
|-
 
|-
| style="background:#eaecf0;" | '''4''' [[ Запись]] || [[ Ноутбук]] Продвинутый ООП: абстрактные классы, классы-декораторы. Нововведения Python 3.8+. Работа с виртуальным окружением. Фреймворк Streamlit ||  
+
| style="background:#eaecf0;" | '''5''' [[https://www.youtube.com/watch?v=HUXVyouflb0&list=PLmA-1xX7IuzADGz3hSgPPm6ib11Z0HSML&index=5 Запись]] || [[https://colab.research.google.com/drive/12JNmFYnvGkECAMIaYJDIbfKAF6NZ31cj?usp=sharing Ноутбук]] [[https://docs.google.com/presentation/d/1bJ9YvTy2Sw2TuWsoN-o7x-AEnkZCcfK6RNHhdVKU-xU/edit?usp=sharing Слайды]] GIL. Процессы и потоки. Основы синхронизации. Способы ускорения вычислений применения функций к датасетам. Именованные кортежи и dataclass || 30.11.23 ||
 
|-
 
|-
| style="background:#eaecf0;" | '''5''' [[ Запись]] || [[ Ноутбук]] Type Hinting: использование аннотаций в функциях, аннотация переменных, отложенная проверка аннотаций ||  
+
| style="background:#eaecf0;" | '''6''' [[https://www.youtube.com/watch?v=m_M8T7xr9MU&list=PLmA-1xX7IuzADGz3hSgPPm6ib11Z0HSML&index=6 Запись]] || [[https://docs.google.com/presentation/d/1Q78okPzXqGA3eqlKKokOV3srVLwp7QIolq-4CsF9TGk/edit?usp=sharing Слайды]] Работа с сетью, протокол HTTP. Продвинутые возможности работы с SQL: индексы, ограничения, views, транзакции, принципы ACID || 08.12.23 ||  
 
|-
 
|-
| style="background:#eaecf0;" | '''6''' [[ Запись]] || [[ Ноутбук]] Telegram-боты, Aiogram, деплой бота на сервер || ||  
+
| style="background:#eaecf0;" | '''7''' [[https://www.youtube.com/watch?v=m_M8T7xr9MU&list=PLmA-1xX7IuzADGz3hSgPPm6ib11Z0HSML&index=7 Запись]] || [[https://drive.google.com/file/d/190WlKx7IXO4BibzovWZ12XpfjnrP6m9N/view?usp=sharing Код]] [[https://mastergroosha.github.io/aiogram-3-guide/ Туториал]] Telegram-боты, Aiogram, конечные автоматы || 14.12.23 ||  
 
|-
 
|-
 
| Конец первого модуля |
 
| Конец первого модуля |
 
|-
 
|-
| style="background:#eaecf0;" | '''7''' [[ Запись]] || [[ Ноутбук]] Тестирование 1: assert'ы, параметризация, фикстуры || ||  
+
| style="background:#eaecf0;" | '''8''' [[https://www.youtube.com/watch?v=HUrb-fLUpko&list=PLmA-1xX7IuzADGz3hSgPPm6ib11Z0HSML&index=8 Запись]] || [[https://docs.google.com/presentation/d/1x8LWmm8KnLwYxaxPelQhgr-0D1a0ACwi1bVcOApmQm8/edit?usp=sharing Слайды]] [[https://uneex.org/LecturesCMC/PythonDevelopment2023/10_Testing Заметки]] Тестирование в Python || 26.01.24 ||  
 
|-
 
|-
| style="background:#eaecf0;" | '''8''' [[ Запись]] || [[ Ноутбук]] Тестирование 2: Selenium, моки, стабы || ||  
+
| style="background:#eaecf0;" | '''9''' [[https://www.youtube.com/watch?v=Uvc9MfQVFlQ&list=PLmA-1xX7IuzADGz3hSgPPm6ib11Z0HSML&index=9 Запись]] || [[https://docs.google.com/presentation/d/1AxtCTm8Gyh4iBmCs_8uKfkMlKAGgSYATyAK3RTVhOLw/edit?usp=sharing Слайды]] [[https://colab.research.google.com/drive/1p7fGA9EKgql6oCVGDN3MO2qjYRwypqAe?usp=sharing Ноутбук]] Пример написания тестов. Оконные функции в SQL, запросы к базе данных из Python [[https://leetcode.com/discuss/study-guide/1600719/database-sql-primer-part-2-window-functions#2 Leetcode задачи на оконные функции. Кое-где они избыточны, но для практики полезно]] || 02.02.24 ||  
 
|-
 
|-
| style="background:#eaecf0;" | '''9''' [[ Запись]] || [[ Ноутбук]] SQL: PostgreSQL, запросы к БД из-под Python, оконные функции|| ||
+
| style="background:#eaecf0;" | '''10''' [[https://youtu.be/Squ9bH2i0Mw Запись]] || [[https://github.com/Serggorsar/entity_matcher Код]] FastAPI: пример API для инференса модели машинного обучения || 07.02.24 ||
 
|-
 
|-
| style="background:#eaecf0;" | '''10''' [[ Запись]] || [[ Ноутбук]] SQLAlchemy || ||  
+
| style="background:#eaecf0;" | '''11''' [[https://youtu.be/rbfK0ODkY-A Запись]] || [[https://drive.google.com/file/d/1b5TikoqZ0g8hQO--FBWjrK2PAI6duqOC/view?usp=sharing Код]] SQLAlchemy, миграции с помощью Alembic. FastAPI: аутентификация пользователей, миграции в Postgres || 14.02.24 ||  
 
|-
 
|-
| style="background:#eaecf0;" | '''11''' [[ Запись]] || [[ Ноутбук]] FastAPI 1: API, Pydantic, архитектура веб-приложения || ||  
+
| style="background:#eaecf0;" | '''12''' [[https://youtu.be/Trm5i6igi4c Запись]] || [[https://drive.google.com/file/d/17sgXpNfrle859cKfrFz5dA-2gBW3lssX/view?usp=sharing Код]] FastAPI: аутентификация пользователей (окончание), роутеры, запросы к базе данных через ORM,  файловая структура, обработка ошибок. || 21.02.24 ||
 
|-
 
|-
| style="background:#eaecf0;" | '''12''' [[ Запись]] || [[ Ноутбук]] FastAPI 2: Redis, Celery, логирование, мониторинг || ||   
+
| style="background:#eaecf0;" | '''13''' [[https://youtu.be/AH2_e5EFglA Запись]] || [[https://drive.google.com/file/d/1Z-93JLTnwYlA8CHIyj_Vx2mr5G0pL51-/view?usp=sharing Код]] FastAPI: Redis, Celery, тестирование || 28.02.24 ||   
 
|-
 
|-
| style="background:#eaecf0;" | '''13''' [[ Запись]] || [[ Ноутбук]] Собираем всё вместе: PostgreSQL + SQLAlchemy + Streamlit + FastAPI + Celery + Redis + Docker + VPS || ||  
+
| style="background:#eaecf0;" | '''14''' [[https://youtu.be/vijxmlfOj8Y Запись]] || [[https://drive.google.com/file/d/1BqjltQGD-1exXRvDhd2oPhF4DzSssz6I/view?usp=sharing Код]] [[https://drive.google.com/file/d/1oZp21MqkReB5aFM26YsScisQgY_NFA18/view?usp=sharing Deploy]] FastAPI: зависимости, упаковка в docker, deploy приложения || 05.03.24 ||  
 
|-
 
|-
 
|}
 
|}
Строка 76: Строка 81:
  
 
== Домашние задания ==
 
== Домашние задания ==
# Разработка интерактивного дашборда с использованием фреймворка Streamlit
+
# Разработка интерактивного дашборда с использованием фреймворка Streamlit: [https://colab.research.google.com/drive/1t_fUN60Hh_S9wsNPlUggiUiG9JCBcEmk?usp=sharing условие]. Дедлайн 13.12.2023 1:00
# Тестирование веб-сервиса
+
# Тестирование веб-сервиса: [https://t.me/c/1987318607/168/688 условие] Дедлайн: 21.02.2024 23:59
  
 
== Проекты ==
 
== Проекты ==
# Разработка Telegram бота для презентации модели машинного обучения
+
# Разработка Telegram бота для презентации модели машинного обучения: [https://docs.google.com/document/d/10FW6nO0O3RmFXlaRqwwt1EPidCtW3RMpXkhDp9-gCj4 условие]. Дедлайн: 14.01.2024 23:59
# '''Итоговый.''' Реализация веб-сервиса с использованием фреймворка FastAPI
+
# '''Итоговый.''' Реализация веб-сервиса с использованием фреймворка FastAPI. [https://t.me/c/1987318607/168/871 условие] Дедлайн: 22.03.2024 23:59
  
 
== Литература ==
 
== Литература ==
 
* Лучано Рамальо: Python. К вершинам мастерства. 2-е издание, 2022 г., издательство ДМК Пресс
 
* Лучано Рамальо: Python. К вершинам мастерства. 2-е издание, 2022 г., издательство ДМК Пресс
 
* Мэтью Фаулер: Asyncio и конкурентное программирование на Python, 2023 г., издательство ДМК Пресс
 
* Мэтью Фаулер: Asyncio и конкурентное программирование на Python, 2023 г., издательство ДМК Пресс
 +
* Курс 1-2 модуля [[http://wiki.cs.hse.ru/%D0%9C%D0%9E%D0%92%D0%A1_%D0%9E%D1%81%D0%BD%D0%BE%D0%B2%D1%8B_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F_%D0%BD%D0%B0_Python_(%D0%9C%D0%9C%D0%9E%D0%92%D0%A123,_1-2_%D0%BC%D0%BE%D0%B4%D1%83%D0%BB%D0%B8) Основы программирования на Python]]
 +
* [http://wiki.cs.hse.ru/%D0%9C%D0%B0%D1%88%D0%B8%D0%BD%D0%BD%D0%BE%D0%B5_%D0%BE%D0%B1%D1%83%D1%87%D0%B5%D0%BD%D0%B8%D0%B5_%D0%B8_%D0%B2%D1%8B%D1%81%D0%BE%D0%BA%D0%BE%D0%BD%D0%B0%D0%B3%D1%80%D1%83%D0%B6%D0%B5%D0%BD%D0%BD%D1%8B%D0%B5_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B#.D0.9D.D0.B0.D0.B1.D0.BE.D1.80_.22.D0.B2.D0.B5.D1.81.D0.BD.D0.B0_2021.22 Вики МОВС]

Текущая версия на 13:21, 20 марта 2024

О курсе

В данном курсе изучаются основные инструменты и подходы, которые используются в backend-разработке современных сервисов на языке Python.
Курс предназначен для освоения веб-фреймворка FastAPI и всей сопутствующей экосистемы: асинхронное программирование, тестирование, SQLAlchemy, Redis, Celery, Pytest, логирование, мониторинг.

Занятия проводятся в [Zoom] по средам в 19:40

Контакты

Чат курса в TG: https://t.me/+LH8XQqZ7iTxkNWVi

Преподаватель: Горшков Сергей

Автор программы: Паточенко Евгений Анатольевич

Anytask: 1WBZLkf

Ассистенты

Ассистент Контакты
Сергей Осипович @ml_enjoyer
Гордей Зуев @WhiteShape
Анна Лазарева @annalzrv
Илья Сокур @ilias_ml
Милана Алёшкина @milashkinaa

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

Ссылка на плейлист курса на YouTube: [YouTube-playlist]

Презентация с интро курса: [Слайды]

Занятие Тема Дата Ссылки
1 [Запись] Ноутбук [Слайды] Асинхронность 1: генераторы, конструкция yield from. От генераторов к асинхронности. Обработка исключений в Python 03.11.23
2 [Запись] [Ноутбук] [Слайды] Асинхронность 2: основы асинхронного программирования, awaitable-объекты, Event Loop, Asyncio, Aiohttp 13.11.23
3 [Запись] [Ноутбук] [Слайды] Продвинутый ООП: магические методы, property, статические методы, методы класса. Класс как пространство имён 23.11.23
4 [Запись] [Ноутбук] [Слайды] Продвинутый ООП: абстрактные классы, классы-декораторы. Нововведения Python 3.8+. Работа с виртуальным окружением. [Фреймворк Streamlit] [больше ссылок тут] 24.11.23
5 [Запись] [Ноутбук] [Слайды] GIL. Процессы и потоки. Основы синхронизации. Способы ускорения вычислений применения функций к датасетам. Именованные кортежи и dataclass 30.11.23
6 [Запись] [Слайды] Работа с сетью, протокол HTTP. Продвинутые возможности работы с SQL: индексы, ограничения, views, транзакции, принципы ACID 08.12.23
7 [Запись] [Код] [Туториал] Telegram-боты, Aiogram, конечные автоматы 14.12.23
8 [Запись] [Слайды] [Заметки] Тестирование в Python 26.01.24
9 [Запись] [Слайды] [Ноутбук] Пример написания тестов. Оконные функции в SQL, запросы к базе данных из Python [Leetcode задачи на оконные функции. Кое-где они избыточны, но для практики полезно] 02.02.24
10 [Запись] [Код] FastAPI: пример API для инференса модели машинного обучения 07.02.24
11 [Запись] [Код] SQLAlchemy, миграции с помощью Alembic. FastAPI: аутентификация пользователей, миграции в Postgres 14.02.24
12 [Запись] [Код] FastAPI: аутентификация пользователей (окончание), роутеры, запросы к базе данных через ORM, файловая структура, обработка ошибок. 21.02.24
13 [Запись] [Код] FastAPI: Redis, Celery, тестирование 28.02.24
14 [Запись] [Код] [Deploy] FastAPI: зависимости, упаковка в docker, deploy приложения 05.03.24

Записи консультаций

Формула оценивания

Оценка = 0.15*ОДЗ-1 + 0.15*ОДЗ-2 + 0.3*ОПроект + 0.4*ОИтоговый проект


Домашние задания

  1. Разработка интерактивного дашборда с использованием фреймворка Streamlit: условие. Дедлайн 13.12.2023 1:00
  2. Тестирование веб-сервиса: условие Дедлайн: 21.02.2024 23:59

Проекты

  1. Разработка Telegram бота для презентации модели машинного обучения: условие. Дедлайн: 14.01.2024 23:59
  2. Итоговый. Реализация веб-сервиса с использованием фреймворка FastAPI. условие Дедлайн: 22.03.2024 23:59

Литература

  • Лучано Рамальо: Python. К вершинам мастерства. 2-е издание, 2022 г., издательство ДМК Пресс
  • Мэтью Фаулер: Asyncio и конкурентное программирование на Python, 2023 г., издательство ДМК Пресс
  • Курс 1-2 модуля [Основы программирования на Python]
  • Вики МОВС