• A
  • A
  • A
  • ABC
  • ABC
  • ABC
  • А
  • А
  • А
  • А
  • А
Regular version of the site

Python Programming Language

2025/2026
Academic Year
RUS
Instruction in Russian
3
ECTS credits
Course type:
Compulsory course
When:
3 year, 1, 2 module

Instructors

Программа дисциплины

Аннотация

Язык 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 module
    0.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). — Режим доступа: для авториз. пользователей.

Авторы

  • Князева Ирина Васильевна
  • Бобер Станислав Алексеевич