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

На курсе вы научитесь создавать программы, web-проекты и скрипты для серверов. Вы прокачаете себя как специалиста и будете говорить на одном языке с разработчиками.

Получить консультацию

Подробнее о курсе

Вы получите базовые навыки web-разработки (Git, тестирование, документация), научитесь писать программы на Python, грамотно ставить задачи программистам, оценивать их работу и общаться с ними на одном языке.

Задача курса — научить вас использовать Python в работе и жизни.

Формат курса

Курс рассчитан на 13 недель, всего будет 26 занятий, по 3 часа каждое. На уроках будет много практики, во время которой вы отработаете ключевые навыки, необходимые для создания собственных проектов. Можно посещать занятия в центре Москвы или учиться онлайн.

Даты и время занятий

С 29 июля - 23 октября

Понедельник и среда, с 19:00 до 22:00

Программа курса

Место проведения

г. Москва Мясницкая ул 13 стр. 18, ФРИИ

Посмотреть на карте

79 000 руб.

Чему я научусь

В первую очередь, вы освоите новую профессию и сможете работать программистом.

  • Автоматизации собственных рабочих процессов и повышению эффективности.

  • Основным знаниям языка Python, фреймворкам Flask и Django.

  • Писать чистый html и css.

  • Навыкам работы с базами данных, языку запросов SQL.

  • Языку JavaScript на базовом уровне, плюс основам jQuery.

  • Работе с Git (система контроля версий, чтобы командой разрабатывать и хранить код).

  • Тестированию приложений.

  • Понимаю того, как устроен процесс разработки — сможете выявлять слабые места и устранять их.

  • Правильно ставить задачи программистам и оценивать их работу.

Курс ведёт

Павел Петлинский,
CTO Rambler.ru

Павел любит функциональное программирование, асинхронность, unix way, open source и читать исходники. Занимается разработкой высоконагруженных распределенных приложений. Программирует на Python более 10 лет. Cпикер Pycon 2015, Pycon 2016; спикер конференции Стачка 2016 и 2017; регулярный спикер Moscow Python Meetup.

Кому полезно учиться кодить на Python

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

Чтобы освоить новый язык, повысить квалификацию, быстрее программировать и больше зарабатывать.

Продакт-менеджерам

Чтобы говорить на одном языке с разработчиками и грамотно ставить задачи команде разработки.

Аналитикам

Чтобы эффективнее обрабатывать данные, находить закономерности и делать правильные выводы из данных.

Маркетологам

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

Python-программистами становятся, потому что:

Прибыльная и востребованная профессия

Это основной язык в Google и Яндексе. Программист, владеющий Python, найдёт работу практически в любой стране мира.

Сообщество

Людей, которые пишут на Python, очень много. Это значит, что ответ на любой вопрос можно быстро загуглить.

Можно работать удалённо

Находясь в России, выполнять заказы из Европы и США.

Python Software Foundation

Эта организация облегчает использование языка Python: предоставляет документацию по новым версиям, знакомит новичков с приёмами и примерами хорошего кода, выкладывает в свободный доступ библиотеки с готовыми решениями.

Программа курса

Первый блок. Занятия 1-7.

Занятие 1: Введение

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

  • Общее знакомство с `Python`, его историей и перспективами
  • Общее знакомство с версиями `Python` 2.7 и 3
  • Настройка и установка `Python` 2.7 и 3 на локальные машины
  • Установка `SublimeText`(Text Editor)
  • Настройка и установка `git`, регистрация на github
  • `print 'Hello Pythonic world!'`, первый commit и push на github
  • Детальный разбор, что же произошло в пункте выше
  • Знакомство с базовым синтаксисом, базовые типы данных
  • Что такое переменная? Как ее объявить, и где ее видно?
  • Знакомство со структурами языка: ветвления, циклы, условия
  • Stackoverflow-driven development, секция о том, как самому найти ответы на свои вопросы
Занятие 2: Первое приложение

Результат занятия: приложение-игра, "крестики-нолики" в консоли.

  • Знакомство с командной строкой
  • Управление зависимостями, `pip`, установка первых внешних пакетов
  • Знакомство с `virtualenv`, создание среды
  • Установка `PyCharm`(IDE)
  • Продолжение знакомства с типами данных в `Python`, принцип "присваивание никогда не копирует данные": массивы, словари, кортежи
  • Что такое Функция? Введение в функциональное программирование
  • Обработка исключений
  • Дебаг приложения
  • Написание игры "крестики-нолики" в функциональном стиле
