День открытых дверей по курсу «Python Developer. Professional» 18.05.2018 в 20:00 | OTUS
Проходил 18 мая 2018 года в 20:00

День открытых дверей
Python

День открытых дверей онлайн

Хотите узнать, почему OTUS – больше, чем просто образовательный портал?
Как OTUS дает возможность стать частью сообщества профессионалов и сделать новый шаг по карьерной лестнице?
Почему учиться – не обязанность, а удовольствие и почему тесное сплетение теории и практики в обучении дает эффект синергии?
Приходите к нам на День Открытых Дверей. Формат проведения – онлайн – подключиться можно из любой точки мира!
Преподаватель
Станислав Ступников

Запись

О курсе

Python Developer. Professional
120 000 ₽ 108 000 ₽
5 месяцев
Начало 26 ноября

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

Профессиональный онлайн-курс для тех, кто уже имеет опыт программирования на Python и хочет повысить свой уровень за счет новых знаний и навыков из различных областей разработки. Если вы уверенно чувствуете себя с Python, помните C, имеете представление о сетевом взаимодействии и реляционных СУБД, умеете обращаться с Linux, Git и прочими стандартными инструментами девелопера — курс для …

Программа курса
Модуль 1
База
Модуль 2
Web-программирование
Модуль 3
ML Engineering
Модуль 4
Highload
Модуль 5
Проектная работа
База
Этот модуль посвящен рассмотрению фундаментальных основ языка на продвинутом уровне, а также применению общих практик разработки ПО в контексте ""экосистемы"" Python. Целью является достижение единого понятийного аппарата, формирование представления о внутреннем устройстве языка, его возможностях, ограничениях, недостатках и области применимости.
В модуле рассматриваются нюансы настройки окружения разработчика, аспекты функционального, процедурного и ОО программирования на Python, особенности устройства виртуальной машины, вопросы обеспечения качества ПО и автоматизации инфраструктурных задач.
Структура проекта, управление зависимостями, настройка окружения: обзор и лучшие практики // ДЗ
разобрать стандартный шаблон структуры Python проекта;
рассмотреть различные инструменты по управлению зависимостями;
научиться создавать удобное окружение для разработки.
26 ноября, 20:00 — 21:30
Лектор: Станислав Ступников
Домашние задания: 1
ДЗ
Анализатор логов. Реализовать сервис, формирующий статистический отчет о характеристиках запросов к сервису (среднее, медианное время ответа и т.п.) на основании парсинга логов, которые пишет nginx. Оформить проект согласно всем лучшим практикам, подключить CI, линетры, чекеры, написать Dockerfile и README
Дистрибуция кода и развертывание: путь от лэпота до кластера
рассмотреть различные способы сборки Python проектов;
обсудить способы и каналы дистрибуции проектов;
изучить лучшие практики по контейниризации Python приложений;
рассмотреть kubernetes в качестве основной среды для запуска контейнеров.
3 декабря, 20:00 — 21:30
Лектор: Валентин Шилин
Аннотации типов: уровень nightmare! // ДЗ
познакомиться с теорией типов и изучить особенности ее применения к Python;
рассмотреть возможно аннотации типов, разобрать кейсы;
изучить существующие варианты и инструменты для проверки аннотаций.
5 декабря, 20:00 — 21:30
Лектор: Валентин Шилин
Домашние задания: 1
ДЗ
Тренажер по аннотации типов. На предоставленном ресурсе пройти максимальное количество упражнений на аннотацию типов, результаты собрать в единый файл и оформить как отдельный проект
Внутренности: байткод, его исполнение и виртуальная машина // ДЗ
разобраться с устройством виртуальной машины;
рассмотреть процесс исполнения кода;
рассмотреть фундаментальные абстракции, которыми оперирует виртуальная машины.
10 декабря, 20:00 — 21:30
Домашние задания: 1
ДЗ
Интерпретатор. Написать частичный интерпетатор Python на Python на основе заданного "скелета". Понадобится реализовать виртуальную машину, неймспейсы, фреймы, обработку опкодов, обработку циклов и исключений. Также необходимо обеспечить минимальное функциональное тестирование проекта
Внутренности: устройство основных типов, управление памятью и GIL
разобраться с работой основных типов данных и следствиями такой реализации;
рассмотреть процесс управлению памятью в Python;
объяснить, как GIL влияет на производительность Python программ.
12 декабря, 20:00 — 21:30
Лектор: Валентин Шилин
ООП: Объектная модель и особенности ООП в Python // ДЗ
изучить устройство объектной модели Python;
разобраться с разделением на новые и классические классы;
объяснить тонкости множественного наследования;
разобраться с нюансами реализации ООП в Python.
17 декабря, 20:00 — 21:30
Домашние задания: 1
ДЗ
API скоринга. Реализовать логику валидации запросов к скоринговому API на базе готового "скелета". Сервис на вход принимает POST запросы с JSON, содержащий набор атрибутов, требующих проверки на соответсвие набору правил, аналогично тому Django проверяет данные на соответствие описанию формы. Подразумевается, что реализация будет использовать метаклассы или протокол дескрипторов
ООП: Дескрипторы и метапрограммирование
объяснить дескрипторы и их протокол;
разобраться с использованием ""магических методов"";
рассмотреть область применимости абстрактных базовых классов;
проанализировать особенности эксплуатации метаклассов.
19 декабря, 20:00 — 21:30
Тестирование: pytest и как писать тесты // ДЗ
обсудить необходимость тестирования и когда нужно писать тесты;
разобраться с тем, что именно тестировать и как структурировать тесты;
рассмотреть pytest в качество основного инструмента тестирования;
разобраться с устройством пирамиды тестирования;
24 декабря, 20:00 — 21:30
Домашние задания: 1
ДЗ
Тестирование. Написать юнит, интеграционные и функциональные тесты в API из прошлого домашнего задания. Для интеграционных тестов понадобится сначала дописать свою обертку, взаимодействующую с БД. Тесты понадобится реализовать с помощью фреймворка pytest
Тестирование: (анти)паттерны и инструменты
разобрать антипаттерны тестирования;
рассмотреть область применения инструментов тестирования (моков, фикстур и т.д.);
разобраться с видами атоматизации тестирования.
26 декабря, 20:00 — 21:30
Лектор: Валентин Шилин
Дизайн кода и архитектура: абстракции, модульность, SOLID
рассмотреть подходы к формирование абстракций;
понять, что такое модульный код;
изучить SOLID принципы к построению приложения.
9 января, 20:00 — 21:30
Лектор: Валентин Шилин
Дизайн кода и архитектура: domain driven design, чистая архитектура // ДЗ
познакомится с принципами и терминологией DDD;
изучить Clean Architecture как подход и его применимость в Python проектах.
14 января, 20:00 — 21:30
Лектор: Валентин Шилин
Домашние задания: 1
ДЗ
Чистый склад. На занятии рассматривались части приложения по управлению товарами на некоем складе. В домашнем задании предлагается расширить реализацию, добавив новые доменные объекты, репозитории, доработать unit of work. Все это необходимо сделать соблюдая принципы и подходы чистой архитектуры. Естественно реализация должна быть протестирована.
Дизайн кода и архитектура: event driven архитектура, микросервисы
рассмотреть особенности событийной модели и разобраться с ее применимостью;
изучить микросервисный подход и паттерны микросервисной архитектуры.
16 января, 20:00 — 21:30
Лектор: Валентин Шилин
Дизайн кода и архитектура: паттерны проектирования
рассмотреть паттерны проектирования;
определиться с их полезностью и применимостью в разработке на Python/
21 января, 20:00 — 21:30
Лектор: Валентин Шилин
Web-программирование
Этот модуль посвящен веб-разработке, тому, какой она выглядит со стороны Python программиста и какими особенностями обладает.
Целью является рассмотрение нюансов и лучших практик по созданию и эксплуатации веб-сервисов. В модуле рассматривается Django, внутреннее устройство его ORM и других его составляющих, обсуждаются особенности построения REST API на примере FastAPI, масштабирования веб-проектов.
Сетевое взаимодействие и архитектура web-серверов // ДЗ
рассмотреть принципы сетевого взаимодействия через сокеты;
разобраться с особенностями сетевых протоколов;
рассмотреть нюансы написания программ, общающихся по сети.
23 января, 20:00 — 21:30
Лектор: Валентин Шилин
Домашние задания: 1
ДЗ
HTTP сервер. Реализовать сервер, частично реализующий протокол HTTP, в частности методы GET и HEAD, добиться того, что код проходит предоставленные функциональны тесты. Архитектуру выбрать на свое усмотрение, исходя из вариантов,Ю рассмотренных на занятии. Провести нагрузочное тестирование с помощью ab или wrk
Создание динамических страниц: от CGI до ASGI
рассмотреть принципы функционирования динамического веба;
разобраться с WSGI и его особенностями;
поговорить о различных WSGI контейнерах.
28 января, 20:00 — 21:30
Лектор: Валентин Шилин
MVC/MVT фреймворки на примере Django // ДЗ
разобраться с классической структурой веб-сервисов;
рассмотреть лучшие практики развертывания Django проектов;
объяснить, как конфигурируются и эксплуатируются Django проекты.
30 января, 20:00 — 21:30
Лектор: Валентин Шилин
Домашние задания: 1
ДЗ
Django tutorial. В рамках данного домашнего задания нужно пройти tutorial по Django, представленный на официальном сайте. Там нужно реализовать веб-сервис для боггинга и покрыть его тестами. В качестве дополнения требуется сделать проект production-ready, оформив по всем лучшим практикам и с соблюдением рекомендаций, обсуждаемых на занятии (12 factor apps)
ORM: хорошее, плохое и злое
поговорить о лучших практиках использования моделей;
объяснить, как работает ORM и из чего он состоит;
разобраться с написанием запросов через ORM;
проанализировать запросы.
4 февраля, 20:00 — 21:30
Лектор: Валентин Шилин
Работа с БД: транзакции, репликация, шардирование и даже NoSQL
объяснить, как навигироваться в комплексном пространстве мира распределенных систем и баз данных;
познакомиться с основными понятиями, связанными с эксплуатацией и оптимизацией хранилища данных.
6 февраля, 20:00 — 21:30
Лектор: Валентин Шилин
API: что такое настоящий REST и как создавать RESTful приложения
объяснить, что такое REST;
разобраться с лучшими практиками реализации RESTful приложений;
обсудить подходы к документированию и лимитированию запросов к API;
11 февраля, 20:00 — 21:30
Лектор: Валентин Шилин
FastAPI: основы // ДЗ
запустить простое приложение;
провалидировать модель запроса и ответа с помощью Pydantic;
добавить простую аутентификацию;
собрать docker-контейнер с приложением.
13 февраля, 20:00 — 21:30
Лектор: Валентин Шилин
Домашние задания: 1
ДЗ
ML model serving. В этом домашнем задании предлагается реализовать REST API, занимающегося инференсом некой модели машинного обучения, т.е. поступает набор признаков объекта, на выходе возвращается предсказание модели. В качестве основы проекта предлагается фреймворк FastAPI
FastAPI: взаимодействие с БД и SQLAlchemy
Рассмотреть варианты синхронного и асинхронного взаимодействия;
Проанализировать типичное CRUD приложение;
Разобраться с особенностями подключения и использования SQLAlchemy;
18 февраля, 20:00 — 21:30
Лектор: Валентин Шилин
Аутентификация и авторизация // ДЗ
разобраться с терминологической базой;
рассмотреть различные схемы аутентификации;
изучить способы разграничения прав пользователя;
рассмотреть стандарты и готовые инструменты.
20 февраля, 20:00 — 21:30
Лектор: Валентин Шилин
Домашние задания: 1
ДЗ
Аутентификация. В данном домашнем задании предлагается добавить аутентификацию через JWT токены в API из предыдущего домашнего задания. Также необходимо дополнить проект минимальной авторизацией на основе RBAC
API: (g)RPC, GraphQL
рассмотреть альтернативные REST подходы создания API;
сравнить подходы между собой и определиться с границами применимости.
25 февраля, 20:00 — 21:30
Безопасность: обзор распространенных проблем, уязвимостей и лучших практик
рассмотреть виды и примеры уязвимостей, которые могут возникать в приложениях на разных этапах жизни;
разобрать способы и инструменты по выявлению и устранению уязвимостей;
изучить возможности обеспечения ИБ.
27 февраля, 20:00 — 21:30
ML Engineering
Этот модуль посвящен знакомству с фундаментальными библиотеками, применяемыми для анализа данных, а также обзору современной big data экосистемы. Python является де-факто стандартом при решении аналитических задач, поэтому данный аспект языка нельзя обойти стороной. При этом, целью модуля является не погружение в математические дебри, а рассмотрение таких инструментов как jupyter, numpy, pandas и matplotlib и области их применения в инженерной и аналитической деятельности.
Высокопроизводительные вычисления с NumPy // ДЗ
разобраться с областью применимости numpy и его основной структурой данных - ndarray;
рассмотреть индексирование и операции над массивами;
поговорить о возможностях библиотеки.
11 марта, 20:00 — 21:30
Лектор: Валентин Шилин
Домашние задания: 1
ДЗ
Логистическая регрессия. В данном домашнем задании предлагается дописать заготовку класса, реализующую метод логистической регрессии на основе стохастического градиентного спуска. В ходе работы необходимо попрактиковаться с использованием numpy, большинство составляющих (подготовка данных, код обучения и оценки эффективности) предоставляются в готовом виде
Исследовательский анализ данных c Pandas // ДЗ
разобраться с областью применимости pandas и его основной структурой данных - dataframe;
рассмотреть индексирование и операции над dataframe;
поговорить о возможностях библиотеки.
13 марта, 20:00 — 21:30
Лектор: Валентин Шилин
Домашние задания: 1
ДЗ
Исследовательский анализ данных. В данном домашнем задании предлагается воспользоваться полученными знаниями о numpy, pandas, jupyter и средствах визуализации. Для этого необходимо выбрать из каталога любой интересующий dataset и провести его анализ в вольном стиле
Инструменты работы с данными: IPython, matplotlib, seaborn
разобраться с видовым многообразием библиотек визуализации данных в Python;
рассмотреть основные возможности matplotlib и два его интерфейса;
рассмотреть основные возможности seaborn и понять его преимущества над matplotlib;
познакомиться с основными возможностями ipython.
18 марта, 20:00 — 21:30
Лектор: Валентин Шилин
Оркестрация задач: jenkins, luigi, airflow
обсудить необходимость оркестрации задач и связанные с этим сложности;
рассмотреть основные инструменты, используемые для запуска задач по расписанию.
20 марта, 20:00 — 21:30
Лектор: Валентин Шилин
Нейронки: PyTorch, TensorFlow, HuggingFace и LLM // ДЗ
разобраться с тем, что из себя представляют нейронные сети;
рассмотреть основные типы сетей;
обозреть самые популярные библиотеки;
обсудить возможности применения больших лингвистических моделей
25 марта, 20:00 — 21:30
Лектор: Валентин Шилин
Домашние задания: 1
ДЗ
OTUS-GPT. В данном домашнем задании предлагается выбрать на свое усмотрение одну из открытых генеративных моделей на HuggingFace, донастроить его под интересующий кейс и реализовать своего бота\агента или даже сеть\цепь агентов
Обзор big data экосистемы: хранение и обработка данных, обучение и inference, model serving
рассмотреть основные элементы современной инфраструктуры обработки больших данных;
объяснить, как аналитические продукты интегрируются с продакшен системами.
27 марта, 20:00 — 21:30
Лектор: Валентин Шилин
Highload

