1. Знакомство
Цель: познакомиться со спикером и подготовиться к курсу.
Рассказ о курсе: структура, кому подойдёт, как его проходить. Рассказ о Python: что за язык, где применяется.
Практика: поставить интерпретатор, hello world.
2. Подготовка к курсу
Цель: настроенный Git, знание альтернатив и понимание основных терминов
Создание аккаунта и настройка Github, настройка SSH. Базовые знания про память и процессор. Рассказ про компиляторы и интерпретаторы.
Практика: создать новый репозиторий, описать в READ.ME его цель, запушить на Github, сделать настройки видимости репозитория.
3. Основы
Цель: полностью настроенная инфраструктура (управление зависимостями, управление версиями, виртуальные среды).
Первые программы из IDLE или из файла. IDE: Visual Studio Codeре, преимущества и настройка, альтернативы, PyCharm — Idea, PEP8, linter стандарты кода.
Практика: скачать с Github проект, сделать VE через PIPENV, установить зависимости и запустить. Воспользоваться Poetry вместо PIPENV, использовать внутри IDE. Автоматическая проверка линтерами.
4. Базовые конструкции языка
Цель: научиться писать простейшие программы, решать элементарные задачи, правильно применять типы данных
Переменные и встроенные типы. Структуры данных. Строки и форматирование. Словари и множества. Comprehensions, lambda, filter, map, collections
Практика: модифицировать примеры. Работа с библиотеками: подключить, задействовать функции. Рекурсивный обход словарей и обход графов сложные фильтрации, вложенные сomprehensions. Валидатор скобок.
5. Тестирование
Цель: разобраться в терминах, научиться писать юнит-тесты и полностью покрывать тестами свои решения.
Основы тестирования: unittest, pytest, сoverage.
Практика: покрыть тестами предыдущие задания, которые запушены на Github, и проверить через Coverage. Настроить Github actions на тесты и Coverage.
6. Десктоп
Цель: разобраться в стандартных вопросах и общих принципах работы с сетью.
Что такое ОС, процесс и поток, GIL, Linux\POSIX, файловая система. Работа с сетью в ОС.
Практика: повторить и модифицировать примеры использования. Работа с генератором случайных строк в файл. Чтение файла, сортировка строк, написание файла. Ускорение генератора строк с помощью multiprocessing.
7. Десктоп — PyQt
Цель: разобраться в стандартных вопросах, научиться пользоваться наследованием и написать простейшую программу на Qt.
Основы ООП: наследование, полиорфизм, MRO. ООП в Python. PyQt widgets. Обзор технологии QML: сравнение с JavaScript, обсуждение MVC, разделения frontend и backend.
Практика: повторить и модифицировать примеры использования. Написать простейшее приложение в 6-10 элементов. Переписать предыдущий пример с widgets на QML.
8. Десктоп — PyGame
Цель: научиться использовать pygame, закрепить предыдущие знания
Поиск примеров на Github, запуск, демонстрация без разбора кода
Практика: расширить функциональность того, что написали. Написать меню с кнопками и своим курсором.
9. Базы данных
Цель: разобраться, что такое SQL, какие бывают знает типы хранилищ и инструменты.
Основы SQL. Виды хранилищ и баз данных. Обзор самых популярных инструментов. ORM общие сведения, CRUD. Active Record vs Data Mapper
Практика: доработать код, написанный в видеоуроке, соединить результат практики из этого модуля и из урока про работу с сетью.
10. Пишем бота
Цель: разобраться, как работают боты и что такое API.
Что такое API, читаем документацию. Качаем библиотеку, пробуем простой пример. Пишем своего простого бота, типа запрос с Ютуба или из Википедии.
Практика: соединить результат предыдущей практики с ботом. Написать своего бота с кнопками в Telegram.
11. WEB — основы
Цель: разобраться, как пишутся сайты и веб-сервисы, какие есть протоколы и инструменты проектирования API.
Что такое web и с чем его едят. Место Python в web, обзор фреймворков. Как проектировать, ApiFirst, стили проектирования, OpenAPI. SOAP, RPC.
12. Django
Цель: научиться писать бэкенд на Django.
Основы Django: подключение БД, настройка Hello World. Проектируем API для бэкенда. Подключаем DRF. Создаем контроллер для постов
Практика: написать контроллер для комментариев и тесты для контроллеров. Дописать систему диалогов (ответов) в комментариях. Добавить авторизацию.
13. Flask и FastApi
Сравнение Flask с Django. Пример кода на Flask с разбором. Практика: расширить функциональность кода из примера.