Занятие 3: Объектно-ориентированное программирование

Результат занятия: приложение "список дел и покупок".

  • Что такое Объект? Знакомство с ООП
  • Принципы ООП: абстракция, наследование, инкапсуляция, полиморфизм
  • Волшебные методы и константы: `__init__()`, `__str__()` и `__dict__`
  • `Python`'s `super()`, `mro()`, новые и старые классы
  • `@staticmethod` и `@classmethod`, переменные класса
  • Принципы проектирования: наследование, агрегация и композиция
  • Продолжение знакомства с языком `Python`: декораторы, свойства, генераторы, `lambda`, `list-comprehension`
  • Zen of Python
  • Написание приложения "список дел и покупок" в объектном стиле
Занятие 4: Версии Python, межверсионный код
  • В чем основные отличия `Python` 2 и 3?
  • `str` и `unicode`
  • Другие важные изменения
  • Какую версию интерпретатора выбрать для нового проекта?
  • Как писать код под обе версии `Python`? Знакомство с `six`, `2to3`, `3to2`
  • Наступившее будущее: что нового в `Python` 3.5?
  • Могу ли я улучшить `Python`? Или что такое `PEP`
Занятие 5: Усложнение программ

Результат занятия: приложение-игра "морской бой" с ИИ.

  • Принципы разработки ПО: DRY, KISS, YAGNI, SOLID
  • Частые ошибки при написании кода
  • Работа с файлами
  • Текстовые форматы обмена данными: `.json`, `.csv`, и как с ними работать
  • Какие есть способы завершить приложение?
  • Написания игры "морской бой" с ИИ с сохранением игры, в объектном стиле
Занятие 6: Создание веб-паука

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

  • Как устроен интернет? Знакомство с `TCP/IP`, `DNS` и клиент-серверной архитектурой
  • Зачем нам `http` перед адресом? Знакомство с протоколом `HTTP` с модулем `urllib`
  • Что такое регулярное выражение? Модуль `re`
  • Что такое веб-страница? Основы `HTML` разметки, знакомство с `HTML5` тегами
  • Написание веб-паука на основе `Scrapy`, который будет получать статусы со страницы соц.сети и сохранять результаты в файле
Занятие 7: Первый web-проект, backend

Результат занятия: приложение-блог без базы данных, без стилей и скриптов.

  • Что такое backend и frontend?
  • Как работает сервер на примере `Flask`?
  • Какой путь проходит запрос, и какие бывают запросы?
  • Введение в `MVC` и `MTV`
  • Как происходит роутинг?
  • Что такое шаблон? И как работать с `Jinja2`?
  • Зачем нужны формы, и как с ними работать?
  • Написание первого web-приложения

Второй блок. Занятия 8-14.

Занятие 8: Основы баз данных

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

  • Какие бывают базы данных? Знакомство с `MySQL`, `PostgresSQL`, `SQLite` и `Redis`
  • Основы РСУБД: таблицы и связи между ними (OneToOne, OneToMany, ManyToMany)
  • Введение в `SQL`
  • Проектирование баз данных, нормальные формы
  • Транзакции, индексы
  • Введение в `NoSQL`: `key-value` хранилище, установка `Redis`
  • Введение в `ORM` на примере `SQLAlchemy` (для `SQLite`) и `redis-py`
  • Написание моделей для блога, создание кеша в `Redis`, добавление постраничного вида
Занятие 9: Первый web-проект, frontend: CSS

Результат занятия: приложение блог, с css стилями

  • Что такое `CSS`? Как работают селекторы?
  • Классы, id, теги
  • Зачем веб-страницам нужна сетка?
  • Что такое адапативный дизайн? Знакомство с `media-query`
  • Что такое `fallback`?
  • Подходы к написанию `CSS`: mobile-first и наоборот
  • Прогрессивное улучшение
  • Методологии написания `CSS`: `bem` и другие
  • Что такое компонент? И что такое `styleguide`?
  • Установка `node.js`, `npm` и `bower`
  • Почему так часто используют `Twitter Bootstrap`? Знакомство с библиотекой
  • Написание стилей для своего блога
Занятие 10: Введение в JS

