Начало занятий 25 июля

Web-разработчик на Python

Общая стоимость: 50 000 ₽
В месяц: 11 500 ₽
4 часа в неделю
5 месяцев
О курсе

Цель курса “WEB-разработка на Python” – подготовить специалиста, который сможет не только решать рядовые задачи бекенд-разработки, но и сделать с нуля современную фронтенд часть.

Чтобы получить опыт бекенд-разработки, мы будем не только решать типовые задачи, но и разбираться в том, как устроены основные средства, которыми мы пользуемся каждый день. Например, в рамках курса студенты реализуют свой небольшой uwsgi-совместимый веб-фреймворк и свою ORM. После таких упражнений у студентов будет куда меньше вопросов о том, зачем нужен werkzeug и как SQLAlchemy генерирует запросы.
Кроме этого мы поработаем с Flask и Django, посмотрим на различия Django ORM и SQLALchemy, поговорим о том, как правильно делать API и сделаем несколько примеров сами, с помощью Django REST Framework и GraphQL, научимся деплоить с помощью Fabric и заворачивать приложение в Docker-контейнеры, научимся писать тесты и изучим модули, которые сильно облегчают этот процесс, поговорим о TDD, научимся добавлять авторизацию через соц. сети, поработаем с менеджерами очередей (и напишем свой!), напишем бота для Telegram и изучим необходимый инфраструктурный минимум для взрослого проекта (InfluxDB, Grafana, Jenkins, Sentry).

Чтобы получить опыт фронтенд-разработки, мы рассмотрим ключевые особенности языка JavaScript, его окружение - браузеры и серверную платформу NodeJS. Мы разберем внутреннее устройство и понятия популярного фреймворка ReactJS, а также немного познакомимся с библиотекой для написания web-приложений VueJS.

В рамках курса мы реализуем большой проект, который будет объединять в себе все знания, которые вы получите на курсе.

Курс предназначен для тех, у кого уже есть опыт разработки или большой опыт участия в проектах с открытым исходным кодом: мы ждём от студентов знакомства с Python, понимания основ веб-разработки и знания самых азов JavaScript и html/css.

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

Дополнительные материалы:
Запись дня открытых дверей
Запись открытого урока
Открытый урок «Методы получения данных у Query в SQLAlchemy»
Открытый урок «Паттерн MVC и его реализация в Django»

