Проходил 1 марта в 20:00

Открытый вебинар
Аннотации типов в Python 3

Открытый вебинар онлайн

Аннотации типов в Python3
Python - язык программирования с динамической типизацией. В этом его сильная и одновременно слабая сторона.
В процессе данного занятия будут рассмотрены нововведения, добавленные в язык для устранения целого класса ошибок, являющихся следствием динамической типизации.

Запись

О курсе

Разработчик Python
50 000 ₽
5 месяцев
Начало 17 октября
Курс предназначен для людей, уже имеющих опыт программирования и желающих повысить свой уровень за счет получения знаний и навыков в различных областях разработки. Если вы уверенно чувствуете себя с Python, помните C, имеете представление о сетевом взаимодействии и реляционных СУБД, умеете обращаться с Linux, git’ом и прочими стандартными инструментами девелопера - курс для вас. Курс ставит своей целью погрузить вас ...
Программа курса
Модуль 1
Advanced
Модуль 2
Web
Модуль 3
Data engineering
Модуль 4
Highload
Модуль 5
Проектная работа
Advanced
Advanced basics. Часть 1
Кодировки, Unicode в Python 2, coercion. Floating point numbers, IEEE-754, особенности реализации, основные ошибки и особенности использования. Itertools, iterable, iterator, iterator protocol, sequence protocol. Generators: pipelines, routing, coroutines.
17 октября, 20:00 — 21:30
Домашние задания: 1
ДЗ
ДЗ-1: Log Analyzer. (1) Несколько упражнений на тему занятия: итераторы, генераторы, декораторы; (2) Делаем анализатор логов веб-сервера.
Advanced basics. Часть 2
Функциональное программирование, рекурсия и ее ограничения, tail recursion optimization. Scoping, namespaces, замыкания и их устройство. Декораторы функции и классы, декораторы с аргументами, вложенные декораторы.
19 октября, 20:00 — 21:30
Internals. Часть 1
CPython, внутренности и архитектура, байткод, stack virtual machine, интерпретация. Имплементация основных типов данных: строки, числа, списки, словари. Оптимизации.
24 октября, 20:00 — 21:30
Домашние задания: 1
ДЗ
ДЗ-2: CPython (опционально). Добавляем новый опкод и пару операторов, собираем свой Python. Понадобятся знания С.
Internals. Часть 2
Memory model, allocation, reference counting, garbage collection. GIL, реализация и последствия, методы обхода.
26 октября, 20:00 — 21:30
OOP. Часть 1
Object model, new-style classes, MRO, super. Множественное наследование, slots, new, name mangling. Дескрипторы, data и non-data дескрипторы, descriptor protocol, property.
31 октября, 20:00 — 21:30
Домашние задания: 1
ДЗ
ДЗ-3.0: Scoring API. Создаем декларативный язык описания и систему валидации запросов к HTTP API
OOP. Часть 2
Интроспекция. Магические методы. Модуль ABC, абстрактные классы. Metaclasses и "черная магия". Design patterns, ключевые принципы, примеры.
2 ноября, 20:00 — 21:30
Testing. Часть 1
Пирамида тестирования. Test design, coverage. Unit testing, integration testing. Mocking, monkey patching. Фикстуры. Нагрузочное тестирование.
7 ноября, 20:00 — 21:30
Домашние задания: 1
ДЗ
ДЗ-3.1: API Testing. Дописываем тесты API
Testing. Часть 2
Автоматизация тестирования. Continuous integration, continuous delivery, continuous deployment. Canary deployment, feature flags, staged rollouts. Документирование.
9 ноября, 20:00 — 21:30
Automatization. Часть 1
Базы данных, коннекторы, ping-reconnect, конкурентное использование, connection pooling, "отстреливание" долгих запросов. Кеширование. Networking, socket, UDP, TCP/IP. HTTP, timeouts, requests.
14 ноября, 20:00 — 21:30
Домашние задания: 1
ДЗ
ДЗ-4: Web Server. Создаем свой сервер на "ванильном" Python, частично реализующий протокол HTTP (будет корректно отдавать страницу wikipedia). Проводим нагрузочное тестирование.
Automatization. Часть 2
Архитектуры web-server'ов. Демонизация, конфиги, логирование. Setup tools и дистрибуция, менеджмент зависимостей. Пакеты и пакетные менеджеры, сборка.
16 ноября, 20:00 — 21:30
Web
Dynamic Web
Dynamic Web, CGI, FastCGI, WSGI, Gunicorn. uWSGI, обзор основных особенностей. Tiered architecture.
21 ноября, 20:00 — 21:30
Домашние задания: 1
ДЗ
ДЗ-5: uWSGI Daemon/ Django Tutorial (опционально). Пишем стандартного "промышленного" демона, который будет отвечать по HTTP, ходить в базу, писать логи и собираться в пакет. Те, кто не знаком с Django, проходят tutorial.
Django
Паттерн MVC\MTV, coding style, настройка окружения, структура Django проекта, конфигурация проектов, зависимости, маршрутизация URL.
23 ноября, 20:00 — 21:30
ORM и "зло"
Модели, CRUD, Query sets, lazy evaluation, prefetch\preload, join'ы, сложные запросы и raw SQL. Object managers.
28 ноября, 20:00 — 21:30
Домашние задания: 1
ДЗ
ДЗ-6.0: Django project. Создание web-приложения аналога Stack Overflow. Определяемся со структурой и схемой данных.
Database
Индексы. Транзакции и уровни изоляции. Миграции схемы и миграции данных, большие объемы данных. Репликация, перенос сложных запросов на slave'ы, распределение нагрузки. Шардирование. NoSQL.
30 ноября, 20:00 — 21:30
Views
Views, представления, виды представлений, function/class based views, generic views.
5 декабря, 20:00 — 21:30
Домашние задания: 1
ДЗ
ДЗ-6.1: Django project. Начинаем рисовать красивые странички
Формы
Формы, поля, процесс валидации, model form. Widgets. Templates, язык шаблонов, архитектура шаблонизатора. Фильтры, тэги. Jinja2
7 декабря, 20:00 — 21:30
REST API. Часть 1
Принципы REST, архитектурные стили, ограничения. Проектирование API, ресурсы, методы ошибки, версионирование. Django REST framework.
12 декабря, 20:00 — 21:30
Домашние задания: 1
ДЗ
ДЗ-6.2: Django REST API (опционально). Добавляем к разрабатываемому приложению API.
REST API. Часть 2
Rate limiting. Документация, swagger. Web Performance. Фронтэнд оптимизация, масштабирование бекэнда.
14 декабря, 20:00 — 21:30
Data engineering
NumPy. Часть 1
IPython, базовое использование, интроспекция, поиск, история, макросы, магические методы, взаимодействие с ОС, разработка. NumPy. ndarray, индексирование, маски, векторизация. Universal functions.
19 декабря, 20:00 — 21:30
Домашние задания: 1
ДЗ
ДЗ-7: LogRegression. Дописываем логистический регрессор, используем его для классификации отзывов о еде из Amazon.
NumPy. Часть 2
Reshaping, broadcasting, structured и record массивы, хранение и загрузка данных. Внутренности ndarray. Memmap, HDF5.
21 декабря, 20:00 — 21:30
Pandas
Pandas. Series. Dataframe, иерархические индексы, missing data, агрегация.
26 декабря, 20:00 — 21:30
Домашние задания: 1
ДЗ
ДЗ-8: Open Data Analysis (опционально). Выбираем один из открытых dataset'ов и анализируем его с помощью pandas в IPython notebook.
Matplotlib
Построение графиков, гистограммы, subplots, аннотации, стили. Data visualization, принципы правильных визуализаций.
28 декабря, 20:00 — 21:30
Highload
Concurrency. Часть 1
Concurrency, parallelism. IO/CPU bound задачи. Multithreading, sharing, communication.
2 января, 20:00 — 21:30
Домашние задания: 1
ДЗ
ДЗ-9: MemcLoad. Реализуем конкурентную заливку данных в memcache'ы
Concurrency. Часть 2
Multiprocessing, IPC, shared memory, Manager. Distributed computing
4 января, 20:00 — 21:30
C extensions
Написание расширений на C, C API.
9 января, 20:00 — 21:30
Домашние задания: 1
ДЗ
ДЗ-10: Protobuf (de)serializer (опционально). Пишем свое расширение, которое будет писать файлы с protobuf сериализованным содержимым. Понадобятся знания C.
ffi. Cython. Pypy
11 января, 20:00 — 21:30
Async. Часть 1
Generators, coroutines, yield from. Event loop. Future.
16 января, 20:00 — 21:30
Домашние задания: 1
ДЗ
ДЗ-11: YCrawler. Пишем асинхронный краулер для новостного сайта news.ycombinator.com
Async. Часть 2
async/await. Error handling
18 января, 20:00 — 21:30
Golang. Часть 1
Производительность Python. Golang. Toolchain, структура проекта, менеджмент зависимостей, тур по языку.
23 января, 20:00 — 21:30
Домашние задания: 1
ДЗ
ДЗ-12: MemcLoad v2. Создаем простого демона на Go, проводим сравнение с аналогичным на Python.
Golang. Часть 2
Внутренности: горутины, сборщик мусора, оптимизации.
25 января, 20:00 — 21:30
Profiling
Особенности архитектуры, характеристики железа. Антипаттерны профилирования. Методология. cProfile, line_profiler, memory_profiler. Инструменты Linux, perf.
30 января, 20:00 — 21:30
Python 3
Обзор изменений, новые фичи. Миграция проектов с 2 на 3 версию.
1 февраля, 20:00 — 21:30
Проектная работа
Заключительный месяц курса посвящен разработке проекта. В качестве темы выбирается то, что интересно писать студенту и то, что потенциально можно будет потом включить в свое резюме. Участие в разработке некоего open source продукта тоже может рассматриваться в качестве выпускного проекта. При этом не обязательно закончить его за месяц. В процессе написания по проекту можно получить консультации преподавателей.

Примеры тем проекта:
- система мониторинга ПК в корпоративной сети
- свой ORM
- web приложение по поиску групп с целевой аудиторией в ВК
- исследование dataset’а с визуализацией