Курс Python, обучение Python course онлайн, курсы Python, программист Python — курсы | OTUS
Прямо сейчас идет день открытых дверей по курсу «Разработчик C#». Присоединяйтесь!

Курсы

Курсы в разработке Подготовительные курсы
Работа в компаниях Компаниям Блог +7 499 110-61-65

Разработчик Python

Best Practice по решению прикладных задач и освоению инструментов, применяемых программистом при разработке инфраструктурных решений, веб-приложений, систем контроля качества и аналитических систем
Подойдет ли мне этот курс?

Длительность

5 месяцев

Начало

30 октября

Занятия

Ср 20:00, Пт 20:00

Общая стоимость

60 000 ₽

В месяц

15 000 ₽

В кредит:

15000 ₽ в месяц

Хочу дешевле
Общая стоимость
60 000 ₽
В месяц: 15 000 ₽
В кредит: 60000 ₽
в месяц
Продолжительность
5 месяцев, 4 академ. часа в неделю
Ср 20:00, Пт 20:00
Начало занятий
30 октября
О курсе и о себе
Хотелось создать такой курс, на котором не будет грустно, на котором вы не будете изучать в сотый раз одни и те же базовые вещи, а получите знания, которые вас левелапнут с джуниора до миддла, позволят вам развиваться дальше, делать то, что вы не делали раньше, это — наша основная цель в рамках курса.
Что даст вам этот курс

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

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

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

Курс универсальный: рассматривается вторая и третья версии Python. Домашние работы и проект можно выполнять на любой версии, примеры на занятиях чаще работают под обе версии, но большинство писались на Python 2. Процесс их изменения на Python 3 запущен. Также делаются все необходимые отступления и обсуждения разницы в версиях.

В процессе обучения вы получите понимание структуры современной разработки ПО и место Python и прочих инструментов в ней, ответите на вопросы: «Как писать простой и идиоматичный код, за который не будет мучительно стыдно?», «Как тестировать и поддерживать код на Python?», «Как написать приложение, которое не умрёт под нагрузкой?». Трудозатраты: 4 часа на занятия и 4-12 часов на домашнюю работу в неделю.

После прохождения курса у вас будет:
— 9-12 (в зависимости от желания выполнять опциональные задания) выполненных ДЗ на все темы курса
— 1 мини веб-проект
— богатый список литературы и референсов для ознакомления и углубления знаний программистов
— код и материалы занятий, соединенные вместе в виде jupyter-ноутбуков
— видеозаписи всех вебинаров занятий
— проектная работа на интересную вам тему
Всё о курсе «Разработчик Python», 23 октября в 20:00
День Открытых Дверей — отличная возможность узнать подробнее о программе курса, особенностях онлайн-формата, навыках, компетенциях и перспективах, которые ждут выпускников после обучения.

Также преподаватель расскажет о своём профессиональном опыте и ответит на вопросы участников. Поэтому если есть вопрос, запишитесь на онлайн-трансляцию и задайте его в прямом эфире!
Ведет
Станислав
Ступников
Предыдущий день открытых дверей
О курсе и о себе
Хотелось создать такой курс, на котором не будет грустно, на котором вы не будете изучать в сотый раз одни и те же базовые вещи, а получите знания, которые вас левелапнут с джуниора до миддла, позволят вам развиваться дальше, делать то, что вы не делали раньше, это — наша основная цель в рамках курса.
Преподаватели
Сергей Нагаев
Python-разработчик SimbirSoft
Станислав Ступников
Программист рекламной системы в Mail.Ru
Леонид Орлов
Николай Барышников
Андрей Кравчук
5 лет опыта коммерческой разработки на Python.
Опыт реализации проектов различной сложности как самостоятельно (фриланс), так и в составе больших команд. Есть опыт в области QA и автоматизации тестирования.
В качестве Python-разработчика работал над такими проектами как подсистема автоматизированного тестирования BSS-решений, CRM-системы, системы резервного копирования.
В качестве разработчика в тестировании работал над системами автоматизации тестирования приложений для SMART TV. В настоящий момент занимает должность Python-разработчика в компании SimbirSoft.

Преподаватель
6 лет опыта промышленной разработки, в том числе создания и поддержания веб-приложений, инфраструктурных решений, высоконагруженных систем, data pipeline'ов и аналитических систем. 3 года научной разработки для крупных государственных заказчиков с контрактами по тематике анализа больших объемов данных. Опыт программирования на Python, Go, Lua, C, JavaScript, Perl. Широкий круг профессиональных интересов, начиная от построения распределенных систем, заканчивая машинным обучением. Более 5 лет преподавания программирования на Python студентам МГТУ им. Н.Э. Баумана (Москва). 4 года преподавания курса СУБД в Технопарк Mail.Ru. Закончил МГТУ им. Н.Э. Баумана по специальности "Специалист по защите информации" в 2013 году.

Руководитель программы
Выпускник кафедры информационных технологий физического факультета ПГНИУ.
Начал карьеру в крупной международной компании Prognoz, создавал проекты для правительства РФ в течение 2 лет.
Работал программистом биллинга на oracle pl/sql в компании «Эр-Телеком Холдинг».
С 2014 года стал преподавателем направления python-разработки.
Главный разработчик zval.ru.
Продолжает работать удаленно и заниматься собственными проектами на Python и Django.

Преподаватель
Разработчик со стажем 8 лет. Закончил РГГУ / Защита информации. На данный момент, большая часть моего времени посвящена дисциплине Data Engineering. Работаю Backend разработчиком в РБК. Пишу на Python/Java/Go/Lua

Общий стек:
Ubuntu/Debian/CentOS
Docker/Kubernetes/helm
Nginx/gRPC/HTTP
Clickhouse/postgresql/mongodb
Kafka/rmq/zmq/redis
Python3/Java/Go/Lua/pytest

Преподаватель
Занимается разработкой и поддержкой ряда веб-сервисов на фрилансе
Участник релиза 5-ой версии Free Download Manager.
Разработчик аналога Яндекс.маркета для печатной продукции на европейском рынке
Преподаватель в МУПОЧ "Дубна" дисциплин «C++», «Python», «Программирование в UNIX».
9 лет опыта коммерческой разработки на Python.
Область интересов - highload, машинное обучение, LISP-подобные языки.

Преподаватель
Сергей
Нагаев
Станислав
Ступников
Леонид
Орлов
Николай
Барышников
Андрей
Кравчук
Преподаватели
Сергей Нагаев
Python-разработчик SimbirSoft
5 лет опыта коммерческой разработки на Python.
Опыт реализации проектов различной сложности как самостоятельно (фриланс), так и в составе больших команд. Есть опыт в области QA и автоматизации тестирования.
В качестве Python-разработчика работал над такими проектами как подсистема автоматизированного тестирования BSS-решений, CRM-системы, системы резервного копирования.
В качестве разработчика в тестировании работал над системами автоматизации тестирования приложений для SMART TV. В настоящий момент занимает должность Python-разработчика в компании SimbirSoft.

Преподаватель
Станислав Ступников
Программист рекламной системы в Mail.Ru
6 лет опыта промышленной разработки, в том числе создания и поддержания веб-приложений, инфраструктурных решений, высоконагруженных систем, data pipeline'ов и аналитических систем. 3 года научной разработки для крупных государственных заказчиков с контрактами по тематике анализа больших объемов данных. Опыт программирования на Python, Go, Lua, C, JavaScript, Perl. Широкий круг профессиональных интересов, начиная от построения распределенных систем, заканчивая машинным обучением. Более 5 лет преподавания программирования на Python студентам МГТУ им. Н.Э. Баумана (Москва). 4 года преподавания курса СУБД в Технопарк Mail.Ru. Закончил МГТУ им. Н.Э. Баумана по специальности "Специалист по защите информации" в 2013 году.

Руководитель программы
Леонид Орлов
Выпускник кафедры информационных технологий физического факультета ПГНИУ.
Начал карьеру в крупной международной компании Prognoz, создавал проекты для правительства РФ в течение 2 лет.
Работал программистом биллинга на oracle pl/sql в компании «Эр-Телеком Холдинг».
С 2014 года стал преподавателем направления python-разработки.
Главный разработчик zval.ru.
Продолжает работать удаленно и заниматься собственными проектами на Python и Django.

Преподаватель
Николай Барышников
Разработчик со стажем 8 лет. Закончил РГГУ / Защита информации. На данный момент, большая часть моего времени посвящена дисциплине Data Engineering. Работаю Backend разработчиком в РБК. Пишу на Python/Java/Go/Lua

Общий стек:
Ubuntu/Debian/CentOS
Docker/Kubernetes/helm
Nginx/gRPC/HTTP
Clickhouse/postgresql/mongodb
Kafka/rmq/zmq/redis
Python3/Java/Go/Lua/pytest

Преподаватель
Андрей Кравчук
Занимается разработкой и поддержкой ряда веб-сервисов на фрилансе
Участник релиза 5-ой версии Free Download Manager.
Разработчик аналога Яндекс.маркета для печатной продукции на европейском рынке
Преподаватель в МУПОЧ "Дубна" дисциплин «C++», «Python», «Программирование в UNIX».
9 лет опыта коммерческой разработки на Python.
Область интересов - highload, машинное обучение, LISP-подобные языки.

Преподаватель
Отзывы
18
Алексей
Гребенщиков
Хочу сказать спасибо за курс «Разработчик Python» Станиславу Ступникову. Программа курса была очень насыщенной и постоянно держала в напряжении. Думать нужно было постоянно, идешь на работу – думаешь, обедаешь – думаешь, как же сделать эту домашку, как выбрать оптимальное решение, а вечером трудишься над реализацией.

Будущим студентом могу сказать, будет не просто сложно, а очень сложно. Помимо питона, нужно будет использовать Си и даже Го. Были охвачены практически все сферы коммерческого применения питона от Web до Data science, это позволяет понять для себя в какой же из сфер хочется дальше развиваться.

