Бакалавриат
2024/2025





Промышленное программирование на Haskell
Статус:
Курс по выбору (Прикладная математика и информатика)
Направление:
01.03.02. Прикладная математика и информатика
Где читается:
Факультет компьютерных наук
Когда читается:
4-й курс, 3 модуль
Формат изучения:
без онлайн-курса
Охват аудитории:
для своего кампуса
Преподаватели:
Соколов Павел Павлович
Язык:
русский
Кредиты:
4
Программа дисциплины
Аннотация
Haskell — современный язык программирования общего назначения, который активно используют в индустрии для написания эффективного, компактного, легко читаемого и устойчивого к ошибкам программиста кода. Не верите? В этом курсе вашему вниманию предлагаются настоящие жемчужины функционального программирования, которые заставят вас изменить своё мнение. В первой части курса мы увидим, как Haskell используют в продакшене: как читают и выводят структурированные данные, как комбинируют библиотеки и сайд-эффекты, как тестируют получающийся код. Обещаю, что каждое из решений вас удивит простотой, удобством использования и композициональностью, которые достигаются благодаря главным силам Хаскеля: ленивым вычислениям, контролю сайд-эффектов и продвинутой системе типов. Также будет предложена серия мини-проектов с заданиями, направленными на закрепление полученных знаний.
Цель освоения дисциплины
- Научиться продуктивно программировать на Haskell
- Познакомиться с промышленными стандартами разработки на Haskell
Планируемые результаты обучения
- Освоить функциональную парадигму решения задач
- Попрактиковаться в разделении кода на хорошо изолируемые компоненты
Содержание учебной дисциплины
- Синтаксис Haskell. IO. Классы типов Num, Read.
- Синтаксис Haskell. Ленивые вычисления.
- Моноиды. Монады. Законы классов.
- Монады Maybe, RWS, IO. Генераторы случайности.
- Классы Alternative и MonadPlus. Парсеры
- Композиция эффектов. Трансформеры монад.
- Монада Free. List fusion. Параметричность.
- Многопоточность и конкурентность. STM.
- Стриминг и управление ресурсами.
- Программирование на уровне типов.
Элементы контроля
- Домашнее задание 1Мини-проект по темам лекций и семинаров 1-4. До 12 баллов (2 балла – бонусные).
- Домашнее задание 2Аналогично домашнему заданию 1, но по темам лекций и семинаров 3-6.
- Домашнее задание 3Аналогично домашнему заданию 1, но по темам лекций и семинаров 5-8.
- Домашнее задание 4Аналогично домашнему заданию 1, но по темам лекций и семинаров 7-10.
- Защита проектаУстный рассказ о проекте, выполненном на Haskell за время обучения на курсе. Тема проекта – одна из предложенных либо инициативная. Оценивается умение применять знания, полученные на курсе, в законченном и полезном проекте.
Промежуточная аттестация
- 2024/2025 3rd moduleИтог = Округление(min(10, 0.64 * ДЗ + 0.36 * ПР)), где ДЗ – средняя оценка за все домашние задания, ПР – оценка за проектную работу.
Список литературы
Рекомендуемая основная литература
- Душкин, Р. В. Справочник по языку Haskell : справочник / Р. В. Душкин. — Москва : ДМК Пресс, 2009. — 544 с. — ISBN 5-94074-410-9. — Текст : электронный // Лань : электронно-библиотечная система. — URL: https://e.lanbook.com/book/1252 (дата обращения: 00.00.0000). — Режим доступа: для авториз. пользователей.
Рекомендуемая дополнительная литература
- Душкин, Р. В. Функциональное программирование на языке Haskell : учебник / Р. В. Душкин. — Москва : ДМК Пресс, 2008. — 609 с. — ISBN 5-94074-335-8. — Текст : электронный // Лань : электронно-библиотечная система. — URL: https://e.lanbook.com/book/1247 (дата обращения: 00.00.0000). — Режим доступа: для авториз. пользователей.