Описание курса:

Курс предназначен для тех, кто уже владеет основами разработки на Pythonи желает освоить продвинутые умения и навыки программирования на Python. Курс также будет полезен уже квалифицированным пользователям. Программа построена по принципу 20% лекционного материала, 80% лабораторные работы.

После изучения курса Вы сможете:

  • Разрабатывать программы на языке Python

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

  • Быстрое введение в процедурное программирование
    • Создание и запуск программ на языке Python
    • Правила оформления кода PEP8
    • Типы данных, ссылки на объекты
    • Встроенные контейнеры: строки, списки, кортежи, словари, множества
    • Логические операции, циклы
    • Обработка исключений
  • Функции в Python
    • Определение функций
    • Строки документации и док-тесты
    • Параметры по умолчанию и функции с произвольным количеством параметров
    • Рекурсивные функции
    • Порядок поиска имен, правило LEGB
    • Элементы функционального программирования: map, filter, reduce, карринг и композиция
    • Замыкания
    • Декораторы
    • Примеры и упражнениям
  • Использование файлов
    • Открытие, чтение и запись данных в файл
    • Файлы с последовательным и произвольным доступом
    • Контекст-менеджеры
    • Сериализация средствами стандартной библиотеки: pickle, json
    • Функции для работы с файловой системой
    • Временные файлы
    • Файлы в формате csv
    • Примеры и упражнения
  • Объектно-ориентированное программирование
    • Определение класса и создание экземпляра
    • Поля и методы класса
    • Magic-методы, конструкторы
    • Множественное наследование и MRO
    • Инкапсуляция и полиморфизм
    • Статические методы и методы класса
    • Примеры и упражнения
  • Управление поведением экземпляров класса
    • Определение операций сравнения и хеширования
    • Переопределение арифметических операций
    • Создание копии экземпляра класса
    • Изменение порядка сериализации/десериализации
    • Создание контекст-менеджеров
    • Функторы и декораторы с использованием классов
    • Примеры и упражнения
  • Управление созданием классов
    • Управление доступом к атрибутам класса
    • Метод-конструктор __new__()
    • Метаклассы
    • Абстрактные базовые классы
    • Использование свойств для управления доступом к атрибутам
    • Декораторы классов
    • Примеры и упражнения
  • Пользовательские контейнеры
    • Определение пользовательского контейнера путем наследования
    • Определение пользовательского контейнера путем агрегации
    • Определение методов доступа к элементам контейнера
    • Протоколы итераторов
    • Итераторы на базе генераторов
    • Генераторы и ленивые вычисления
    • Сопрограммы
    • Примеры и упражнения
  • Приемы объектно-ориентированного программирования
    • Введение в объектно-ориентированный анализ Язык UML
    • Принципы SOLID
    • Паттерны объектно-ориентированного проектирования
    • Паттерн Одиночка
    • Паттерны Фабричный метод и Абстрактная фабрика
    • Паттерн Наблюдатель
    • Примеры использования паттернов
    • Упражнения
  • Модули и пакеты
    • Определение и способы запуска модуля
    • Связность и сцепленность
    • Импортирование модулей
    • Видимость переменных в модуле
    • Определение и импортирование пакета
    • Относительные и абсолютные импорты
    • Менеджер пакетов pip и виртуальные среды virtualenv
    • Примеры и упражнения
  • Параллельное программирование
    • Создание потоков
    • Синхронизация потоков
    • Очереди задач
    • Ограничение GIL
    • Использование процессов
    • Передача данных между процессами
    • Пуллы процессов
    • Примеры и упражнения
  • Программирование сетевого взаимодействия
    • Запрос удаленного ресурса по протоколу HTTP
    • Парсинг HTML-файлов
    • Простейший эхо-сервер на сокетах
    • Многопоточный сервер на сокетах
    • Асинхронный сервер на сокетах
    • Примеры и упражнения
  • Средства стандартной библиотеки
    • Представление числовых данных и точность арифметических операций
    • Даты и время
    • Коллекции в стандартной библиотеке: очередь, именованный кортеж, упорядоченный словарь
    • Модульные тесты и использование мок-объектов
    • Оценка производительности
    • Примеры и упражнения
  • Реляционные базы данных
    • Основы реляционных баз данных
    • Стандарт PEP249
    • Пример работы с СУБД Sqlite
    • Пример работы с СУБД MySQL
    • ORM системы на примере SQLAlchemy
    • Примеры и упражнения
  • NoSQL базы данных
    • Теорема CAP
    • Основные типы NoSQL баз данных
    • Взаимодействие с СУБД Redis
    • Взаимодействие с СУБД MongoDB
    • Запись и чтение данных в формате XML DOM, StAX и SAX-парсеры
    • Примеры и упражнения
  • Разработка графических интерфейсов пользователя
    • Пакет Tkinter
    • Окна и элементы управления
    • События
    • Таймеры
    • Диалоговые окна
    • Примеры и упражнения
  • Разработка web-приложений
    • Классификация web-фреймворков
    • Введение в web-фреймворк Flask
    • Язык шаблонов Jinja2
    • Обработка форм
    • Использование сессии
    • Примеры и упражнения
  • Разработка асинхронных web-приложений
    • Библиотека Twisted
    • Пример разработки web-приложения на Twisted
    • Тестирование приложения с использованием пакета selenium
    • Нагрузочное тестирование web-приложений
    • Примеры и упражнения
  • Разработка распределенных и высокопроизводительных приложений
    • Подключение модулей, написанных на языках C/C++
    • Библиотеки numpy, pandas
    • Распределенные приложения на основе MPI
    • Распределенный приложения на очередях сообщений Celery
    • Ответы на вопросы слушателей

Минимальные требования:

  • Наличие собственного ноутбука для занятий в аудиториях
  • Базовые знания языка Python

* Указанные скидки не суммируются с другими действующими акциями и специальными предложениями. Если у Вас возникли вопросы, обращайтесь за консультацией к нашим менеджерам!