Научим программировать за 3 месяца

Научим программировать за 3 месяца

БЕСПЛАТНЫЕ СЛИВЫ!

Полный курс программирования на языке Python для людей любого уровня подготовки. Любого. Главное, чтобы был ноутбук и базовое знание английского. Можно со словарём.

Почему выбирают обучение в #tceh?

Потому что это не обучение — это полноценное освоение новой профессии. В #tceh покупают воплощение мечты об интересной и хорошо оплачиваемой работе.

Качество

Образовательная программа многократно тестируется и проверяется. Преподаватели проходят подготовку. Материалы одобрены экспертами из индустрии.

Поддержка после курса

По окончанию курса #tceh помогает трудоустроиться в новой профессии, войти в профессиональные сообщества и продолжать расти.

Мотивация

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

Мы часто встречаем людей, которые говорят...


#tceh решил им помочь – мы нашли человека с большим стажем в кодинге, длительным опытом работы с Python и навыками хорошего преподавателя. Его зовут Никита Соболев, и он научит вас писать программы на Python.


Курс ведёт

Никита Соболев,

работал над Python проектами для Logibox и Idea-Logic

Никита 5 лет пишет на Python. Всего профессионально занимается программированием 8 лет. Вёл семинары в НИУ ВШЭ. В течение всей карьеры занимался собственными проектами и outsource‑поддержкой на практике


Почему выбирают Python

Python — достаточно универсальный язык программирования. На нём пишут и web-проекты, и игры, и скрипты для серверов, и много чего ещё. У большинства новичков есть проблема — они редко знают, что именно хотят написать. Освоив же Python, фантазию можно не ограничивать. 


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


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


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


Основные знания и навыки, которые получат студенты курса

  • Основные знания языка Python, фрейморков Flask и Django
  • Навыки работы с базами данных, язык запросов SQL Умение писать чистый html и css
  • Язык javascript на базовом уровне, плюс основы jQuery
  • Умение работать с git
  • Тестирование приложений
  • Знания о том, как ведется управление разработкой, умение работать в команде


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

Первый блок. Занятия 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-тестирование
  • Куда расти и что делать?



Report Page