Станислав профессионал своего дела и будет заставлять вас писать промышленный код, который используют программисты при разработке коммерческих приложений!
Читать целиком
Константин
Кормашев
После прохождения курса я приобрел, во-первых, понимание того как python устроен и работает вплоть до погружения на уровень кода интерпретатора, что собственно, помогает уяснить с какими нюансами можно будет столкнуться при использовании языка в целом (что полезно для проектирования приложений, профилирования кода и т.п.), а также получить опыт создания C-extentions для специфических задач расширения функционала python. Во-вторых, практику в написании качественного кода (иного просто не зачтут) для самых разнообразных задач с которыми можно столкнуться при эксплуатации языка в продакшн среде для разных областей применения: Web, DataEngineering, HighLoad и т.д. Задачи которые придется решать в ходе обучения не высосаны из пальца, они имеют под собой вполне реальную основу, т.е. с чем-то похожим можно будет вполне реально столкнуться в процессе будущей деятельности.
Как и подобает курсу Advanced, курс сложный, иначе о росте не могло бы быть и речи, нужно будет приготовится к очень серьезной работе. Однако, приложенные усилия будут вознаграждены. Лично я вижу разницу в написании собственного, понимании чужого кода до и после курса, она существенна, так что не жалею о приложенных усилиях, потраченном времени и средствах, все окупилось сторицей.
В общем, если есть желание поднять собственный уровень разработки на python, здесь у вас будет такая возможность. Дерзайте и успехов.
Читать целиком
Dmitriy
Sorokin
Как много курсов посвященных "Advanced Python" вы знаете? До появления OTUS я не встречал ни одного подобного курса. Иногда можно услышать: "Зачем мне курс? Все материалы можно найти в сети". Это правда, но ценность материалов без классного ментора и хорошей практики резко падает. Станислав отличный ментор, а уж над практикой точно придется попотеть.

Поначалу немного смущало, что в курсе используется Python 2.7, но в итоге быстро понимаешь, курс не завязан на версию языка (да и Станислав при необходимости делает ремарки Py2 vs Py3). Web/Data Science/Highload - плотность материалов очень высокая, поэтому советую быть
готовым к тому, что придется уделить курсу достаточно много времени (особенно домашкам посвященным C extensions и Golang).

Важно то, как сами преподаватели относятся к своим курсам. Стас дает хороший фидбек, после его code review иногда приходилось еще на несколько часов засаживаться за домашку. К концу курса на свой код смотришь уже немного другими глазами.

В итоге могу сказать, что курс отличный :)
Читать целиком
Андрей
Ларин
По сути, этот курс даже не про Python, а про решение реальных задач в реальном боевом окружении. Мое любимое слово, которое постоянно сопровождало меня в течении всего процесса обучения, — хардкор. А если более развернуто, то ощущения примерно такие, словно устроился на подработку, и тебе на выходные кидают реальные таски, которые надо закрыть. Это тяжело и требует времени, но при должной мотивации, такой подход работает очень эффективно.

Что понравилось:
- Большинство заданий курса — практически продакшен или близкие к нему задачи.
- Очень широко раскрывается тема об особенностях многопоточной и многопроцессорной обработки на Python.
- Отдельная большая тема посвящена интерпретатору CPython. Понимание того, как работает сборка мусора, GIL и другие особенности реализации, помогают намного более адекватно оценивать Python как инструмент решения задач, для каких он подходит, а для каких нет.
- C и Go — наличие компилируемых языков на курсе по Python поначалу выглядит странно. Но после понимаешь, что связка C и Python позволяет решать практически любой круг задач, а Go приближает это значение к 100%. Плюс было очень интересно решить одну и туже задачу на Go и на Python и посмотреть разницу в концептуальных подходах и производительности.
- Numpy и Pandas — очень эффективные инструменты не только для анализа данных, но и для текущей работы и даже повседневной жизни. Их знание как минимум будет не лишним.
- Общие лекции о проектировании и построении сложных и отказоустойчивых систем.

Сразу скажу, что объективных минусов у курса нет, но если оценивать субъективно, я бы обратил внимание на следующие вещи:
- Стоит больше внимания уделить асинхронному программированию, которое в курсе затрагивается достаточно поверхностно.
- Я бы уменьшил количество лекций по Django в пользу того же асинхронного программирования или переделал бы их структуру. Для людей которые с Django до этого не работали (типа меня) от лекций мало пользы, слишком advanced, а для тех кто хорошо знаком с этим фреймворков, возможно, этот материал будет и так очевиден.

Подводя итог, хочу сказать Станиславу большое спасибо за отлично проведенный курс, фидбек по задачам и великолепно проделанную работу по сбору и подготовке материалов. Надеюсь, что запаса его мотивации и энтузиазма хватит еще надолго!
Читать целиком
Олег
Гуцалов
Вот и завершился курс.

Во-первых курс не для новичков - не пришлось тратить время на выслушивание того, что такое list, tuple, with и т.п.

Во-вторых рассматриваются несколько сфер, где актуален Python. Django/DRF был лишь одной из них. Половина времени посвящена Data Engineering и Highload. Теперь понимаешь как это устроено в продакшене, видишь картину целиком.

На лекциях иногда возникали вопросы, которые Станислав не оставлял без внимания. Всегда можно было обратиться за разъяснением в чате.

Что особенно понравилось, так это ДЗ. Задачи были максимально приближены к боевым условиям, и их решения тщательно проверялись. Редко удавалось с первого раза разделаться хотя бы с одним - в ответ Станислав присылал замечания, буквально построчно указывая что не так.

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

В итоге курс полностью оправдал мои ожидания, за что я благодарен команде Отус и лично Станиславу за отличный материал и терпение.
Читать целиком
Кирилл
Романов
Я мог бы отметить два момента, которыми данный курс выгодно отличается от тех вариантов, что я видел раньше:
1. Объемные ДЗ-проекты, которые часто либо надо писать с нуля, либо очень существенно перерабатывать на базе базового примера (но в последних случаях все равно получается что 90% кода дописывается с нуля). По моему мнению только так можно повысить свои навыки программирования. Никаких "вставьте ваш код здесь", которые дают лишь иллюзию освоения нового материала
2. Очень широкий и глубокий охват возможностей языка: анализ CPython, тесты, асинхронность, мультипоточность, Django, немного numpy и pandas, C extensions итд. Если до курса был небольшой опыт с Python то становится понятно в каких направлениях дальше развивать навыки, но даже для опытных разработчиков это хороший курс для систематизации знаний и иненсивной тренировки в тех областях, где есть пробелы

В целом на мой взгляд этот курс один из лучших вариантов по соотношению цена-качества для тех, кому нужно без отрыва от работы улучшить свои навыки разработчика Python.
Читать целиком
Олег
Борзов
Отличный курс. Nothing add, как говорится)
Большое спасибо Андрею и, особенно, Станиславу за организацию.

Из того что понравилось:
- Структура курса. Прекрасно проработанная программа, которая, действительно, Advanced. Затрагиваются практически все темы, с которыми сталкивается современный backend python-developer: веб-разработка (от написания бека и фронта до деплоя), тестирование, написание конкурентных программ, профилирование. Даже анализ данных и Go затрагивается
- Подача материала. Лекции рассказываются достаточно понятно, в конце каждой темы предоставляются ссылки на дополнительные материалы
- ДЗ. Сложные и интересные домашки, которые раскрывают суть материала с практической стороны. По некоторым темам только благодаря отусовским ДЗ смог наконец окончательно разобраться в теме)

Из небольших (возможно, спорных) минусов:
- Доп. материалы к лекциям на английском - из-за этого у плохо владеющих языком студентов больше времени будет уходить на разбор.
Но, с другой стороны, тут я соглашусь со Станиславом - сейчас для программиста, желающего стать профи, знание английского такая же необходимость, как и знание языка. Большая часть материалов с которыми придется иметь дело (документации, книги, статьи) - на английском языке. А переводы, во-первых, выходят с большим опозданием, во-вторых - там могут быть ошибки и неточности.
- Материалы на Python 2. Тоже спорный минус, т.к. ДЗ можно сдавать на 3 питоне. Да и знание 2 версии языка бывает полезно, когда сталкиваешься legacy-кодом.
- Мало времени на ДЗ. Трудно укладываться в сроки, особенно совмещая курс, например, с фултаймом. Но это тоже не претензия к Отусу, т.к. иначе бы пришлось упрощать ДЗ, что сказалось бы скорее отрицательно на качестве обучения.