Этот модуль посвящен высокопроизводительным вычислениям на Python. В модуле рассматриваются особенности конкурентного и асинхронного программирования и то, как на это влияет устройство виртуальной машины языка. Так же внимание уделяется превратностям написания расширений на С и вопросам профилирования кода. В качестве бонуса происходит знакомство с языком Go, который часто используется Python программистами для решения performance-critical задач.
Профилирование производительности
проанализировать особенности архитектуры, характеристики железа;
познакомиться с методиками профилирования кода;
разобраться с профилированием памяти и ЦПУ;
познакомиться с инструментами для профилирования, предоставляемыми в linux.
1 апреля, 20:00 — 21:30
Лектор: Валентин Шилин
Concurrency: многопоточное программирование и примитивы синхронизации // ДЗ
разобраться с терминологией конкурентного программирования;
рассмотреть ограничения, накладываемые виртуальной машиной на multithreading;
познакомиться с примитивами синхронизации из стандартной библиотеки.
3 апреля, 20:00 — 21:30
Лектор: Валентин Шилин
Домашние задания: 1
ДЗ
Memcache loader. В этом домашнем задании необходимо переделать готовый однопоточный скрипт, загружающий логи трекера мобильных приложений в кластер memcache'ей. Скрипт нужно сделать конкурентным, воспользовавшись возможностями многопоточной\многопроцессовой обработки, для того чтобы оптимизировать время загрузки данных
Concurrency: процессы и межпроцессное взаимодействие (IPC)
разобраться с превратностями запуска процессов в разных ОС;
познакомиться с возможностями коммуникации процессов для выполнения общей задачи;
рассмотреть устройство основных примитивов синхронизации.
8 апреля, 20:00 — 21:30
Лектор: Валентин Шилин
Ускорение с помощью C: расширения // ДЗ опциональное
разобраться с основными принципами написания расширений на языке C;
познакомиться с управлением памятью через reference counting;
рассмотреть подход к созданию сложных объектов.
10 апреля, 20:00 — 21:30
Лектор: Валентин Шилин
Домашние задания: 1
ДЗ
ProtoFile. В этом домашнем задании нужно создать расширение, которое будет писать файлы с protobuf сериализованным содержимым. Опциональной частью является реализация также и чтения таких файлов. Само содержимое аналогично загружаемым данным из прошлого домашнего задания. Понадобятся знания C
Ускорение с помощью C: Cython, Pypy и FFI
разобраться с генерацией С расширений из Python кода с помощью Cython;
познакомиться с синтаксисом Cython;
рассмотреть область применимости PyPy;
научиться вызывать функции из уже скомпилированных приложений через ffi и ctypes/.
15 апреля, 20:00 — 21:30
Лектор: Валентин Шилин
asyncio: происхождение и основы // ДЗ
познакомиться с историей появления asyncio в Python;
разобраться с коррутинами и yield from;
разобраться с futures.
17 апреля, 20:00 — 21:30
Лектор: Валентин Шилин
Домашние задания: 1
ДЗ
Crawler. В этом домашнем задании предлагается реализовать асинхронный краулер для новостного сайта news.ycombinator.com. Предполагается, что краулер запускается каждые N секунд, парсит топ новостей, сохраняя каждую, а также сохраняет все ссылки из обсуждения конкретной новости
asyncio: event loop, внутренности async/await, низко- и высокоуровневое API
познакомиться с концепцией event loop, старым и новым синтаксисом асинхронных вызовов;
рассмотреть высоко- и низкоуровневое API asyncio;
разобраться с внутренним устройством awaitable объектов.
22 апреля, 20:00 — 21:30
Лектор: Валентин Шилин
asyncio: инструменты и лучшие практики
познакомится с асинхронным инструментарием языка;
разобраться с тем как корректно запускать и останавливать асинхронные сервисы;
рассмотреть примеры асинхронных библиотек для общения с БД и сетью.
24 апреля, 20:00 — 21:30
Лектор: Валентин Шилин
Golang: зачем он Python разработчику + тур по языку // ДЗ
познакомиться с синтаксисом, основными идиомами и экосистемой языка;
проанализировать область применимости языка, его сильные и слабые стороны;
провести сравнение с Python.
29 апреля, 20:00 — 21:30
Лектор: Валентин Шилин
Домашние задания: 1
ДЗ
Go memcache loader. В этом домашнем задании предлагается переписать конкурентный memcache loader, реализованный на Python в одном из прошлых заданий, на Golang, соблюдая при этом идиоматику языка и используя его возможности, рассмотренные на занятии
Golang: горутины, планировщик, конкурентная обработка
познакомиться с особенностями реализации языка;
рассмотреть принципы работы с памятью;
разобраться с диспетчером горутин;
познакомиться с примерами реальных задач, решаемых с помощью Go.
13 мая, 20:00 — 21:30
Лектор: Валентин Шилин
Обзор новинок и изменений из свежих версий Python
познакомиться с новшествами последних минорных версий языка;
обсудить грядущие анонсированные изменения;
разобраться с процессом миграции между версиями.
15 мая, 20:00 — 21:30
Лектор: Валентин Шилин
Проектная работа
Заключительный месяц курса посвящен разработке проекта. В качестве темы выбирается то, что интересно писать студенту и то, что потенциально можно будет потом включить в свое резюме. Участие в разработке некоего open source продукта тоже может рассматриваться в качестве выпускного проекта. При этом не обязательно закончить его за месяц. В процессе написания проекта можно получить консультации преподавателей.