Результат занятия: небольшой проект на JS

  • В чем схожести и отличия `javascript` от `Python`?
  • Какой бывает `javascript`?
  • Типы данных
  • Структуры языка
  • Область видимости переменных
  • Функции, и что такое `this`?
  • Объекты `window` и `document`
  • Что такое `polyfill`?
  • Как дебажить `js` приложение?
  • Написание своего небольшого frontend-проекта
Занятие 11: Первый web-проект, frontend: jQuery

Результат занятия: предварительный frontend для своего приложения

  • Что такое библиотека `jQuery`?
  • Когда она нужна, когда без нее можно обойтись, а когда она нежелательна?
  • Методологии огранизации кода или "Как варить лапшу"
  • Событийная модель браузера
  • Знакомство с `$.ajax()` и `CORS`
  • Манипуляции с `DOM`
  • Улучшение производительности кода
  • Написание frontend для своего проекта
Занятие 12: Автоматизация рутинных задач с Grunt

Результаты занятий: готовый frontend для своего приложения

  • Зачем нужна автоматизация задач?
  • В чем разница между ``
  • Улучшение `CSS` с `autoprefixer`
  • Знакомство с `PostCSS` и два слова о препроцессорах
  • Уменьшение размера текстовых файлов и картинок
  • Модульная система для `js` на примере `browserify`
  • Моментальное изменение страницы с `liveserver`
  • Зачем нужна система версий для статических файлов?
  • Создание `Gruntfile.js`, первый build frontend'а
Занятие 13: Django

Результат занятия: написан скелет будущего приложения Django

  • Что такое `Django`? И как работает данный фреймворк?
  • Какой путь проходит запрос в жизненном цикле приложения?
  • Знакомство с Middleware
  • url-routing, `include()` и `reverse()`
  • `Django`'s MVT, знакомство с `Django-Templates`
  • `views` и `class-based views`
  • Простые формы, валидация форм
  • Статические файлы
  • Организация настроек приложения
  • Написание скелета будущего проекта
Занятие 14: Django ORM

Результат занятия: написание моделей к приложению

  • Знакомство с моделями
  • Установка и настройка `PostgreSQL`
  • Отношения моделей между собой: `OneToOne`, `ManyToMany` и `ForeingKey`
  • Как написать запрос?
  • Как написать сложный запрос? `annotate()`, `aggregate()`
  • Сигналы
  • Миграции, обзор исторического `South` и текущего `Django-Migrations`
  • Написание моделей к приложению

Третий блок Занятия 15-21.

Занятие 15: Работа с моделями в Django

Результат занятия: доработка моделей, оптимизация и отладка

  • Как сделать сложный запрос проще? `select_related()`, `values()`
  • Следим за запросами с помощью `django-debug-toolbar`
  • Создание и валидация `ModelForm`
  • Работа в `FileField` и `ImageField`, сохранение пользовательских медиа файлов
  • Наследование моделей, абстрактные модели и миксины
  • Менеджеры
  • `raw queries`: плюсы и минусы
  • Доработка своего приложения
Занятие 16: Администрирование Django приложения

Результат занятия: написанная админская часть приложения

  • Как устроена админская панель?
  • Как администрировать приложение?
  • Авторизация пользователей, группы и права доступа
  • Создание собственных `admin-view`
  • Знакомство с `django-admin-tools`
  • `Django Management Commands`, создание своих комманд
  • Как правильно вести логи?
Занятие 17: Тестирование Python приложения

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

  • Что такое тест, и зачем тестировать приложение?
  • Какие бывают тесты? В чем разница между unit-тестыми и интеграционными тестами?
  • Модуль `unittest` в `Python`
  • Что такое "изоляция"? Знакомство с модулем `mock`
  • Тесты для нескольких версий `Python` с `tox`
  • Интеграционные тесты с `selenium`
  • Сколько кода покрыто тестами? Введение в `coverage`
  • Написание тестов к своему проекту, достижение покрытия в 70-80%
Занятие 18: Тестирование Javascript приложения

Результат занятия: написание тестов для своего приложения

  • Почему у `js` так много фреймфорков для тестирования?
  • Тестировани при помощи `mocha`, `Chai` и `Sinon`
  • Изоляция: моки, шпионы и удары в спину
  • Тестирование картинками, или как работает `gemini`
  • Как запустить все тесты сразу? Знакомство с `polytester`
  • Автотесты локально на примере `Grunt` и удаленно на примере Travis CI
Занятие 19: Введение в TDD и BDD