Резюмируя, крайне советую данный курс всем начинающим питонистам. Будет сложно, но оно того стоит!
Читать целиком
Valery
Kapranchik
Коллеги! Курс роскошный), я конечно не стал middle, но совершенно точно я стал круче, за что вам низкий поклон. Что касается самого курса, сбалансирован, много полезного материала, много того, чего раньше мне было неведомо. Что-то сразу влезло в голову, что-то оставил на потом, естественно все лекции буду пересмотрены по второму разу, некоторые вероятно еще больше. В силу специфики работы в некоторых темах разбирался очень хорошо, некоторые не понял до сих пор. Курс показал куда надо двигаться и каких знаний не достаточно, что на мой взгляд не менее важно. При сдаче "домашки" был культурный шок, но это тоже элемент обучения. К моему сожалению, на выполнение "домашек" уходило очень много времени, которого у меня вообще нет, поэтому они были принесены в жертву. (ну это отмазка такая, лучше такая, чем никакой). Хочу поблагодарить Станислава за его советы, за интересные ссылки на статьи, примеры, разъяснения, за терпение. Otus хочу пожелать не останавливаться, вы делаете классное дело, за что вам уважуха. Жаль расставаться, 4 мес пролетели не заметно. С уважением! Спасибо!
Читать целиком
Артём
Сургутанов
Всем доброго времени суток. Учусь на курсе у Стаса с августа. С питоном работать начал с мая 2018 года. Писал небольшие скрипты по работе и плагины для сублима. Опыт в основном Oracle PL/SQL SQL, PHP и куча всего по чуть-чуть. Искал интересный и насыщенный курс, нашёл ОТУС. Сомневался недели две, вывезу или нет. Решился прыгнуть.
Учиться интересно, это факт, но чертовски сложно. У меня уже есть пару хвостов, не поспеваю, но пока не отчаялся)) Курс у меня в декабре заканчивается.
Чувствую себя альпинистом, карабкающимся по скале с отрицательным наклоном, интерес подогревает любопытство, что же мол там, на вершине?
Или возможно боязнь сорваться вниз. =)
Читать целиком
Sabirov
Ruslan
В целом курс очень понравился. В самом начале курса, я думал о том куда я попал, задания сложные, интенсивность высокая, в течении недели нужно освоить материалы 2-х лекций со средней длительностью по 2 часа и выполнить домашнее задание, про выходные можно вообще забыть! Было сложно, но все же себя переборол и дошел до конца, приобретенный опыт с потом это большая награда)! Стас практикующий преподаватель, приводил много примеров как делать не надо, и варианты best practices! Домашние задания проверяются строго, даже если я считал свой код идеальным, Стас все равно находил что можно доработать или исправить. Не знаю как у других но из 15 заданий с первого раза удалось сдать всего несколько раз, хоть это и не важно! После отпуска начал отставать по дз от основной группы, но в конце догнал. Спасибо за курс!
Читать целиком
Антон
Лыткин
Курс очень насыщенный и сложный. И в этом вся его прелесть. Был охвачен не только python, но и другие языки, такие как C и Go. Кроме того, после прохождения курса (конечно, если выполнять домашние задания), прокачиваются также и навыки администрирования.
Станислав Ступников и Андрей Кравчук - сильные преподаватели, которые знают python "по косточкам" и преподают на очень высоком уровне.
Стоит отметить, что на всем протяжении курса времени на расслабления не было. Поскольку я совмещал курсы с работой, нередко приходилось делать домашние задания ночью, не говоря уже про выходные, поскольку хотелось разобраться в материале досконально.
Общее впечатление о курсе - крайне положительное.
Читать целиком
Роман
Болховитин
Про этот курс ходит много страшилок в чате Отуса, и он действительно тяжелый, даже очень, - подумывал не претворить ли в жизнь шутку "уволился чтобы закончить курс на Отус", но не уволился.

В общем то про курс все уже написано в других отзывах, напишу что я заметил лично у себя - после (на самом деле еще во время прохождения) курса я стал писать более складные, развернутые и информативные код-ревью, в формате похожем на тот, который используется при проверке домашних заданий. Надеюсь это заметил не только я, но и коллеги.

Но это скорее про софт-скиллы, а как сферический разработчик в вакууме я очень подтянул понимание того как работает ОС, и если до курса на слова "процессы, потоки, сигналы и эвенты" почтительно смотрел издалека, то сейчас испытываю к ним гораздо более дружеские чувства.

Понравились не только разделы про всякие низкоуровневые штуки, секции про Asyncio и Go тоже зашли очень хорошо, особенно про Go. Никогда бы в голову не пришло учить этот язык, а домашку поделал и проникся, читаю теперь книжку Кернигана-Донована.

И конечно же бонусом к курсу прилагается общая для Отуса фишка - чат в телеграме и Slack. Иногда спасают даже когда Stackoverflow не помогает.

Из того что я не оценил - домашка про логистическую регрессию. Об нее моск можно сломать, а зачем непонятно )
Читать целиком
Михаил
Лукин
Я было сомневался, выбирая курс «Разработчик Python». Меня смущала длительность обучения и цена – ведь свободного времени всегда не хватает, а оплачивать пришлось из собственных средств.

Спустя месяц я забыл о своих сомнениях. Хоть едва удавалось успевать выполнять домашние задания, даже опциональные задачи были настолько нестандартными и интересными, что отказать себе в удовольствии и не залипнуть в них было просто невозможно. Несколько раз я морально готовился проплачивать переход в следующую группу, чтобы «отдышаться», но в последний момент вытягивал и все-таки сдавал. И так каждую неделю…

Отдельно хочу отметить преподавателя. Нелегко совмещать качества хорошего педагога и профессионального разработчика. Но именно такой преподаватель ведет этот курс. Станислав квалифицированный программист с богатым опытом, престижным образованием и прекрасным чувством юмора. Сходите на открытый урок и поймете, что я не преувеличиваю. Разработанный Станиславом курс уникален. А еженедельные ламповые «посиделки» в вебинарной комнате вечером в пятницу стали такой доброй традицией, что в первую неделю после окончания лекций приходилось пересматривать записи :)

Затраченные время и деньги окупились еще до окончания курса – я устроился на работу в крутую компанию и теперь применяю все полученные знания и навыки на практике. Я смело могу порекомендовать пройти курс всем, кто не только любит программировать на Python, но и хочет заниматься этим на профессиональном уровне, даже если кажется, что уровень знания языка уже довольно хороший.

Удачи всем питонистам на этом замечательном курсе!
Читать целиком
Антон
Иванкин
Однажды ко мне пришло понимание того, что моих знаний самоучки по Python не хватает для того, чтобы писать красивый код. При поиске каких либо курсов по питону, наткнулся на "неизвестный" сайт - отус. Сайт фирмы красиво оформлен и не был похож на "шарашкину контору", да и в целом оставлял впечатление грамотно проработанного ресурса.

Курс по питону подходил для моих задач полностью, смущала только стоимость...
Но и это удалось решить довольно быстро при помощи работодателя :)

Но это всё присказка, а сказка будет впереди...

Несмотря на то, что я прошел вступительное тестирования, я не предполагал насколько сложными будут домашние задания. Если с первым я более менее справился, то второе обязательное ДЗ повергло меня в пучину долгих размышлений и как следствие - безнадежное отставание от программы курса.
Оказалось очень сложно совмещать курс, работу и семью.

Но это все лирика. А конкретика вот в чем: курс отличный! Лекции плюс review вашего кода с указанием на ошибки - бесценно. Даже та малая толика знаний, которую я получил в первых лекциях, позволила мне использовать в своих проектах - ООП, декораторы, юнит-тестирование.

Если пройти курс полностью, то точно можно стать крепким middle-разработчиком.
Читать целиком
Vasily
Mikhaylov
Всем привет!
Хочу сказать огромное спасибо платформе отус и особенно преподавателям за отличный курс по python! Было тяжело, весело и очень позновательно, пусть не все домашки сданы и не написан проект, но достигнута главная цель - я устроился работать программистом!

Когда шел на курс то был уверен что он для начинающих и зеленых, охх как же я ошибался...
На каждую домашку я смотрел как "баран на новые ворота", каждая домашка была как вызов, скажу честно, после первого прочтения задания очередной домашки я понимал что мне ничего не понятно, но google был рядом и я верил в себя)
Я поступил на курс не имея опыта работы программистом, я просто прошел несколько бесплатных курсов на других платформах и решил то нужно что то посерьезнее и не ошибся от слова совсем! Было тяжело, приходилось много гуглить, преподаватели курса предполагают наличие некоторого уровеня опыта работы над реальными проектами, так что если его нет будьте готовы читать много статей и документации по разным технологиям)
Главное что я получил после прохождения обучения это уверенность в своих силах и как результат смена сферы деятельности.
Еще раз огромное спасибо за курс! Желаю вам продолжать в том же духе, удачи и хорошего настроения)
Читать целиком
Григорий
Костерев
Курс дал мне то, что я искал. Большое спасибо автору. Я открыл для себя новые горизонты Python, о которых даже не подозревал. На этом мое изучение Python не заканчивается, так как еще так много нужно изучить и попробовать.
Читать целиком
Павел
Недошивкин
Курс понравился. Получил в результате прохождения курса очень хорошую
мотивацию по дальнейшему изучению языка. Полученые знания удалось использовать на практике в текущей работе.
Читать целиком
Павел
Логинов
Очень интересные лекции, но курс не для моего уровня. Не справился.
Попробовал выполнить первое задание и получил какой-то результат, но не смог код-ревью пройти.
Второе задание (с ООП) полностью убило мотивацию из-за своей сложности. Перечитал все ссылки из лекции, частично не понял, в итоге не смог даже какой-то результат получить. Очень сложно оказалось. Остальные задания не смог выполнить, потому что пытался сделать безуспешно задание с ООП.
Повторюсь, лектор отлично рассказывает, отвечает на вопросы, но задания слишком сложные. Возможно, просто не мой уровень, к сожалению, параллельно с работой невозможно уделять достаточно времени для полного погружения.
Кстати, хотел найти репетитора, чтобы совместно курс пройти, но никто не справился с заданиями :)
Надеюсь, сделаете курс с более низким порогом входа.
Спасибо вам, вы классные!
Читать целиком
Алексей
Гребенщиков
Хочу сказать спасибо за курс «Разработчик Python» Станиславу Ступникову. Программа курса была очень насыщенной и постоянно держала в напряжении. Думать нужно было постоянно, идешь на работу – думаешь, обедаешь – думаешь, как же сделать эту домашку, как выбрать оптимальное решение, а вечером трудишься над реализацией.

Будущим студентом могу сказать, будет не просто сложно, а очень сложно. Помимо питона, нужно будет использовать Си и даже Го. Были охвачены практически все сферы коммерческого применения питона от Web до Data science, это позволяет понять для себя в какой же из сфер хочется дальше развиваться.

