День открытых дверей: Разработчик Python

22 ноября в 20:00

Среди успешно прошедших вступительный тест будут разыграны бесплатные места в группе

Пройти тестирование

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

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

Принять участие
Программа курса
1
Advanced
2
Web
3
Data engineering
4
Highload
Занятие 1: Advanced basics. Часть 1
Кодировки, Unicode в Python 2, coercion. Floating point numbers, IEEE-754, особенности реализации, основные ошибки и особенности использования. Itertools, iterable, iterator, iterator protocol, sequence protocol. Generators: pipelines, routing, coroutines.
Занятие 2: Advanced basics. Часть 2
Функциональное программирование, рекурсия и ее ограничения, tail recursion optimization. Scoping, namespaces, замыкания и их устройство. Декораторы функции и классы, декораторы с аргументами, вложенные декораторы.

ДЗ

ДЗ-1. (1) Несколько упражнений на тему занятия: итераторы, генераторы, декораторы; (2) Делаем анализатор логов веб-сервера.
Занятие 3: Internals. Часть 1
CPython, внутренности и архитектура, байткод, stack virtual machine, интерпретация. Имплементация основных типов данных: строки, числа, списки, словари. Оптимизации.
Занятие 4: Internals. Часть 2
Memory model, allocation, reference counting, garbage collection. GIL, реализация и последствия, методы обхода.

ДЗ

ДЗ-2 (опционально). Добавляем новый опкод и пару операторов, собираем свой Python. Понадобятся знания С.
Занятие 5: OOP. Часть 1
Object model, new-style classes, MRO, super. Множественное наследование, slots, new, name mangling. Дескрипторы, data и non-data дескрипторы, descriptor protocol, property.
Занятие 6: OOP. Часть 2
Интроспекция. Магические методы. Модуль ABC, абстрактные классы. Metaclasses и "черная магия". Design patterns, ключевые принципы, примеры.

ДЗ

ДЗ-3.0. Создаем декларативный язык описания и систему валидации запросов к HTTP API
Занятие 7: Testing. Часть 1
Пирамида тестирования. Test design, coverage. Unit testing, integration testing. Mocking, monkey patching. Фикстуры. Нагрузочное тестирование.
Занятие 8: Testing. Часть 2
Автоматизация тестирования. Continuous integration, continuous delivery, continuous deployment. Canary deployment, feature flags, staged rollouts. Документирование.

ДЗ

ДЗ-3.1. Дописываем тесты API
Занятие 9: Automatization. Часть 1
Базы данных, коннекторы, ping-reconnect, конкурентное использование, connection pooling, "отстреливание" долгих запросов. Кеширование. Networking, socket, UDP, TCP/IP. HTTP, timeouts, requests.
Занятие 10: Automatization. Часть 2
Архитектуры web-server'ов. Демонизация, конфиги, логирование. Setup tools и дистрибуция, менеджмент зависимостей. Пакеты и пакетные менеджеры, сборка.

ДЗ

ДЗ-4. Создаем свой сервер на "ванильном" Python, частично реализующий протокол HTTP (будет корректно отдавать страницу wikipedia). Проводим нагрузочное тестирование.
Занятие 11: Dynamic Web
Dynamic Web, CGI, FastCGI, WSGI, Gunicorn. uWSGI, обзор основных особенностей. Tiered architecture.
Занятие 12: Django
Паттерн MVC\MTV, coding style, настройка окружения, структура Django проекта, конфигурация проектов, зависимости, маршрутизация URL.

ДЗ

ДЗ-5 (опционально). Пишем стандартного "промышленного" демона, который будет отвечать по HTTP, ходить в базу, писать логи и собираться в пакет. Те, кто не знаком с Django, проходят tutorial.
Занятие 13: ORM и "зло"
Модели, CRUD, Query sets, lazy evaluation, prefetch\preload, join'ы, сложные запросы и raw SQL. Object managers.
Занятие 14: Database
Индексы. Транзакции и уровни изоляции. Миграции схемы и миграции данных, большие объемы данных. Репликация, перенос сложных запросов на slave'ы, распределение нагрузки. Шардирование. NoSQL.

ДЗ

ДЗ-6.0. Создание web-приложения аналога Stack Overflow. Определяемся со структурой и схемой данных.
Занятие 15: Views
Views, представления, виды представлений, function/class based views, generic views.
Занятие 16: Формы
Формы, поля, процесс валидации, model form. Widgets. Templates, язык шаблонов, архитектура шаблонизатора. Фильтры, тэги. Jinja2

ДЗ

ДЗ-6.1. Начинаем рисовать красивые странички
Занятие 17: REST API. Часть 1
Принципы REST, архитектурные стили, ограничения. Проектирование API, ресурсы, методы ошибки, версионирование. Django REST framework.
Занятие 18: REST API. Часть 2
Rate limiting. Документация, swagger. Web Performance. Фронтэнд оптимизация, масштабирование бекэнда.

ДЗ

ДЗ-6.2 (опционально). Добавляем к разрабатываемому приложению API.
Занятие 19: NumPy. Часть 1
IPython, базовое использование, интроспекция, поиск, история, макросы, магические методы, взаимодействие с ОС, разработка. NumPy. ndarray, индексирование, маски, векторизация. Universal functions.
Занятие 20: NumPy. Часть 2
Reshaping, broadcasting, structured и record массивы, хранение и загрузка данных. Внутренности ndarray. Memmap, HDF5.

ДЗ

ДЗ-7. Дописываем логистический регрессор, используем его для классификации отзывов о еде из Amazon.
Занятие 21: Pandas
Pandas. Series. Dataframe, иерархические индексы, missing data, агрегация.
Занятие 22: Matplotlib
Построение графиков, гистограммы, subplots, аннотации, стили. Data visualization, принципы правильных визуализаций.

ДЗ

ДЗ-8. Выбираем один из открытых dataset'ов и анализируем его с помощью pandas в IPython notebook.
Занятие 23: Concurrency. Часть 1
Concurrency, parallelism. IO/CPU bound задачи. Multithreading, sharing, communication.
Занятие 24: Concurrency. Часть 2
Multiprocessing, IPC, shared memory, Manager. Distributed computing

ДЗ

ДЗ-9. Реализуем конкурентную заливку данных в memcache'ы
Занятие 25: C extensions
Написание расширений на C, C API.
Занятие 26: ffi. Cython. Pypy

ДЗ

ДЗ-10 (опционально). Пишем свое расширение, которое будет писать файлы с protobuf сериализованным содержимым. Понадобятся знания C.
Занятие 27: Async. Часть 1
Generators, coroutines, yield from. Event loop. Future.
Занятие 28: Async. Часть 2
async/await. Error handling

ДЗ

ДЗ-11. TBA
Занятие 29: Golang. Часть 1
Производительность Python. Golang. Toolchain, структура проекта, менеджмент зависимостей, тур по языку.
Занятие 30: Golang. Часть 2
Внутренности: горутины, сборщик мусора, оптимизации.

ДЗ

ДЗ-12. Создаем простого демона на Go, проводим сравнение с аналогичным на Python.
Занятие 31: Profiling
Особенности архитектуры, характеристики железа. Антипаттерны профилирования. Методология. cProfile, line_profiler, memory_profiler. Инструменты Linux, perf.
Занятие 32: Python 3
Обзор изменений, новые фичи. Миграция проектов с 2 на 3 версию.

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

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