• A
  • A
  • A
  • АБB
  • АБB
  • АБB
  • А
  • А
  • А
  • А
  • А
Обычная версия сайта
Бакалавриат 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). — Режим доступа: для авториз. пользователей.

Авторы

  • Соколов Павел Павлович
  • Оруджева Альбина Александровна