Станислав профессионал своего дела и будет заставлять вас писать промышленный код, который используют программисты при разработке коммерческих приложений!
Читать целиком
Константин
Кормашев
После прохождения курса я приобрел, во-первых, понимание того как python устроен и работает вплоть до погружения на уровень кода интерпретатора, что собственно, помогает уяснить с какими нюансами можно будет столкнуться при использовании языка в целом (что полезно для проектирования приложений, профилирования кода и т.п.), а также получить опыт создания C-extentions для специфических задач расширения функционала python. Во-вторых, практику в написании качественного кода (иного просто не зачтут) для самых разнообразных задач с которыми можно столкнуться при эксплуатации языка в продакшн среде для разных областей применения: Web, DataEngineering, HighLoad и т.д. Задачи которые придется решать в ходе обучения не высосаны из пальца, они имеют под собой вполне реальную основу, т.е. с чем-то похожим можно будет вполне реально столкнуться в процессе будущей деятельности.
Как и подобает курсу Advanced, курс сложный, иначе о росте не могло бы быть и речи, нужно будет приготовится к очень серьезной работе. Однако, приложенные усилия будут вознаграждены. Лично я вижу разницу в написании собственного, понимании чужого кода до и после курса, она существенна, так что не жалею о приложенных усилиях, потраченном времени и средствах, все окупилось сторицей.
В общем, если есть желание поднять собственный уровень разработки на python, здесь у вас будет такая возможность. Дерзайте и успехов.
Читать целиком
Dmitriy
Sorokin
Как много курсов посвященных "Advanced Python" вы знаете? До появления OTUS я не встречал ни одного подобного курса. Иногда можно услышать: "Зачем мне курс? Все материалы можно найти в сети". Это правда, но ценность материалов без классного ментора и хорошей практики резко падает. Станислав отличный ментор, а уж над практикой точно придется попотеть.

Поначалу немного смущало, что в курсе используется Python 2.7, но в итоге быстро понимаешь, курс не завязан на версию языка (да и Станислав при необходимости делает ремарки Py2 vs Py3). Web/Data Science/Highload - плотность материалов очень высокая, поэтому советую быть
готовым к тому, что придется уделить курсу достаточно много времени (особенно домашкам посвященным C extensions и Golang).

Важно то, как сами преподаватели относятся к своим курсам. Стас дает хороший фидбек, после его code review иногда приходилось еще на несколько часов засаживаться за домашку. К концу курса на свой код смотришь уже немного другими глазами.

В итоге могу сказать, что курс отличный :)
Читать целиком
Андрей
Ларин
По сути, этот курс даже не про Python, а про решение реальных задач в реальном боевом окружении. Мое любимое слово, которое постоянно сопровождало меня в течении всего процесса обучения, — хардкор. А если более развернуто, то ощущения примерно такие, словно устроился на подработку, и тебе на выходные кидают реальные таски, которые надо закрыть. Это тяжело и требует времени, но при должной мотивации, такой подход работает очень эффективно.

Что понравилось:
- Большинство заданий курса — практически продакшен или близкие к нему задачи.
- Очень широко раскрывается тема об особенностях многопоточной и многопроцессорной обработки на Python.
- Отдельная большая тема посвящена интерпретатору CPython. Понимание того, как работает сборка мусора, GIL и другие особенности реализации, помогают намного более адекватно оценивать Python как инструмент решения задач, для каких он подходит, а для каких нет.
- C и Go — наличие компилируемых языков на курсе по Python поначалу выглядит странно. Но после понимаешь, что связка C и Python позволяет решать практически любой круг задач, а Go приближает это значение к 100%. Плюс было очень интересно решить одну и туже задачу на Go и на Python и посмотреть разницу в концептуальных подходах и производительности.
- Numpy и Pandas — очень эффективные инструменты не только для анализа данных, но и для текущей работы и даже повседневной жизни. Их знание как минимум будет не лишним.
- Общие лекции о проектировании и построении сложных и отказоустойчивых систем.

Сразу скажу, что объективных минусов у курса нет, но если оценивать субъективно, я бы обратил внимание на следующие вещи:
- Стоит больше внимания уделить асинхронному программированию, которое в курсе затрагивается достаточно поверхностно.
- Я бы уменьшил количество лекций по Django в пользу того же асинхронного программирования или переделал бы их структуру. Для людей которые с Django до этого не работали (типа меня) от лекций мало пользы, слишком advanced, а для тех кто хорошо знаком с этим фреймворков, возможно, этот материал будет и так очевиден.

Подводя итог, хочу сказать Станиславу большое спасибо за отлично проведенный курс, фидбек по задачам и великолепно проделанную работу по сбору и подготовке материалов. Надеюсь, что запаса его мотивации и энтузиазма хватит еще надолго!
Читать целиком
Олег
Гуцалов
Вот и завершился курс.

Во-первых курс не для новичков - не пришлось тратить время на выслушивание того, что такое list, tuple, with и т.п.

Во-вторых рассматриваются несколько сфер, где актуален Python. Django/DRF был лишь одной из них. Половина времени посвящена Data Engineering и Highload. Теперь понимаешь как это устроено в продакшене, видишь картину целиком.

На лекциях иногда возникали вопросы, которые Станислав не оставлял без внимания. Всегда можно было обратиться за разъяснением в чате.

Что особенно понравилось, так это ДЗ. Задачи были максимально приближены к боевым условиям, и их решения тщательно проверялись. Редко удавалось с первого раза разделаться хотя бы с одним - в ответ Станислав присылал замечания, буквально построчно указывая что не так.

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

В итоге курс полностью оправдал мои ожидания, за что я благодарен команде Отус и лично Станиславу за отличный материал и терпение.
Читать целиком
Кирилл
Романов
Я мог бы отметить два момента, которыми данный курс выгодно отличается от тех вариантов, что я видел раньше:
1. Объемные ДЗ-проекты, которые часто либо надо писать с нуля, либо очень существенно перерабатывать на базе базового примера (но в последних случаях все равно получается что 90% кода дописывается с нуля). По моему мнению только так можно повысить свои навыки программирования. Никаких "вставьте ваш код здесь", которые дают лишь иллюзию освоения нового материала
2. Очень широкий и глубокий охват возможностей языка: анализ CPython, тесты, асинхронность, мультипоточность, Django, немного numpy и pandas, C extensions итд. Если до курса был небольшой опыт с Python то становится понятно в каких направлениях дальше развивать навыки, но даже для опытных разработчиков это хороший курс для систематизации знаний и иненсивной тренировки в тех областях, где есть пробелы

В целом на мой взгляд этот курс один из лучших вариантов по соотношению цена-качества для тех, кому нужно без отрыва от работы улучшить свои навыки разработчика Python.
Читать целиком
Олег
Борзов
Отличный курс. Nothing add, как говорится)
Большое спасибо Андрею и, особенно, Станиславу за организацию.

Из того что понравилось:
- Структура курса. Прекрасно проработанная программа, которая, действительно, Advanced. Затрагиваются практически все темы, с которыми сталкивается современный backend python-developer: веб-разработка (от написания бека и фронта до деплоя), тестирование, написание конкурентных программ, профилирование. Даже анализ данных и Go затрагивается
- Подача материала. Лекции рассказываются достаточно понятно, в конце каждой темы предоставляются ссылки на дополнительные материалы
- ДЗ. Сложные и интересные домашки, которые раскрывают суть материала с практической стороны. По некоторым темам только благодаря отусовским ДЗ смог наконец окончательно разобраться в теме)

Из небольших (возможно, спорных) минусов:
- Доп. материалы к лекциям на английском - из-за этого у плохо владеющих языком студентов больше времени будет уходить на разбор.
Но, с другой стороны, тут я соглашусь со Станиславом - сейчас для программиста, желающего стать профи, знание английского такая же необходимость, как и знание языка. Большая часть материалов с которыми придется иметь дело (документации, книги, статьи) - на английском языке. А переводы, во-первых, выходят с большим опозданием, во-вторых - там могут быть ошибки и неточности.
- Материалы на Python 2. Тоже спорный минус, т.к. ДЗ можно сдавать на 3 питоне. Да и знание 2 версии языка бывает полезно, когда сталкиваешься legacy-кодом.
- Мало времени на ДЗ. Трудно укладываться в сроки, особенно совмещая курс, например, с фултаймом. Но это тоже не претензия к Отусу, т.к. иначе бы пришлось упрощать ДЗ, что сказалось бы скорее отрицательно на качестве обучения.

Резюмируя, крайне советую данный курс всем начинающим питонистам. Будет сложно, но оно того стоит!
Читать целиком
Valery
Kapranchik
Коллеги! Курс роскошный), я конечно не стал middle, но совершенно точно я стал круче, за что вам низкий поклон. Что касается самого курса, сбалансирован, много полезного материала, много того, чего раньше мне было неведомо. Что-то сразу влезло в голову, что-то оставил на потом, естественно все лекции буду пересмотрены по второму разу, некоторые вероятно еще больше. В силу специфики работы в некоторых темах разбирался очень хорошо, некоторые не понял до сих пор. Курс показал куда надо двигаться и каких знаний не достаточно, что на мой взгляд не менее важно. При сдаче "домашки" был культурный шок, но это тоже элемент обучения. К моему сожалению, на выполнение "домашек" уходило очень много времени, которого у меня вообще нет, поэтому они были принесены в жертву. (ну это отмазка такая, лучше такая, чем никакой). Хочу поблагодарить Станислава за его советы, за интересные ссылки на статьи, примеры, разъяснения, за терпение. Otus хочу пожелать не останавливаться, вы делаете классное дело, за что вам уважуха. Жаль расставаться, 4 мес пролетели не заметно. С уважением! Спасибо!
Читать целиком
Артём
Сургутанов
Всем доброго времени суток. Учусь на курсе у Стаса с августа. С питоном работать начал с мая 2018 года. Писал небольшие скрипты по работе и плагины для сублима. Опыт в основном Oracle PL/SQL SQL, PHP и куча всего по чуть-чуть. Искал интересный и насыщенный курс, нашёл ОТУС. Сомневался недели две, вывезу или нет. Решился прыгнуть.
Учиться интересно, это факт, но чертовски сложно. У меня уже есть пару хвостов, не поспеваю, но пока не отчаялся)) Курс у меня в декабре заканчивается.
Чувствую себя альпинистом, карабкающимся по скале с отрицательным наклоном, интерес подогревает любопытство, что же мол там, на вершине?
Или возможно боязнь сорваться вниз. =)
Читать целиком
Sabirov
Ruslan
В целом курс очень понравился. В самом начале курса, я думал о том куда я попал, задания сложные, интенсивность высокая, в течении недели нужно освоить материалы 2-х лекций со средней длительностью по 2 часа и выполнить домашнее задание, про выходные можно вообще забыть! Было сложно, но все же себя переборол и дошел до конца, приобретенный опыт с потом это большая награда)! Стас практикующий преподаватель, приводил много примеров как делать не надо, и варианты best practices! Домашние задания проверяются строго, даже если я считал свой код идеальным, Стас все равно находил что можно доработать или исправить. Не знаю как у других но из 15 заданий с первого раза удалось сдать всего несколько раз, хоть это и не важно! После отпуска начал отставать по дз от основной группы, но в конце догнал. Спасибо за курс!
Читать целиком
Антон
Лыткин
Курс очень насыщенный и сложный. И в этом вся его прелесть. Был охвачен не только python, но и другие языки, такие как C и Go. Кроме того, после прохождения курса (конечно, если выполнять домашние задания), прокачиваются также и навыки администрирования.
Станислав Ступников и Андрей Кравчук - сильные преподаватели, которые знают python "по косточкам" и преподают на очень высоком уровне.
Стоит отметить, что на всем протяжении курса времени на расслабления не было. Поскольку я совмещал курсы с работой, нередко приходилось делать домашние задания ночью, не говоря уже про выходные, поскольку хотелось разобраться в материале досконально.
Общее впечатление о курсе - крайне положительное.
Читать целиком
Роман
Болховитин
Про этот курс ходит много страшилок в чате Отуса, и он действительно тяжелый, даже очень, - подумывал не претворить ли в жизнь шутку "уволился чтобы закончить курс на Отус", но не уволился.