Программа курса
Модуль 1
Модуль 2
Модуль 3
Модуль 4
Модуль 5
модуль
Технические детали курса; декомпозиция; чистые функции; цикломатическая сложность; читаемость; фичеризм; поддерживаемость; статический анализ кода.
Домашние задания: 1
ДЗ
Рефакторинг существующего кода.. Отрефакторить и оформить в виде библиотеки на Гитхабе следующий код: https://gist.github.com/Melevir/5754a1b553eb11839238e43734d0eb79
Объекты и переменные; структуры данных под капотом основных типов; list vs tuple; профилирование памяти; как работает сборщик мусора.
Домашние задания: 1
ДЗ
Парсер и анализатор названий статей на Хабре.
Принципы ООП; mixins; class/instance variables; MRO; dict; slots; name mangling.
Домашние задания: 1
ДЗ
Добавление фич в скрипт для статического анализа кода..
IP, TCP, HTTP; [u]WSGI.
Домашние задания: 1
ДЗ
Написать свой wsgi-совместимый веб-фреймворк..
werkzeug; Flask.
Домашние задания: 1
ДЗ
Сделать демо интернет-магазина на Flask..
ORM – зачем нужно; описание схемы данных; сессии; добавление/удаление/апдейт данных
Домашние задания: 1
ДЗ
Написать свою ORM для sqlite..
Django apps; Django ORM; Django Class Based Views; Django common tools.
Домашние задания: 1
ДЗ
Сделать демо интернет-магазина на Django..
Семинар. Реализуем свой WSGI-совместимый фреймворк.
29 мая, 20:00 — 21:30
модуль
Django REST Framework. Django Configurations.
2 июня, 10:00 — 11:30
Домашние задания: 1
ДЗ
Реализуем базовый бекенд для сайта с курсами..
API. GraphQL и его реализация в Python. GraphQL и Django.
5 июня, 20:00 — 21:30
Домашние задания: 1
ДЗ
Добавляем сущности и фичи для API сайта с курсами..
Fabric. Развертывание проекта на сервере.
9 июня, 10:00 — 11:30
Django шаблоны и немного Bootstrap 3. Делаем веб-интерфейс.
12 июня, 20:00 — 21:30
Знакомство с Front-end частью курса. Основы HTML, CSS, методологии вёрстки. Немного Bootstrap 4.
16 июня, 10:00 — 11:30
Домашние задания: 1
ДЗ
Сделать вёрстку (HTML + CSS) главной страницы сайта для обучения..
Django m2m, select_related/prefetch_related, django debug toolbar, factory_boy, faker.
19 июня, 20:00 — 21:30
Основы JS: типы данных, операторы, объекты, работа с DOM и браузером
23 июня, 10:00 — 11:30
Домашние задания: 1
ДЗ
Добавление поведения к главной странице, страница курсов.
Python social auth, django context processors.
26 июня, 20:00 — 21:30
модуль
Продвинутый JS: ООП в JS, прототипирование, асинхронность.
30 июня, 10:00 — 11:30
Домашние задания: 1
ДЗ
Страница расписания занятий.
Азы работы с очередями задач.
3 июля, 20:00 — 21:30
Домашние задания: 1
ДЗ
Добаляем асинхронную отправку электронной почты.
ES6, NodeJS окружение, babel + webpack, транспайлинг, CSS препроцессоры
7 июля, 10:00 — 11:30
Домашние задания: 1
ДЗ
Сборка UI с помощью webpack, форма логина и регистрации, проксирование вызовов на back-end.
Пишем свой менеджер очередей.
10 июля, 20:00 — 21:30
fetch || axios || $.ajax для REST запросов, модульность
14 июля, 10:00 — 11:30
Домашние задания: 1
ДЗ
Загрузка списка курсов с сервера, логин страница, REST API для работы.
Введение в автотесты.
17 июля, 20:00 — 21:30
Домашние задания: 1
ДЗ
Покрыть проект приёмочными тестами на 60%.
Code review
21 июля, 10:00 — 11:30
Домашние задания: 1
ДЗ
Исправление недостатков в соответствии с code review.
Введение в TDD.
24 июля, 20:00 — 21:30
модуль
Основы React, JSX, компоненты React
28 июля, 10:00 — 11:30
Домашние задания: 1
ДЗ
Главная страница на React.
Введение в pytest.
31 июля, 20:00 — 21:30
Домашние задания: 1
ДЗ
Переписать тесты на pytest и factory_boy.
state и props, data-flow в React-компонентах
4 августа, 10:00 — 11:30
Домашние задания: 1
ДЗ
Страница логина, регистрации на React.
InfluxDB, Grafana.
7 августа, 20:00 — 21:30
Жизненный цикл React-компонент
11 августа, 10:00 — 11:30
Домашние задания: 1
ДЗ
Страница личного кабинета, отправка решения на сервер.
Jenkins, Sentry.
14 августа, 20:00 — 21:30
Домашние задания: 1
ДЗ
Настроить логирование ошибок в Sentry..
Состояние приложения. Flux & Redux
18 августа, 10:00 — 11:30
Домашние задания: 1
ДЗ
Блок успеваемости в личном кабинете, ведомость в кабинете преподавателя.
python-telegram-bot
21 августа, 20:00 — 21:30
модуль
Code review
25 августа, 10:00 — 11:30
Домашние задания: 1
ДЗ
Исправление недостатков в соответствии с code review.
threading, multiprocessing, queue.
28 августа, 20:00 — 21:30
Routing в React. SPA
1 сентября, 10:00 — 11:30
Домашние задания: 1
ДЗ
Организация всего приложения в виде SPA..
Введение в docker, docker-compose.
4 сентября, 10:00 — 11:30
Домашние задания: 1
ДЗ
Завернуть проект в докер-контейнеры.
Тестирование JS приложений
8 сентября, 10:00 — 11:30
Домашние задания: 1
ДЗ
Написание unit-тестов для UI и back-end.
asyncio
11 сентября, 10:00 — 11:30
Обзор Vue2
15 сентября, 10:00 — 11:30
Домашние задания: 1
ДЗ
Landing page на Vue.
QnA
18 сентября, 10:00 — 11:30
Минимальные требования для прохождения курса

Чтобы начать заниматься на курсе, нужно знать:
- основы синтаксиса Python 3;
- основные модули стандартной библиотеки;
- основы написания поддерживаемого кода;
- основы SQL;
- понятие асимптотической сложности;
- как работать в консоли;
- как работать с git;
- как и зачем писать автотесты;
- основы html и css;
- основы JavaScript.

Вот ссылки, которые помогут овладеть или вспомнить некоторые из этих пунктов:
http://sql-ex.ru/
http://pythontutor.ru/
https://github.com/gregmalcolm/python_koans
http://try.github.io/
https://www.ozon.ru/context/detail/id/4523340/
https://www.ozon.ru/context/detail/id/5730448/
https://github.com/mrdavidlaing/javascript-koans
https://developer.mozilla.org/ru/docs/Learn/Getting_started_with_the_web/JavaScript_basics

Преподаватели
Юрий Дворжецкий
Ведущий разработчик в Luxoft, кандидат физико-математических наук.
Программирует с начальных классов.

Разрабатывает на разных платформах: большие и маленькие проекты, высоконагруженные и очень красивые, многим известные и совсем специфические.

Влюблён в элегантность и оригинальность JavaScript, как классического, так и современного, во всех его проявлениях.

Сейчас разрабатывает Web-приложения c UI на React и Angular*.
Илья Лебедев
Эксперт, консультант по архитектуре приложений. Специалист по разработке серверных решений на Python. Автор курсов по веб-разработке в МГТУ им. Баумана, ВШЭ. Соорганизатор курсов Learn Python и devman.org. Старший разработчик в Itcanfy и Ngenix.
9 лет опыта программирования на C++, Python, PHP и JavaScript. Участвовал в проектах разной сложности: от разработки небольших корпоративных сайтов до планирования и реализации высоконагруженных сервисов и использованием микросервисной архитектуры.
Работодатели