Примеры тем проекта:
- система мониторинга ПК в корпоративной сети
- свой ORM
- web приложение по поиску групп с целевой аудиторией в ВК
- исследование dataset’а с визуализацией
Выбор темы и организация проектной работы
выбрать и обсудить тему проектной работы;
спланировать работу над проектом;
ознакомиться с регламентом работы над проектом.
20 мая, 20:00 — 21:30
Домашние задания: 1
ДЗ
Проект. - выбрать тему;
- подтвердить тему в чате с преподавателем;
- предоставить промежуточные наработки на промежуточное ревью;
- предоставить финальную версию проекта к дедлайну.
Консультация по проектам и домашним заданиям
получить ответы на вопросы по проекту, ДЗ и по курсу.
22 мая, 20:00 — 21:30
Защита проектных работ
защитить проект и получить рекомендации экспертов.
27 мая, 20:00 — 21:30

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

Станислав Ступников
Руководитель отдела разработки в VK
10+ лет опыта промышленной разработки, в том числе создания и поддержания веб-приложений, инфраструктурных решений, высоконагруженных систем, data pipeline'ов и аналитических систем.

3 года научной разработки для крупных государственных заказчиков с контрактами по тематике анализа больших объемов данных. Опыт программирования на Python, Go, Lua, C, JavaScript, Perl.