В общем то про курс все уже написано в других отзывах, напишу что я заметил лично у себя - после (на самом деле еще во время прохождения) курса я стал писать более складные, развернутые и информативные код-ревью, в формате похожем на тот, который используется при проверке домашних заданий. Надеюсь это заметил не только я, но и коллеги.

Но это скорее про софт-скиллы, а как сферический разработчик в вакууме я очень подтянул понимание того как работает ОС, и если до курса на слова "процессы, потоки, сигналы и эвенты" почтительно смотрел издалека, то сейчас испытываю к ним гораздо более дружеские чувства.

Понравились не только разделы про всякие низкоуровневые штуки, секции про Asyncio и Go тоже зашли очень хорошо, особенно про Go. Никогда бы в голову не пришло учить этот язык, а домашку поделал и проникся, читаю теперь книжку Кернигана-Донована.

И конечно же бонусом к курсу прилагается общая для Отуса фишка - чат в телеграме и Slack. Иногда спасают даже когда Stackoverflow не помогает.

Из того что я не оценил - домашка про логистическую регрессию. Об нее моск можно сломать, а зачем непонятно )
Читать целиком
Михаил
Лукин
Я было сомневался, выбирая курс «Разработчик Python». Меня смущала длительность обучения и цена – ведь свободного времени всегда не хватает, а оплачивать пришлось из собственных средств.

Спустя месяц я забыл о своих сомнениях. Хоть едва удавалось успевать выполнять домашние задания, даже опциональные задачи были настолько нестандартными и интересными, что отказать себе в удовольствии и не залипнуть в них было просто невозможно. Несколько раз я морально готовился проплачивать переход в следующую группу, чтобы «отдышаться», но в последний момент вытягивал и все-таки сдавал. И так каждую неделю…

Отдельно хочу отметить преподавателя. Нелегко совмещать качества хорошего педагога и профессионального разработчика. Но именно такой преподаватель ведет этот курс. Станислав квалифицированный программист с богатым опытом, престижным образованием и прекрасным чувством юмора. Сходите на открытый урок и поймете, что я не преувеличиваю. Разработанный Станиславом курс уникален. А еженедельные ламповые «посиделки» в вебинарной комнате вечером в пятницу стали такой доброй традицией, что в первую неделю после окончания лекций приходилось пересматривать записи :)

Затраченные время и деньги окупились еще до окончания курса – я устроился на работу в крутую компанию и теперь применяю все полученные знания и навыки на практике. Я смело могу порекомендовать пройти курс всем, кто не только любит программировать на Python, но и хочет заниматься этим на профессиональном уровне, даже если кажется, что уровень знания языка уже довольно хороший.

Удачи всем питонистам на этом замечательном курсе!
Читать целиком
Антон
Иванкин
Однажды ко мне пришло понимание того, что моих знаний самоучки по Python не хватает для того, чтобы писать красивый код. При поиске каких либо курсов по питону, наткнулся на "неизвестный" сайт - отус. Сайт фирмы красиво оформлен и не был похож на "шарашкину контору", да и в целом оставлял впечатление грамотно проработанного ресурса.

Курс по питону подходил для моих задач полностью, смущала только стоимость...
Но и это удалось решить довольно быстро при помощи работодателя :)

Но это всё присказка, а сказка будет впереди...

Несмотря на то, что я прошел вступительное тестирования, я не предполагал насколько сложными будут домашние задания. Если с первым я более менее справился, то второе обязательное ДЗ повергло меня в пучину долгих размышлений и как следствие - безнадежное отставание от программы курса.
Оказалось очень сложно совмещать курс, работу и семью.

Но это все лирика. А конкретика вот в чем: курс отличный! Лекции плюс review вашего кода с указанием на ошибки - бесценно. Даже та малая толика знаний, которую я получил в первых лекциях, позволила мне использовать в своих проектах - ООП, декораторы, юнит-тестирование.

Если пройти курс полностью, то точно можно стать крепким middle-разработчиком.
Читать целиком
Vasily
Mikhaylov
Всем привет!
Хочу сказать огромное спасибо платформе отус и особенно преподавателям за отличный курс по python! Было тяжело, весело и очень позновательно, пусть не все домашки сданы и не написан проект, но достигнута главная цель - я устроился работать программистом!

Когда шел на курс то был уверен что он для начинающих и зеленых, охх как же я ошибался...
На каждую домашку я смотрел как "баран на новые ворота", каждая домашка была как вызов, скажу честно, после первого прочтения задания очередной домашки я понимал что мне ничего не понятно, но google был рядом и я верил в себя)
Я поступил на курс не имея опыта работы программистом, я просто прошел несколько бесплатных курсов на других платформах и решил то нужно что то посерьезнее и не ошибся от слова совсем! Было тяжело, приходилось много гуглить, преподаватели курса предполагают наличие некоторого уровеня опыта работы над реальными проектами, так что если его нет будьте готовы читать много статей и документации по разным технологиям)
Главное что я получил после прохождения обучения это уверенность в своих силах и как результат смена сферы деятельности.
Еще раз огромное спасибо за курс! Желаю вам продолжать в том же духе, удачи и хорошего настроения)
Читать целиком
Григорий
Костерев
Курс дал мне то, что я искал. Большое спасибо автору. Я открыл для себя новые горизонты Python, о которых даже не подозревал. На этом мое изучение Python не заканчивается, так как еще так много нужно изучить и попробовать.
Читать целиком
Павел
Недошивкин
Курс понравился. Получил в результате прохождения курса очень хорошую
мотивацию по дальнейшему изучению языка. Полученые знания удалось использовать на практике в текущей работе.
Читать целиком
Павел
Логинов
Очень интересные лекции, но курс не для моего уровня. Не справился.
Попробовал выполнить первое задание и получил какой-то результат, но не смог код-ревью пройти.
Второе задание (с ООП) полностью убило мотивацию из-за своей сложности. Перечитал все ссылки из лекции, частично не понял, в итоге не смог даже какой-то результат получить. Очень сложно оказалось. Остальные задания не смог выполнить, потому что пытался сделать безуспешно задание с ООП.
Повторюсь, лектор отлично рассказывает, отвечает на вопросы, но задания слишком сложные. Возможно, просто не мой уровень, к сожалению, параллельно с работой невозможно уделять достаточно времени для полного погружения.
Кстати, хотел найти репетитора, чтобы совместно курс пройти, но никто не справился с заданиями :)
Надеюсь, сделаете курс с более низким порогом входа.
Спасибо вам, вы классные!
Читать целиком
Необходимые знания
Курсы Python рассчитаны на определённый уровень подготовки, поэтому чтобы начать познавать прекрасный мир advanced Python нужно предварительно обладать определенными знаниями. Если сформулировать ёмко, то это знания на уровне того, чтобы уметь сделать свой простенький (очень) поисковый движок. Тут и веб часть с html/css/js, и понимание сетевых вещей для обкачки ресурсов, и хранение добытого в БД, и представление о примитивах ОС (ведь краулер у нас вряд ли однопоточный) и алгоритмы какие-то, чтобы представить данные в виде, по которому быстро искать, и базовые представление о разработке с участием git’а, bash’а и прочего linux’а. Плюс ко всему понадобятся (рано или поздно) знания C.

1. Lutz M. Learning Python. – ” O’Reilly Media, Inc.“, 2013.
2. Hetland M. L. Python Algorithms: mastering basic algorithms in the Python Language. – Apress, 2014.,
3. Beazley D., Jones B. K. Python cookbook. – ” O’Reilly Media, Inc.“, 2013.
4. Martelli A. Python in a Nutshell. – ” O’Reilly Media, Inc.“, 2006.
5. http://www.pythonweekly.com/
6. http://pycoders.com/
7. http://pyvideo.org/
8. https://git-scm.com/book/en/v2
9. http://www.bottomupcs.com/
10. https://cstack.github.io/db_tutorial/
11. https://linuxjourney.com/
Подготовительный курс
Данный курс позволит вам овладеть базовым набором знаний и навыков, необходимых для старта карьеры разработчика на Python и подготовки к основному курсу «Разработчик Python».

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

Курс состоит из 12 блоков, в рамках которых рассмотрены следующие темы:

— Базовые типы и структуры данных;
— Функциональное программирование и работа с данными;
— Организация кода в модули. Исключения и классы;
— Файлы и сеть. HTTP;
— Django;
— NumPy;
— Pandas;
— Shell, virtualenv, git.

При успешном прохождении курса вы получите приглашение в Slack сообщество и возможность приобрести со скидкой основной курс «Разработчик Python» без прохождения вступительного теста (при 80 % и более правильных ответов на тесты подготовительного курса).
Записаться
Программа обучения
Модуль 1
Advanced basics
Модуль 2
Web
Модуль 3
Data engineering
Модуль 4
Highload
Модуль 5
Проектная работа
Advanced basics
Этот модуль посвящен рассмотрению фундаментальных основ языка на продвинутом уровне, а также применению общих практик разработки ПО в контексте "экосистемы" Python. Целью является достижение единого понятийного аппарата, формирование представления о внутреннем устройстве языка, его возможностях, ограничениях, недостатках и области применимости.
В модуле рассматриваются аспекты функционального, процедурного и ОО программирования на Python, особенности устройства виртуальной машины, вопросы обеспечения качества ПО и автоматизации инфраструктурных задач.
Тема 1: Advanced basics. Протоколы.
разобраться в особенностях представления естественных языков в Python,
понять нюансы применения чисел с плавающей точкой,
осознать систему протоколов языка,
разобраться с концепцией итерирования в Python,
получить представление о реализации и применимости итераторов
30 октября, 20:00 — 21:30
Лектор: Станислав Ступников
Домашние задания: 1
1 ДЗ-1: Log Analyzer
Жил-был чудный веб-интерфейса и все у него было хорошо: в него ходили пользователи, что-то там кликали, переходили по ссылкам, получали результат. Но со временем некоторые его странички стали тупить и долго грузиться. Менеджеры часто жалуются, мол "вот тут список долго грузился" или "интерфейсик тупит, поиск не работает". Но так трудно отделить те случаи, где проблемы на их стороне, а где действительно виноват веб-сервис. В логи интерфейса добавили время запроса (`$request_time` в `nginx` http://nginx.org/en/docs/http/ngx_http_log_module.html#log_format). Теперь можно распарсить логи и провести первичный анализ, выявив подозрительные URL'ы.

Про логи:
* семпл лога: `nginx-access-ui.log-20170630.gz`
* шаблон названия логов интерфейса соответствует названию сэмпла (ну, только время меняется)
* так вышло, что логи могут быть и plain и gzip
* лог ротируется раз в день
* опять же, так вышло, что логи интерфейса лежат в папке с логами других сервисов

Про отчет:
* count - сколько раз встречается URL, абсолютное значение
* count_perc - сколько раз встречается URL, в процентнах относительно общего числа запросов
* time_sum - суммарный \$request_time для данного URL'а, абсолютное значение
* time_perc - суммарный \$request_time для данного URL'а, в процентах относительно общего $request_time всех запросов
* time_avg - средний \$request_time для данного URL'а
* time_max - максимальный \$request_time для данного URL'а
* time_med - медиана \$request_time для данного URL'а


*Задание*: реализовать анализатор логов `log_analyzer.py`.

Основная функциональность:
1. Скрипт обрабатывает при запуске последний (со самой свежей датой в имени, не по mtime файла!) лог в `LOG_DIR`, в результате работы должен получится отчет как в `report-2017.06.30.html` (для корректной работы нужно будет найти и принести себе на диск `jquery.tablesorter.min.js`). То есть скрипт читает лог, парсит нужные поля, считает необходимую статистику по url'ам и рендерит шаблон `report.html` (в шаблоне нужно только подставить `$table_json`). Ситуация, что логов на обработку нет возможна, это не должно являться ошибкой.
2. Если удачно обработал, то работу не переделывает при повторном запуске. Готовые отчеты лежат в `REPORT_DIR`. В отчет попадает `REPORT_SIZE` URL'ов с наибольшим суммарным временем обработки (`time_sum`).
3. Скрипту должно быть возможно указать считать конфиг из другого файла, передав его путь через `--config`. У пути конфига должно быть дефолтное значение. Если файл не существует или не парсится, нужно выходить с ошибкой.
4. В переменной `config` находится конфиг по умолчанию (и его не надо выносить в файл). В конфиге, считанном из файла, могут быть переопределены перменные дефолтного конфига (некоторые, все или никакие, т.е. файл может быть пустой) и они имеют более высокий приоритет по сравнению с дефолтным конфигом. Таким образом, результирующий конфиг получается слиянием конфига из файла и дефолтного, с приоритетом конфига из файла.
5. Использовать конфиг как глобальную переменную запрещено, т.е. обращаться в своем функционале к нему так, как будто он глобальный - нельзя. Нужно передавать как аргумент.
6. Использовать сторонние библиотеки запрещено.

Мониторинг:
1. скрипт должен писать логи через библиотеку logging в формате `'[%(asctime)s] %(levelname).1s %(message)s'` c датой в виде `'%Y.%m.%d %H:%M:%S'` (logging.basicConfig позволит настроить это в одну строчку). Допускается только использование уровней `info`, `error` и `exception`. Путь до логфайла указывается в конфиге, если не указан, лог должен писаться в stdout (параметр filename в logging.basicConfig может принимать значение None как раз для этого).
2. все возможные "неожиданные" ошибки должны попадать в лог вместе с трейсбеком (посмотрите на logging.exception). Имеются в виду ошибки непредусмотренные логикой работы, приводящие к остановке обработки и выходу: баги, нажатие ctrl+C, кончилось место на диске и т.п.
3. должно быть предусмотрено оповещение о том, что большую часть анализируемого лога не удалось распарсить (например, потому что сменился формат логирования). Для этого нужно задаться относительным (в долях/процентах) порогом ошибок парсинга и при его превышании писать в лог, затем выходить.

Тестирование:
1. на скрипт должны быть написаны тесты с использованием библиотеки `unittest` (https://pymotw.com/2/unittest/). Имя скрипта с тестами должно начинаться со слова `test`. Тестируемые кейсы и структура тестов определяется самостоятельно (без фанатизма, в принципе достаточно функциональных тестов).

*Цель задания*: получить (прокачать) навык написания production-ready кода. То есть адекватного кода, который удобно расширять и поддерживать, протестированного и пригодного для мониторинга. Совпадение всех чисел с приведенным примером отчета целью не является (лишь бы похожи были =)

*Критерии успеха*: задание __обязательно__, критерием успеха является работающий согласно заданию код, для которого написаны тесты, проверено соответствие pep8, написана минимальная документация с примерами запуска (боевого и тестов), в README, например. Далее успешность определяется code review.

Распространенные проблемы:
* не стоит делать свои кастомные классы ошибок, это иногда (!) имеет смысл для библиотек, но не для задач подобного рода.
* ограничьтесь уровнями логирования DEBUG, INFO и ERROR: https://dave.cheney.net/2015/11/05/lets-talk-about-logging
* не выходите через sys.exit не из main. Это затрудняет тестирование и переиспользование кода.
* чтобы отрендерить шаблон не надо итерироваться по всем его строкам и искать место замены, можно воспользоваться, например, https://docs.python.org/2/library/string.html#string.Template.safe_substitute .
* функцию, которая будет парсить лог желательно сделать генератором.
* не забывайте про кодировки, когда читаете лог и пишите отчет.
* из функции, которая будет искать последний лог удобно возвращать namedtuple с указанием пути до него, распаршенной через datetime даты из имени файла и расширением, например.
* распаршенная дата из имени логфайла пригодится, чтобы составить путь до отчета, это можно сделать "за один присест", не нужно проходится по всем файлам и что-то искать.
* протестируйте функцию поиска лога, она не должна возвращать .bz2 файлы и т.п. Этого можно добиться правильной регуляркой.
* найти самый свежий лог можно за один проход по файлам, без использования glob, сортировки и т.п.
* нужный открыватель лога (open/gzip.open) перед парсингом можно выбрать через тернарный оператор.
* проверка на превышение процента ошибок при парсинге выполняетя один раз, в конце чтения файла, а не на каждую строчку/ошибку.
Тема 2: Advanced basics. "Граждане первого порядка"
разобраться с особенностями применения ФП в Python,
изучить изучить пространства имен и замыкания,
понять устройство декораторов и способы их использования.
6 ноября, 20:00 — 21:30
Лектор: Андрей Кравчук
Тема 3: Internals. Виртуальная машина
разобраться с утройством виртуальной машины,
осознать процесс исполнения кода,
понять фундаментальные абстракции, которыми оперирует виртуальная машины
8 ноября, 20:00 — 21:30
Лектор: Станислав Ступников
Домашние задания: 1
1 ДЗ-2: CPython (опционально)
### Opcode
*Задание*: добавляем опкод, совмещающий в себе несколько других опкодов.
Взглянем на дизассемблер простой функции, котрая вычисляет числа Фибоначчи.
```
[root@4e71999b346e cpython]$ python
Python 2.7.5 (default, Nov 6 2016, 00:28:07)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-11)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> def fib(n): return fib(n - 1) + fib(n - 2) if n > 1 else n
...
>>> import dis
>>> dis.dis(fib)
1 0 LOAD_FAST 0 (n)
3 LOAD_CONST 1 (1)
6 COMPARE_OP 4 (>)
9 POP_JUMP_IF_FALSE 40
12 LOAD_GLOBAL 0 (fib)
15 LOAD_FAST 0 (n)
18 LOAD_CONST 1 (1)
21 BINARY_SUBTRACT
22 CALL_FUNCTION 1
25 LOAD_GLOBAL 0 (fib)
28 LOAD_FAST 0 (n)
31 LOAD_CONST 2 (2)
34 BINARY_SUBTRACT
35 CALL_FUNCTION 1
38 BINARY_ADD
39 RETURN_VALUE
>> 40 LOAD_FAST 0 (n)
43 RETURN_VALUE
```
LOAD_FAST и LOAD_CONST так часто идут вместе
```
LOAD_FAST 0
LOAD_CONST 1
```
или вот
```
LOAD_FAST 0
LOAD_CONST 2
```
Давайте "склеим" их, сэкономим на размере байткода, а может даже и по времени исполнения (стоит проверить). Для этого давайте сделаем свой opcode!
В итоге получится как-то так:
```
[root@4e71999b346e cpython]$ ./python
Python 2.7.13+ (default, Jul 14 2017, 16:25:35)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-11)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> def fib(n): return fib(n - 1) + fib(n - 2) if n > 1 else n
...
[44740 refs]
>>> import dis
[46032 refs]
>>> dis.dis(fib)
1 0 LOAD_OTUS 1
3 COMPARE_OP 4 (>)
6 POP_JUMP_IF_FALSE 31
9 LOAD_GLOBAL 0 (fib)
12 LOAD_OTUS 1
15 BINARY_SUBTRACT
16 CALL_FUNCTION 1
19 LOAD_GLOBAL 0 (fib)
22 LOAD_OTUS 2
25 BINARY_SUBTRACT
26 CALL_FUNCTION 1
29 BINARY_ADD
30 RETURN_VALUE
>> 31 LOAD_FAST 0 (n)
34 RETURN_VALUE
[46059 refs]
>>>
```
*Подсказка*: придется поменять Include/opcode.h, Lib/opcode.py, Python/peephole.c, Python/ceval.c, opcode_targets.h. В peephole.c нужно найти место, где можно в случае если мы видим LOAD_FAST с аргументом 0 со следующим за ним LOAD_CONST, заменить последний на наш opcode, а пространство до этого забить NOP'ами.

### Until
*Задание*: while и for недостаточно, давайте добавим until! Для этого нужно воспроизвести самостоятельно вот эту статью http://eli.thegreenplace.net/2010/06/30/python-internals-adding-a-new-statement-to-python/.

### Increment/Decrement
*Задание*: после выполнения других заданий в интерпретаторе не хватает, кажется, только инкремента и декремента (++/--). Делаем по материалам этой статьи https://hackernoon.com/modifying-the-python-language-in-7-minutes-b94b0a99ce14

### Ограничения:
* cpython 2.7
* centos 7
* рекомендую docker, см. code sample ниже

### С чего начать
Пробовать что-то сделать проще и удобнее в докере, чтобы не сломать ничего на своей тачке. В нижепреведенном скрипте настраивается окружение и запускается сборка интерпретатора (в шапке даны инструкции по запуску докера). Процесс разработки такой: меняете код, запускаете make, проверяете.
```
# скачиваем image c 7кой: docker pull centos
# запускаем контейнер и заходим: docker run -ti --rm -v /Users/s.stupnikov/Coding/docker/cpython:/tmp/bin centos /bin/bash
# контейнер при выходе убьется (--rm), монтируем к нему мапочку с этим скриптом (-v ...) в папку /tmp/bin внутри контейнера

#!/bin/bash
set -x
set -e

yum clean all
yum install -y\
git\
make\
gcc-c++\
vim\
ssh\

cd /opt
git clone https://github.com/python/cpython.git
cd cpython
git checkout 2.7
./configure --with-pydebug --prefix=/tmp/python
make -j2
```
Тема 4: Internals. Управление памятью, "печально известный" GIL
разобраться с работой основных типов данных и следствиями такой реализации,
понять процесс управлению памятью в Python,
осознать то как GIL влияет на производительность Python программ.
13 ноября, 20:00 — 21:30
Лектор: Андрей Кравчук
Тема 5: OOP. Объектная модель
осознать устройство объектно модели Python,
разобраться с разделением на новые и классические классы,
понять тонкости множественного наследования,
разобраться с нюансами реализации ООП в Python.
15 ноября, 20:00 — 21:30
Лектор: Станислав Ступников
Домашние задания: 1
1 ДЗ-3.0: Scoring API
*Задание*: реализовать декларативный язык описания и систему валидации запросов к HTTP API сервиса скоринга. Шаблон уже есть в api.py, тесты в test.py, функционал подсчета скора в scoring.py. API необычно тем, что пользователи дергают методы POST запросами. Чтобы получить результат пользователь отправляет в POST запросе валидный JSON определенного формата на локейшн /method.

*Disclaimer*: данное API ни в коей мере не являет собой best practice реализации подобных вещей и намеренно сделано "странно" в некоторых местах.

*Цель задания*: применить знания по ООП на практике, получить навык разработки нетривиальных объектно-ориентированных программ. Это даст возможность быстрее и лучше понимать сторонний код (библиотеки или сервисы часто бывают написаны с примененем ООП парадигмы или ее элементов), а также допускать меньше ошибок при проектировании сложных систем.

*Критерии успеха*: задание __обязательно__, критерием успеха является работающий согласно заданию код, для которого написаны тесты, проверено соответствие pep8, написана минимальная документация с примерами запуска (боевого и тестов), в README, например. Далее успешность определяется code review.

#### Структура запроса
```
{"account": "<имя компании партнера>", "login": "<имя пользователя>", "method": "<имя метода>", "token": "<аутентификационный токен>", "arguments": {<словарь с аргументами вызываемого метода>}}
```
* account - строка, опционально, может быть пустым
* login - строка, обязательно, может быть пустым
* method - строка, обязательно, может быть пустым
* token - строка, обязательно, может быть пустым
* arguments - словарь (объект в терминах json), обязательно, может быть пустым

#### Валидация
запрос валиден, если валидны все поля по отдельности

#### Структура ответа
OK:
```
{"code": <числовой код>, "response": {<ответ вызываемого метода>}}
```
Ошибка:
```
{"code": <числовой код>, "error": {<сообщение об ошибке>}}
```

#### Аутентификация:
смотри check_auth в шаблоне. В случае если не пройдена, нужно возвращать
```{"code": 403, "error": "Forbidden"}```

### Методы
#### online_score.
Аргументы
* phone - строка или число, длиной 11, начинается с 7, опционально, может быть пустым
* email - строка, в которой есть @, опционально, может быть пустым
* first_name - строка, опционально, может быть пустым
* last_name - строка, опционально, может быть пустым
* birthday - дата в формате DD.MM.YYYY, с которой прошло не больше 70 лет, опционально, может быть пустым
* gender - число 0, 1 или 2, опционально, может быть пустым

Валидация аругементов
аргументы валидны, если валидны все поля по отдельности и если присутсвует хоть одна пара phone-email, first name-last name, gender-birthday с непустыми значениями.

Контекст
в словарь контекста должна прописываться запись "has" - список полей, которые были не пустые для данного запроса

Ответ
в ответ выдается число, полученное вызовом функции get_score (см. scoring.py). Но если пользователь админ (см. check_auth), то нужно всегда отавать 42.
```
{"score": <число>}
```
или если запрос пришел от валидного пользователя admin
```
{"score": 42}
```
или если произошла ошибка валидации
```
{"code": 422, "error": "<сообщение о том какое поле(я) невалидно(ы)>"}
```

Пример
```
$ curl -X POST -H "Content-Type: application/json" -d '{"account": "horns&hoofs", "login": "h&f", "method": "online_score", "token": "55cc9ce545bcd144300fe9efc28e65d415b923ebb6be1e19d2750a2c03e80dd209a27954dca045e5bb12418e7d89b6d718a9e35af34e14e1d5bcd5a08f21fc95", "arguments": {"phone": "79175002040", "email": "stupnikov@otus.ru", "first_name": "Стансилав", "last_name": "Ступников", "birthday": "01.01.1990", "gender": 1}}' http://127.0.0.1:8080/method/
```
```
{"code": 200, "response": {"score": 5.0}}
```

#### clients_interests.
Аргументы
* client_ids - массив числе, обязательно, не пустое
* date - дата в формате DD.MM.YYYY, опционально, может быть пустым

Валидация аругементов
аргументы валидны, если валидны все поля по отдельности.

Контекст
в словарь контекста должна прописываться запись "nclients" - количество id'шников,
переденанных в запрос

Ответ
в ответ выдается словарь `<id клиента>:<список интересов>`. Список генерировать вызовом функции get_interests (см. scoring.py).
```
{"client_id1": ["interest1", "interest2" ...], "client2": [...] ...}
```
или если произошла ошибка валидации
```
{"code": 422, "error": "<сообщение о том какое поле(я) невалидно(ы)>"}
```

Пример
```
$ curl -X POST -H "Content-Type: application/json" -d '{"account": "horns&hoofs", "login": "admin", "method": "clients_interests", "token": "d3573aff1555cd67dccf21b95fe8c4dc8732f33fd4e32461b7fe6a71d83c947688515e36774c00fb630b039fe2223c991f045f13f24091386050205c324687a0", "arguments": {"client_ids": [1,2,3,4], "date": "20.07.2017"}}' http://127.0.0.1:8080/method/
```
```
{"code": 200, "response": {"1": ["books", "hi-tech"], "2": ["pets", "tv"], "3": ["travel", "music"], "4": ["cinema", "geek"]}}
```

#### Мониторинг
1. скрипт должен писать логи через библиотеку logging в формате `'[%(asctime)s] %(levelname).1s %(message)s'` c датой в виде `'%Y.%m.%d %H:%M:%S'`. Допускается только использование уровней `info`, `error` и `exception`. Путь до логфайла указывается в конфиге, если не указан, лог должен писаться в stdout

#### Тестирование
1. Тестировать приложение мы будем после следующего занятия. Но уже сейчас предлагается писать код, что называется, with tests in mind.
Тема 6: OOP. Белая и черная "магия"
понять дискрипторы и их протокол,
разобраться с использованием "магических методов",
понять область применимости абстрактных базовых классов,
осознать особенности эксплуатации метаклассов.
20 ноября, 20:00 — 21:30
Тема 7: Testing. Дизайн тестов
осознать необходимость тестирования и его место в жизненном цикле ПО,
разобраться с конструированием кейсов тестирования,
понять различия между видами тестирования.
22 ноября, 20:00 — 21:30
Лектор: Станислав Ступников
Домашние задания: 1
1 ДЗ-3.1: API Testing
Дописываем тесты API
Тема 8: Testing. Пирамида тестирования
разобраться с устройством пирамиды тестирования,
понять область применения инструментов тестирования (моков, фикстур и т.д.),
разобраться с видами атоматиизации тестирования.
27 ноября, 20:00 — 21:30
Тема 9: Automatization. Сетевое взаимодействие
понять принципы сетевого взаимодействия через сокеты,
разобраться с особенностями сетевых протколов,
усвоить нюансы написания программ общающихся по сети.
29 ноября, 20:00 — 21:30
Лектор: Станислав Ступников
Домашние задания: 1
1 ДЗ-4: Web Server
Создаем свой сервер на "ванильном" Python, частично реализующий протокол HTTP (будет корректно отдавать страницу wikipedia). Проводим нагрузочное тестирование.
Тема 10: Automatization. Общение с БД и демонизация
осознать нюансы общения с серверной БД и основные паттерны,
разобраться с процессом демонизации программ,
разобраться с дистрибуцией Python программ.
4 декабря, 20:00 — 21:30
Web
Тема 1: Dynamic Web
- понять принципы функционирования динамического веба
- разобрать с WSGI и его особенностями
- получить представление о различных WSGI контейнерах
6 декабря, 20:00 — 21:30
Домашние задания: 1
1 ДЗ-5: uWSGI Daemon/ Django Tutorial (опционально)
Пишем стандартного "промышленного" демона, который будет отвечать по HTTP, ходить в базу, писать логи и собираться в пакет. Те, кто не знаком с Django, проходят tutorial.
Тема 2: Django. Intro
- разобраться с классической структурой веб-сервисов
- усвоить лучшие практики развертывания Django проектов
- понять как конфигурируются и эксплуатируются Django проекты
11 декабря, 20:00 — 21:30
Тема 3: Django. ORM и "зло"
- получить представление о лучших практиках использования моделей
- понять, как работает ORM и из чего он состоит
- разобраться написанием запросов через ORM
- научиться анализировать запросы
13 декабря, 20:00 — 21:30
Домашние задания: 1
1 ДЗ-6.0: Django project
Создание web-приложения аналога Stack Overflow. Определяемся со структурой и схемой данных.
Тема 4: Database layer
- понять как навигироваться в комплексном пространстве мира распределенных систем и баз данных
- познакомиться с основными понятиями, связанными с эксплуатацией и оптимизацией хранилища данных
18 декабря, 20:00 — 21:30
Тема 5: Django. Views
- разобраться с устройством логики представления в Django
- понять, каким образом выбирать подход к описанию этой логики
20 декабря, 20:00 — 21:30
Домашние задания: 1
1 ДЗ-6.1: Django project
Начинаем рисовать красивые странички
Тема 6: Django. Forms
- разобраться с логикой обработки форм и принципом их функционирования
- понять, как устроен template engine и как это влияет на его производительность
25 декабря, 20:00 — 21:30
Тема 7: REST API. Know-how
- понять, что такое REST
- разобраться с лучшими практиками реализации этого подхода
27 декабря, 20:00 — 21:30
Домашние задания: 1
1 ДЗ-6.2: Django REST API (опционально)
Добавляем к разрабатываемому приложению API.
Тема 8: Web performance
- понять пути масштабирования веб-проектов
- разобраться с производительностью фронтенда
10 января, 20:00 — 21:30
Data engineering
Тема 1: NumPy. Часть 1
IPython, базовое использование, интроспекция, поиск, история, макросы, магические методы, взаимодействие с ОС, разработка. NumPy. ndarray, индексирование, маски, векторизация. Universal functions.
15 января, 20:00 — 21:30
Домашние задания: 1
1 ДЗ-7: LogRegression
Дописываем логистический регрессор, используем его для классификации отзывов о еде из Amazon.
Тема 2: NumPy. Часть 2
Reshaping, broadcasting, structured и record массивы, хранение и загрузка данных. Внутренности ndarray. Memmap, HDF5.
17 января, 20:00 — 21:30
Тема 3: Pandas
Pandas. Series. Dataframe, иерархические индексы, missing data, агрегация.
22 января, 20:00 — 21:30
Домашние задания: 1
1 ДЗ-8: Open Data Analysis (опционально)
Выбираем один из открытых dataset'ов и анализируем его с помощью pandas в IPython notebook.
Тема 4: Matplotlib
Построение графиков, гистограммы, subplots, аннотации, стили. Data visualization, принципы правильных визуализаций.
24 января, 20:00 — 21:30
Highload
Тема 1: Concurrency. Часть 1
Concurrency, parallelism. IO/CPU bound задачи. Multithreading, sharing, communication.
29 января, 20:00 — 21:30
Домашние задания: 1
1 ДЗ-9: MemcLoad
Реализуем конкурентную заливку данных в memcache'ы
Тема 2: Concurrency. Часть 2
Multiprocessing, IPC, shared memory, Manager. Distributed computing
31 января, 20:00 — 21:30
Тема 3: C extensions
Написание расширений на C, C API.
5 февраля, 20:00 — 21:30
Домашние задания: 1
1 ДЗ-10: Protobuf (de)serializer (опционально)
Пишем свое расширение, которое будет писать файлы с protobuf сериализованным содержимым. Понадобятся знания C.
Тема 4: ffi. Cython. Pypy
None
7 февраля, 20:00 — 21:30
Тема 5: Async. Часть 1
Generators, coroutines, yield from. Event loop. Future.
19 февраля, 20:00 — 21:30
Домашние задания: 1
1 ДЗ-11: YCrawler
Пишем асинхронный краулер для новостного сайта news.ycombinator.com
Тема 6: Async. Часть 2
async/await. Error handling
21 февраля, 20:00 — 21:30
Тема 7: Golang. Часть 1
Производительность Python. Golang. Toolchain, структура проекта, менеджмент зависимостей, тур по языку.
26 февраля, 20:00 — 21:30
Домашние задания: 1
1 ДЗ-12: MemcLoad v2
Создаем простого демона на Go, проводим сравнение с аналогичным на Python.
Тема 8: Golang. Часть 2
Внутренности: горутины, сборщик мусора, оптимизации.
28 февраля, 20:00 — 21:30
Тема 9: Profiling
Особенности архитектуры, характеристики железа. Антипаттерны профилирования. Методология. cProfile, line_profiler, memory_profiler. Инструменты Linux, perf.
4 марта, 20:00 — 21:30
Тема 10: Python 3
Обзор изменений, новые фичи. Миграция проектов с 2 на 3 версию.
6 марта, 20:00 — 21:30
Проектная работа
Заключительный месяц курса посвящен разработке проекта. В качестве темы выбирается то, что интересно писать студенту и то, что потенциально можно будет потом включить в свое резюме. Участие в разработке некоего open source продукта тоже может рассматриваться в качестве выпускного проекта. При этом не обязательно закончить его за месяц. В процессе написания по проекту можно получить консультации преподавателей.

Примеры тем проекта:
- система мониторинга ПК в корпоративной сети
- свой ORM
- web приложение по поиску групп с целевой аудиторией в ВК
- исследование dataset’а с визуализацией
Предлагаемые темы выпускного проекта:
- система мониторинга ПК в корпоративной сети
- web приложение (например, по поиску групп с целевой аудиторией в ВК)
- исследование dataset’а с визуализацией
- разработка open source проектов
- своя тема
Тема 1: Вводное занятие
None
11 марта, 20:00 — 21:30
Домашние задания: 1
1 Проект
Тема 2: Консультация
None
13 марта, 20:00 — 21:30
Тема 3: Защита
None
18 марта, 20:00 — 21:30
Прошедшие открытые вебинары по курсу
Открытый вебинар — это настоящее занятие в режиме он-лайн с преподавателем курса, которое позволяет посмотреть, как проходит процесс обучения. В ходе занятия слушатели имеют возможность задать вопросы и получить знания по реальным практическим кейсам.
Django и методология 12-факторных приложений
Андрей Кравчук
День открытых дверей
1 июля в 20:00
Для доступа к прошедшим мероприятиям необходимо пройти входное тестирование
Возможность пройти вступительное тестирование повторно появится только через 2 недели
Результаты тестирования будут отправлены вам на e-mail, указанный при регистрации.
Тест рассчитан на 30 минут, после начала тестирования отложить тестирование не получится!
Пройти вступительное тестирование
После обучения вы

  • получите материалы по всем занятиям (видеозаписи занятий, презентации, примеры кодов)

  • существенно повысите свою компетенцию в сфере промышленной разработки на Python

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

  • получите сертификат об окончании курса

  • получите приглашение пройти собеседование в компаниях-партнерах (в случае успешного обучения на курсе)

Дата выдачи сертификата: 4 мая 2020 года
Ваш сертификат

онлайн-образование

Сертификат №0001

Константин Константинопольский

Успешно закончил курс «Разработчик Python»
Выполнено практических заданий: 16 из 16

Общество с ограниченной ответственностью “Отус Онлайн-Образование”

Город:
Москва

Генеральный директор ООО “Отус Онлайн-Образование”
Виталий Чибриков

Лицензия на осуществление образовательной деятельности
№ 039825 от 28 декабря 2018г.

онлайн-образование

Сертификат №0001

Константин Константинопольский

Успешно закончил курс «Разработчик Python»
Выполнено практических заданий: 16 из 16

Общество с ограниченной ответственностью “Отус Онлайн-Образование”

Город:
Москва

Генеральный директор ООО “Отус Онлайн-Образование”
Виталий Чибриков

Лицензия на осуществление образовательной деятельности
№ 039825 от 28 декабря 2018г.
Общая стоимость
60 000 ₽
В месяц: 15 000 ₽
В кредит: ₽ в месяц
Продолжительность
5 месяцев
Начало занятий
30 октября