Программа и содержание

Для кого этот курс?

Для опытных разработчиков на Python, для выпускников курса Python Developer. Basic:

углубите знания в области паттернов проектирования, изучите асинхронное программирование и метапрограммирование, повысите производительность и безопасность кода

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

узнаете о тонкостях программирования на Python, об устройстве экосистемы языка, прокачаете навыки работы с другими языками программирования

Для веб-разработчиков:

научитесь создавать масштабируемые и безопасные веб-приложения, изучите особенности построения RESTful API на примере FastAPI; поработаете с Django, популярным фреймворком для веб-разработки

Для дата-сайентистов и ML-разработчиков:

научитесь использовать Python для обработки и анализа больших объёмов данных; сможете практиковаться в сфере машинного обучения, работать с библиотеками Pandas, NumPy, Matplotlib и другими инструментами для анализа данных и построения предсказательных моделей

Что вам даст этот курс?

Вы сформируете основные компетенции в программной инженерии, сможете прагматично подходить к решению задач, погрузитесь в современную «промышленную» разработку на Python

Высокая производительность:

вы научитесь анализировать производительность инструментов и ресурсов, профилировать код, проектировать и реализовывать высокопроизводительные приложения

Анализ данных:

вы научитесь визуализировать данные, понимать особенности ПО, работающего с данными, использовать аналитические библиотеки

Веб-разработка:

вы научитесь понимать особенности устройства веб-приложений, разбираться в работе фреймворков, проектировать веб-приложения

Создание ПО:

вы научитесь работать с базовыми концепциями и моделями, исследовать устройство стороннего ПО, поддерживать собственное ПО, проектировать архитектуру

Программа:

База

Этот модуль посвящен рассмотрению фундаментальных основ языка на продвинутом уровне, а также применению общих практик разработки ПО в контексте «экосистемы» Python. Целью является достижение единого понятийного аппарата, формирование представления о внутреннем устройстве языка, его возможностях, ограничениях, недостатках и области применимости. В модуле рассматриваются нюансы настройки окружения разработчика, аспекты функционального, процедурного и ООП программирования на Python, особенности устройства виртуальной машины, вопросы обеспечения качества ПО и автоматизации инфраструктурных задач.

Тема 1: Структура проекта, управление зависимостями, настройка окружения: обзор и лучшие практики

Тема 2: Дистрибуция кода и развертывание: путь от лэптопа до кластера

Тема 3: Аннотации типов: уровень nightmare!

Тема 4: Внутренности: байткод, его исполнение и виртуальная машина

Тема 5: Внутренности: устройство основных типов, управление памятью и GIL

Тема 6: ООП: Объектная модель и особенности ООП в Python // ДЗ

Тема 7: ООП: Дескрипторы и метапрограммирование

Тема 8: Тестирование: pytest и как писать тесты

Тема 9: Тестирование: (анти)паттерны и инструменты

Тема 10: Дизайн кода и архитектура: абстракции, модульность, SOLID

Тема 11: Дизайн кода и архитектура: domain driven design, чистая архитектура

Тема 12: Дизайн кода и архитектура: event driven архитектура, микросервисы

Тема 13: Дизайн кода и архитектура: паттерны проектирования

Web-программирование

Этот модуль посвящен веб-разработке, тому, какой она выглядит со стороны Python программиста и какими особенностями обладает. Целью является рассмотрение нюансов и лучших практик по созданию и эксплуатации веб-сервисов. В модуле рассматривается Django, внутреннее устройство его ORM и других его составляющих, обсуждаются особенности построения REST API на примере FastAPI, масштабирования веб-проектов.

Тема 1: Сетевое взаимодействие и архитектура web-серверов

Тема 2: Создание динамических страниц: от CGI до ASGI

Тема 3: MVC/MVT фреймворки на примере Django

Тема 4: ORM: хорошее, плохое и злое

Тема 5: Работа с БД: транзакции, репликация, шардирование и даже NoSQL

Тема 6: API: что такое настоящий REST и как создавать RESTful приложения

Тема 7: FastAPI: основы

Тема 8: FastAPI: взаимодействие с БД и SQLAlchemy

Тема 9: Аутентификация и авторизация

Тема 10: API: (g)RPC, GraphQL

Тема 11: Безопасность: обзор распространенных проблем, уязвимостей и лучших практик

Ml Engineering

Этот модуль посвящен знакомству с фундаментальными библиотеками, применяемыми для анализа данных, а также обзору современной big data экосистемы. Python является де-факто стандартом при решении аналитических задач, поэтому данный аспект языка нельзя обойти стороной. При этом целью модуля является не погружение в математические дебри, а рассмотрение таких инструментов, как jupyter, numpy, pandas и matplotlib, и области их применения в инженерной и аналитической деятельности.

Тема 1: Высокопроизводительные вычисления с NumPy

Тема 2: Исследовательский анализ данных c Pandas

Тема 3: Инструменты работы с данными: IPython, matplotlib, seaborn

Тема 4: Оркестрация задач: jenkins, luigi, airflow

Тема 5: Нейронки: PyTorch, TensorFlow, HuggingFace и LLM

Тема 6: Обзор big data экосистемы: хранение и обработка данных, обучение и inference, model serving

Highload

Этот модуль посвящен высокопроизводительным вычислениям на Python. В модуле рассматриваются особенности конкурентного и асинхронного программирования и то, как на это влияет устройство виртуальной машины языка. Также внимание уделяется превратностям написания расширений на С и вопросам профилирования кода. В качестве бонуса происходит знакомство с языком Go, который часто используется Python-программистами для решения performance-critical задач.

Тема 1: Профилирование производительности

Тема 2: Concurrency: многопоточное программирование и примитивы синхронизации

Тема 3: Concurrency: процессы и межпроцессное взаимодействие (IPC)

Тема 4: Ускорение с помощью C: расширения

Тема 5: Ускорение с помощью C: Cython, Pypy и FFI

Тема 6: asyncio: происхождение и основы

Тема 7: asyncio: event loop, внутренности async/await, низко- и высокоуровневое API

Тема 8: asyncio: инструменты и лучшие практики

Тема 9: Golang: зачем он Python разработчику + тур по языку

Тема 10: Golang: горутины, планировщик, конкурентная обработка

Тема 11: Обзор новинок и изменений из свежих версий Python