2024/2025
Инструментальные средства моделирования
Статус:
Дисциплина общефакультетского пула
Кто читает:
Департамент прикладной математики
Когда читается:
1, 2 модуль
Охват аудитории:
для всех кампусов НИУ ВШЭ
Преподаватели:
Бобер Станислав Алексеевич
Язык:
русский
Кредиты:
5
Программа дисциплины
Аннотация
Решение задач с помощью математического моделирования часто связано с проверкой большого числа гипотез, что требует не только создания алгоритмов расчета, но и автоматизированной системы, позволяющей удобно выполнять вычисления, хранить и демонстрировать результаты. Современные автоматизированные системы часто строятся по принципу веб-приложений, в которых пользователи работают через браузер, а вычисления выполняются на удаленном сервере.Курс посвящен созданию веб-приложения, включающего пользовательский интерфейс (фронтенд), бэкенд для выполнения вычислений и СУБД для хранения результатов расчетов. Все компоненты веб-приложения планируется реализовать на Python. Используются навыки, полученные на курсе Компьютерный Практикум 3 по созданию эффективных алгоритмов расчета на Python. Создание веб-приложения выполняется на основе современных технологий: GitLab, PyCharm или VS Code, Python 3.11, Celery, Redis, Docker, Shiny, Numba, Numpy, Scipy, Pandas, Matplotlib, Plotly и др.
Цель освоения дисциплины
- Получить навыки разработки веб-приложений как автоматизированных систем для выполнения вычислений с использованием современных технологий: сервиса для разработки ПО GitLab, среды разработки PyCharm или VS Code, языка Python 3 и фреймворков для него, технологии виртуализации Docker и др.
Планируемые результаты обучения
- Уметь управлять множеством взаимосвязанных контейнеров Docker
- Знает, что такое отложенные задания, брокеры задач. Владеет фреймворком Celery.
- Описать dockerfile и собрать docker image для своего проекта.
- Знать основы работы с технологией контейнеризации Docker.
- Уметь писать функции на языке Python, подходящие для последующей компиляции. Использовать модуль Numba для компиляции таких функций в режиме nopython.
- умеет устанавливать СУБД MySQL и PostgreSQL
- называет этапы разработки ПО
- формулирует требования к веб-приложению, аналогичному по сложности разрабатываемому в рамках курса
- формулирует техническое задание к веб-приложению, аналогичному по сложности разрабатываемому в рамках курса
- настраивает среду разработки PyCharm или VS Code на работу с проектом в GitLab
- воспроизводит процесс разработки нового элемента ПО в системе GitLab и среде разработки PyCharm или VS Code
- создает минимальное приложение на основе фреймворка Shiny for Python
- использует компоненты и лейауты фреймворка Shiny for Python и создает пользовательский интерфейс по его описанию или макету
- создает код на Python обрабатывающий пользовательские действия на основе фреймворка Shiny for Python
- создает модели таблиц по их описанию используя диалект sqlalchemy
- создает миграции БД при помощи alembic
- создает запросы к БД при помощи диалекта sqlalchemy
Содержание учебной дисциплины
- Процесс разработки ПО в GitLab
- Создание фронтенда на Python
- Создание бэкенда на Python
- Создание базы данных для хранения результатов
- Контейнеризация приложения
Элементы контроля
- Задания для самостоятельного выполнения в GitLab и PyCharm или VS Code
- Защита проектного задания
- Дополнительные задания сверх объема курса
Промежуточная аттестация
- 2024/2025 2nd module0.152 * Дополнительные задания сверх объема курса + 0.127 * Задания для самостоятельного выполнения в GitLab и PyCharm или VS Code + 0.127 * Задания для самостоятельного выполнения в GitLab и PyCharm или VS Code + 0.297 * Защита проектного задания + 0.297 * Защита проектного задания
Список литературы
Рекомендуемая основная литература
- Head first SQL, Beighley, L., 2007
- Python : исчерпывающее руководство, Бизли, Д. М., 2023
- Высокопроизводительные Python-приложения : практическое руководство по эффективному программированию, Горелик, М., 2022
- Использование Docker : разработка и внедрение программного обеспечения при помощи технологии контейнеров, Моуэт, Э., 2017
- Программная инженерия : технологии разработки программного обеспечения, Орлов, С. А., 2016
Рекомендуемая дополнительная литература
- Django: практика создания Web - сайтов на Python, Дронов, В. А., 2016
- Modeling and simulation in python, Kinser, J. M., 2022
- MySQL : справочник по языку, Волковой, Я. П., 2005
- Python : создание приложений : б-ка профессионала, Чан, Уэсли Дж., 2015