Результат занятия: написание модуля в TDD стиле, создание BDD тестов

  • Что такое `Test Driven Development`?
  • Плюсы и минусы такого похода
  • Тестирование `Django` приложения при помощи `LiveServerTestCase` и `StaticLiveServerTestCase`
  • Почему TDD и BDD часто сравнивают?
  • Как описать поведение приложения? Введение в псевдо-язык `gherkin`
  • Сравнение BDD фреймворков для `Python`
  • Запуск BDD тестов
  • Когда такие подходы нужны, применимы и потивопоказаны? И когда писать какие тесты?
Занятие 20: Celery

Результат занятия: написание асинхронных задач для своего проекта

  • Настройка и установка `Celery with Redis`
  • Знакомство с асинхронными задачами
  • Периодичные задания с `Celery Beat`
  • Конроль выполнения задач с `Celerycam`
  • Мониторинг `Redis`
  • Как дебажить `Celery`?
  • Написание асинхронных задач
Занятие 21: Полезности для Django разработчика

Результат занятия:

  • Краткое знакомство с популярными библиотеками
  • `python-social-auth`
  • `django-rest-framework`
  • `django-cms`
  • `Elasticsearch`
  • `Sentry` и `Raven` (+ `raven.js`)

Четвёртый блок. Занятия 22-26.

Занятие 22: Безопасность

Результат занятия: скрипты для XSS атаки, добавление дополнительных настроек безопасности в проект

  • Какие бывают атаки?
  • Какие средства предлагает `Django`, чтобы избежать потенциальных атак?
  • Content Security Policy
  • Пишем свой XSS
  • Протокол HTTPS
  • Аудит сайта на безопасность
Занятие 23: Документация

Результат занятия: Документирование своих приложений, генерация документации

  • Как документировать `Python` приложение?
  • Умные `doc-string`, знакомство со `Sphinx`
  • Тесты в документации
  • Как документировать `CSS` и зачем? Знакомство с `KSS`
  • Создаем свой `styleguide` в два клика
  • Документривание `js`
  • Генерация документации по проектам
Занятие 24: Математика в Python
  • Что такое `anaconda`?
  • Фреймворк `Pandas`
  • Знакомство с `numpy`
  • `iPython Notebook`
  • `matplotlib`
Занятие 25: Деплой на UNIX сервер

Результат занятия: деплой своего приложения на сервер, создание шаблонов конфигураций

  • Отличия боевого сервера от сервера разработки
  • Создание окружения
  • `gunicorn` vs `uwsgi`
  • Создание сервисов в `supervisor`
  • Установка и конфигурация `nginx`
  • Установка дополнительных сервисов
  • Установка `pydevd` и удаленный дебаг
Занятие 26: Приложение в реальной жизни
  • Что делать, когда все пойдет не так
  • Как поддерживать свое приложение?
  • Как поддерживать чужое приложение?
  • Метрики (CTR, конверсия), AB-тестирование
  • Куда расти и что делать?

Почему любят Python:

Профессия будущего

Python — это выбор Google, а это значит, что этот язык будет востребован долгие годы. У Python отличная читаемость и элегантный код.


Крутая философия программирования — Дзэн Пайтон

Вы познакомитесь с философией, которой придерживаются все разрабочики на Python. К слову, она применима не только к разработке, но и к жизни во всех ее проявлениях.

Много новых друзей, которые тоже кодят

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

Вот несколько цитат о Python из сообществ о программировании:

«В итоге Python теперь наш выбор и, несмотря на то, что никто из нас толком на нем до этого не писал, за 6 недель мы сделали столько, сколько на Java делали бы бесконечно долго»

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

«Для многих, в том числе и для меня, основные преимущества — это удобочитаемый синтаксис. Не много языков могут похвастаться им. Программный код на Python читается легче, что значит, беспроблемное многократное использование и обслуживание»

Отзывы студентов

Стоимость

Стоимость участия

79 000 руб.

Если вы хотите оплатить в рассрочку, напишите письмо на [email protected] или позвоните Елизавете +7 499 647-47-83

Купить билет

Что входит в стоимость

  • 78 часов теории и практики

  • Сертификат

  • Нетворкинг

  • Учебные материалы

  • Видеозаписи всех занятий

Расскажите о курсе друзьям

Место проведения:

логотип ФРИИ

г. Москва, ул. Мясницкая, д. 13, стр. 18