Широкий круг профессиональных интересов, начиная от построения распределенных систем, заканчивая машинным обучением. Более 5 лет преподавал программирование на Python студентам МГТУ им. Н.Э. Баумана. С момента старта преподаю на курсе по СУБД в образовательном центре VK при МГТУ им. Н.Э. Баумана. 4 года преподавания курса СУБД в Технопарк Mail.Ru. Закончил МГТУ им. Н.Э. Баумана по специальности «Специалист по защите информации» в 2013 году.
Преподаватель курсов:
Python Developer. Professional

F.A.Q.: Наиболее часто задаваемые вопросы:

Нужно ли оплачивать обучение до Дня открытых дверей, если я хочу гарантированно попасть в группу?
Да, мы рекомендуем заранее оплатить обучение, чтобы гарантированно попасть в группу. В период проведения Дня открытых дверей резко возрастает количество желающих обучаться, поэтому может случиться так, что к окончанию Дня открытых дверей мест в группе не останется
Кто будет проводить День открытых дверей?
Проводить День открытых дверей будет преподаватель курса.
Как принять участие в Дне открытых дверей?
Для того, чтобы принять участие в Дне открытых дверей, оставьте свой e-mail в поле регистрации на мероприятие. Перед началом Дня открытых дверей мы пришлем вам ссылку, пройдя по которой, вы сможете присоединиться к вебинару.
Какие вопросы будем обсуждать на Дне открытых дверей?
На дне открытых дверей мы поговорим о проекте OTUS (о программе курса, почему мы не принимаем в группы новичков, почему учиться у нас интересно, но сложно), карьерных перспективах выпускников (почему вероятность карьерного роста у лучших студентов стремится к 100%), учебном процессе (оплатах, оценке знаний, сертификатах и прочих аспектах). Также ведущий мероприятия с радостью ответит на все ваши вопросы.
Запланируй обучение с выгодой!
Получи скидку 10% на все курсы ноября и декабря до 16.11 →