Специалитет
2025/2026





Язык программирования Python
ID 1040955
Лучший по критерию «Полезность курса для Вашей будущей карьеры»
Лучший по критерию «Полезность курса для расширения кругозора и разностороннего развития»
Статус:
Курс обязательный (Компьютерная безопасность)
Кто читает:
Департамент прикладной математики
Когда читается:
3-й курс, 1, 2 модуль
Онлайн-часы:
30
Охват аудитории:
для своего кампуса
Язык:
русский
Кредиты:
3
Контактные часы:
64
Программа дисциплины
Аннотация
Язык Python рассматривается с двух позиций: как инструмент для анализа данных и для разработки веб-приложений. С точки зрения основы для анализа данных рассматривается основной стек модулей: Numpy, Matplotlib, Pandas. С точки зрения разработки веб-приложений рассматриваются средства для организации процесса разработки, фреймворки и технологии для создания бэкенда и фронтенда, а также их взаимодействия: GitLab, PyCharm/VS Code, FastAPI, Pydantic, SQLAlchemy, Numba, Redis, Celery, Shiny, Docker и др.
Цель освоения дисциплины
- Получение знаний и навыков использования базового стека модулей для анализа данных: Numpy, Matplotlib, Pandas.
- Получение знаний и навыков разработки веб-приложений на Python с использованием средств, фреймворков и технологий: GitLab, PyCharm/VS Code, FastAPI, Pydantic, SQLAlchemy, Numba, Redis, Celery, Shiny, Docker и др.
Планируемые результаты обучения
- Умеет создавать массив Numpy вручную, генерировать различными способами. Умеет обращаться с атрибутами массива, изменять его форму.
- Осуществляет выборку элементов из массива Numpy используя индексацию, срезы, маскирование, специальное индексирование.
- Генерирует массивы Numpy из псевдослучайных чисел согласно основным законам распределения.
- Выполняет арифметические операции над массивами Numpy одинаковых размеров. Применяет броадкастинг для выполнения арифметических и других операций над массивами Numpy разных размеров.
- Выполняет матричные операции и операции линейной алгебры над массивами Numpy.
- Загружает массивы Numpy из текстовых и бинарных файлов. Сохраняет массивы Numpy в текстовые и бинарные файлы.
- Создает таблицу и ряд Pandas вручную и генерирует различными способами, обращается к атрибутам.
- Загружает таблицу Pandas из текстовых и бинарных файлов и по URL. Сохраняет таблицу Pandas в текстовый и бинарный файл.
- Выполняет выбор элементов из таблицы Pandas используя индексирование, срезы, маскирование и специальное индексирование. Применяет селекторы loc и iloc для выбора элементов.
- Применяет операции удаления и добавления строк и столбцов, склейки таблиц и рядов Pandas.
- Применяет к таблице Pandas операцию GroupBy для вычисления агрегированных величин по группам. Применяет различные агрегирующие функции.
- Применяет операции pivot и melt для преобразований между вытянутой и сводной таблицей Pandas. Применяет метод pivot_table для построения сводной таблицы используя различные агрегирующие функции.
- Выполняет все виды слияния таблиц Pandas. Объясняет разницу между различными видами слияния.
- Выполняет простой разведочный анализ данных загрузив таблицу или несколько таблиц из файлов при помощи Pandas.
- Строит графики Matplotlib, настраивая стиль линий и маркеры, выводя подписи к осям и заголовок, управляя засечками и подписями к ним, выводя легенду, цветовую шкалу.
- Строит точечные, линейные и столбчатые графики Matplotlib: набор линий, диаграмма рассеяния, гистограмма.
- Строит графики Matplotlib с цветовыми шкалами: диаграмма рассеяния, тепловая карта, контурные карты.
- Строит и настраивает несколько графиков на одном рисунке Matplotlib.
- Строит трехмерные графики Matplotlib: диаграмма рассеяния, поверхность.
- Сохраняет рисунок Matplotlib в растровых и векторных форматах. Управляет разрешением растрового изображения и шириной полей.
- Выполняет основные операции по работе с Git-репозиторием используя функции PyCharm / VS Code: клонирование, создание ветки, переключение в другую ветку, добавление файлов в коммит, отмена изменений, выполнение коммита, использование полки (Shelf).
- Создает и выполняет базовую настройку проекта в GitLab. Создает и выполняет базовую настройку Issue и Merge request. Привязывает Merge request к Issue. Связывает несколько Issue. Анализирует Merge request и выполняет ревью кода. Подтверждает Merge request (выполняет слияние). Отслеживает развитие проекта по графу репозитория.
- Реализует цикл разработки новой функции или исправления ошибки в GitLab: от получения требований до слияния Merge request.
- Разрешает конфликты в коде используя инструментарий PyCharm/VS Code. Выполняет обратное слияние и разрешение конфликтов перед завершением работы с Merge request.
- Умеет создавать минимальное работоспособное приложение используя фреймворк Shiny.
- Использует лейауты, контейнеры и элементы визуального интерфейса для создания одностраничного приложения на основе фреймворка Shiny.
- Использует модульную архитектуру Shiny для повторного использования типовых частей приложения.
- Выполняет контейнеризацию приложения Shiny с использованием Docker.
- Создает минимальное работоспособное приложение на основе фреймворка FastAPI.
- Создает эндпоинты для основных типов запросов (GET, POST, ...) на основе FastAPI. Управляет передачей параметров в эндпоинт (через адресную строку или тело запроса).
- Использует аннотацию типов и модели Pydantic для валидации запросов и ответов в FastAPI.
- Использует механизм инъекции зависимостей (DI) фреймворка FastAPI для создания сессии с БД и др.
- Создает и использует Middleware для дополнительной обработки запросов в FastAPI.
- Формирует и использует интерактивную документацию API на основе FastAPI
- Создает простые модели данных Pydantic. Использует класс Field или Annotated для задания значений по-умолчанию и дополнительных ограничений.
- Создает сложные модели данных Pydantic: root-модели, вложенные модели. Использует специальные типы данных, например Email, HttpUrl, RedisDsn и др.
- Создает валидаторы для пре и пост валидации полей и моделей Pydantic. Создает сериализаторы для специальной сериализации моделей Pydantic.
- Создает функции для преобразования моделей данных Pydantic в модели таблиц SQLAlchemy и обратно.
- Применяет Pydantic для валидации вызовов функций. Применяет модели данных Pydantic для валидации запросов в FastAPI.
- Использует декоратор jit из модуля Numba для компиляции функций. Настраивает компиляцию через параметры декоратора jit. Измеряет время выполнения до и после компиляции.
- Создает функции, пригодные для компиляции при помощи декоратора jit в режиме nopython. Использует хорошие практики для создания таких функций. Использует массивы и операции с ними из модуля Numpy.
- Реализует алгоритмы, пригодные для простого распараллеливания. Использует декоратор jit и генератор prange для ускорения расчетов путем их распараллеливания на несколько ядер CPU.
- Создает задачи Celery на основе класса Task.
- Создает и настраивает приложение на основе фреймворка Celery. Использует Redis как брокер сообщений и бэкенд результатов Celery.
- Использует Flower для контроля за выполнением задач в приложении Celery.
- Создает docker-контейнер, выполняющий задачи Celery в фоновом (асинхронном) режиме. Создает docker-compose.yaml для оркестрации взаимодействующих контейнеров на основе Celery, Redis, Flower.
- Использует основные операции и создает Dockerfile для контейнеризации приложения на Python. Выполняет построение образа, запуск контейнера и его остановку.
- Использует основные операции и создает docker-compose.yaml файл для управления несколькими взаимодействующими контейнерами. Выполняет построение образов, запуск и перезапуск контейнеров и их остановку.
- Создает модели таблиц SQLAlchemy. Использует основные типы данных. Указывает первичный ключ.
- Создает отношение типа 1-к-N между таблицами SQLAlchemy. Указывает внешние ключи.
- Создает отношение между таблицами SQLAlchemy типа N-к-N на основе ассоциативной таблицы. Корректно настраивает отношения между исходными таблицами и ассоциативной таблицей.
- Создает класс для подключения к БД и создания сессий. Использует СУБД SQLite или PostgreSQL для добавления, удаления и изменения записей.
- На основе паттерна репозиторий создает класс для базовой работы с любой сущностью (таблицей) SQLAlchemy. Реализует операции CRUD. Реализует простой фильтр для операций чтения.
Содержание учебной дисциплины
- Numpy / многомерные массивы
- Pandas / таблицы данных
- Matplotlib / графики
- GitLab / процесс разработки ПО
- Shiny / фронтенд на Python
- Работа с БД / SQLAlchemy
- FastAPI / бэкенд на Python
- Pydantic / валидация данных
- Celery / фоновые задачи
- Numba / ускорение расчетов
- Docker / контейнеризация
Элементы контроля
- Домашнее задание 1
- Домашнее задание 2
- Домашнее задание 3
- Домашнее задание 4
- Дополнительные задания сверх объема курса
- Тесты
Промежуточная аттестация
- 2025/2026 2nd module0.18 * Домашнее задание 3 + 0.18 * Домашнее задание 4 + 0.18 * Домашнее задание 1 + 0.129 * Тесты + 0.151 * Дополнительные задания сверх объема курса + 0.18 * Домашнее задание 2
Список литературы
Рекомендуемая основная литература
- Python for data analysis : data wrangling with pandas, numPy, and IPhython, Mckinney, W., 2017
- Использование Docker : разработка и внедрение программного обеспечения при помощи технологии контейнеров, Моуэт, Э., 2017
Рекомендуемая дополнительная литература
- Pandas for everyone : Python data analysis, Chen, D. Y., 2023
- Python и анализ данных : первичная обработка данных с применением pandas, NumPy и Jupiter, Маккинни, У., 2023