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





Язык программирования Python
Статус:
Курс обязательный (Компьютерная безопасность)
Кто читает:
Департамент прикладной математики
Когда читается:
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 * Домашнее задание 1 + 0.18 * Домашнее задание 2 + 0.18 * Домашнее задание 3 + 0.18 * Домашнее задание 4 + 0.151 * Дополнительные задания сверх объема курса + 0.129 * Тесты
Список литературы
Рекомендуемая основная литература
- 16613 - Изучаем pandas - М.Хейдт - ДМК Пресс - 2018 - https://hse.alpinadigital.ru/document/16613 - Alpina
- 24348 - Изучаем Shiny - Х.Уикем - ДМК Пресс - 2022 - https://hse.alpinadigital.ru/document/24348 - Alpina
- Docker без секретов: Пер. с англ. - 978-5-9775-1196-4 - Гош С. - 2023 - Санкт-Петербург: БХВ-Петербург - https://ibooks.ru/bookshelf/389633 - 389633 - iBOOKS
- FastAPI: веб-разработка на Python. - 978-601-08-3847-5 - Любанович Билл - 2024 - Астана: Спринт Бук - https://ibooks.ru/bookshelf/397511 - 397511 - iBOOKS
- Idris, I. (2015). NumPy Cookbook - Second Edition (Vol. Second edition). Birmingham, UK: Packt Publishing. Retrieved from http://search.ebscohost.com/login.aspx?direct=true&site=eds-live&db=edsebk&AN=986717
- Python for data analysis : data wrangling with pandas, numPy, and IPhython, Mckinney, W., 2017
- Ван, Х. I. PyCharm Профессиональная работа на Python : руководство / Х. I. Ван, К. Нгуен , перевод с английского И. Л. Люско. — Москва : ДМК Пресс, 2024. — 618 с. — ISBN 978-5-93700-274-7. — Текст : электронный // Лань : электронно-библиотечная система. — URL: https://e.lanbook.com/book/456716 (дата обращения: 00.00.0000). — Режим доступа: для авториз. пользователей.
- Груздев, А. В. Изучаем Pandas / А. В. Груздев, М. Хейдт , перевод с английского А. В. Груздева. — 2-ое изд., испр. и доп. — Москва : ДМК Пресс, 2019. — 700 с. — ISBN 978-5-97060-670-4. — Текст : электронный // Лань : электронно-библиотечная система. — URL: https://e.lanbook.com/book/131693 (дата обращения: 00.00.0000). — Режим доступа: для авториз. пользователей.
- Использование Docker : разработка и внедрение программного обеспечения при помощи технологии контейнеров, Моуэт, Э., 2017
- Титов, А. Н. Визуализация данных в Python. Работа с библиотекой Matplotlib : учебно-методическое пособие / А. Н. Титов, Р. Ф. Тазиева. — Казань : КНИТУ, 2022. — 92 с. — ISBN 978-5-7882-3176-1. — Текст : электронный // Лань : электронно-библиотечная система. — URL: https://e.lanbook.com/book/331025 (дата обращения: 00.00.0000). — Режим доступа: для авториз. пользователей.
- Титов, А. Н. Обработка данных в Python. Основы работы с библиотекой Pandas : учебно-методическое пособие / А. Н. Титов, Р. Ф. Тазиева. — Казань : КНИТУ, 2022. — 116 с. — ISBN 978-5-7882-3164-8. — Текст : электронный // Лань : электронно-библиотечная система. — URL: https://e.lanbook.com/book/331013 (дата обращения: 00.00.0000). — Режим доступа: для авториз. пользователей.
- Титов, А. Н. Основы работы с библиотекой NumPy : учебно-методическое пособие / А. Н. Титов, Р. Ф. Тазиева. — Казань : КНИТУ, 2024. — 112 с. — ISBN 978-5-7882-3470-0. — Текст : электронный // Лань : электронно-библиотечная система. — URL: https://e.lanbook.com/book/478004 (дата обращения: 00.00.0000). — Режим доступа: для авториз. пользователей.
Рекомендуемая дополнительная литература
- Bharat Bhushan Agarwal, & Sumit Prakash Tayal. (2016). Software Engineering. [N.p.]: Laxmi Publications Pvt Ltd. Retrieved from http://search.ebscohost.com/login.aspx?direct=true&site=eds-live&db=edsebk&AN=1227282
- Dooley, J. (2017). Software Development, Design and Coding : With Patterns, Debugging, Unit Testing, and Refactoring (Vol. Second edition). [Berkeley, Californial?]: Apress. Retrieved from http://search.ebscohost.com/login.aspx?direct=true&site=eds-live&db=edsebk&AN=1641452
- Nelli, F. (2018). Python Data Analytics : With Pandas, NumPy, and Matplotlib (Vol. Second edition). New York, NY: Apress. Retrieved from http://search.ebscohost.com/login.aspx?direct=true&site=eds-live&db=edsebk&AN=1905344
- Pandas for everyone : Python data analysis, Chen, D. Y., 2023
- Python и анализ данных : первичная обработка данных с применением pandas, NumPy и Jupiter, Маккинни, У., 2023
- React 17. Разработка веб-приложений на JavaScript. - 978-5-9775-9683-1 - Дронов В. А. - 2022 - Санкт-Петербург: БХВ-Петербург - https://ibooks.ru/bookshelf/385763 - 385763 - iBOOKS
- Елисеев, А. И. Разработка программных интерфейсов веб-приложений с использованием фреймворка FastAPI : учебное пособие / А. И. Елисеев, Ю. В. Минин. — Тамбов : ТГТУ, 2024. — 81 с. — ISBN 978-5-8265-2821-1. — Текст : электронный // Лань : электронно-библиотечная система. — URL: https://e.lanbook.com/book/472310 (дата обращения: 00.00.0000). — Режим доступа: для авториз. пользователей.
- Рогачев А.Ф., Мелихова Е.В., Плещенко Т.В. - Установка и использование интегрированной среды PyCharm для разработки приложения на языке Python - Волгоградский государственный аграрный университет - 2024 - https://znanium.ru/catalog/product/2183445 - 2183445 - ZNANIUM
- Сейерс, Э. Х. Docker на практике / Э. Х. Сейерс, А. Милл , перевод с английского Д. А. Беликов. — Москва : ДМК Пресс, 2020. — 516 с. — ISBN 978-5-97060-772-5. — Текст : электронный // Лань : электронно-библиотечная система. — URL: https://e.lanbook.com/book/131719 (дата обращения: 00.00.0000). — Режим доступа: для авториз. пользователей.