We use cookies in order to improve the quality and usability of the HSE website. More information about the use of cookies is available here, and the regulations on processing personal data can be found here. By continuing to use the site, you hereby confirm that you have been informed of the use of cookies by the HSE website and agree with our rules for processing personal data. You may disable cookies in your browser settings.

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

Functional Programming

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

Instructors


Костюченко Илья Игоревич

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

Аннотация

Курс позволяет раскрыть основы функционального и логического программирования, структуры языков, его синтаксис и семантические конструкции, основные тенденции развития функционального программирования в рамках проектирования современных автоматизированных систем, решений, выполненных при использовании функциональных и логических языков программирования. Также раскрываются основные принципы формирования проектных решений для решения задач искусственного интеллекта. Для освоения дисциплины студентам необходимы знания основ программирования и алгебры. Курс реализуется с использованием онлайн-курса «Функциональное программирование на языке Haskell» на платформе Stepik.
Цель освоения дисциплины

Цель освоения дисциплины

  • Формирование у студентов теоретических знаний и практических навыков программирования на функциональных языках
Планируемые результаты обучения

Планируемые результаты обучения

  • Знает понятия и теоретические основы лямбда-исчисления, комбинаторов, чисел Черча, систем типов, монад.
  • Умеет использовать лямбда-исчисление как язык программирования, программировать на языке Haskell, кодировать рекурсивные функции на Haskell, использовать аппликативные функторы и свертки, программировать с помощью стандартных монад, производить оптимизации с помощью правил переписывания в GHC.
  • Имеет навыки применения различных методов программирования в функциональном стиле и разработки эффективных программ на языке Haskell.
Содержание учебной дисциплины

Содержание учебной дисциплины

  • Раздел 1. Основы функционального программирования: лямбда-исчисление и комбинаторная логика
  • Раздел 2. Язык программирования Haskell: синтаксис, семантика, стандартная библиотека
  • Раздел 3. Управление эффектами с помощью аппликативных функторов и монад
  • Раздел 4. Системы типов функциональных языков
Элементы контроля

Элементы контроля

  • неблокирующий ДОМАШНЕЕ ЗАДАНИЕ ПО ТЕМЕ «ЯЗЫК HASKELL»
    Развернутый ответ на вопрос
  • неблокирующий ДОМАШНЕЕ ЗАДАНИЕ ПО ТЕМЕ «ТИПЫ ДАННЫХ»
    Решение задачи
  • неблокирующий ДОМАШНЕЕ ЗАДАНИЕ ПО ТЕМЕ «ЛЯМБДА-КАЛЬКУЛЯТОР»
    Реализация алгоритма
  • неблокирующий ДОМАШНЕЕ ЗАДАНИЕ ПО ТЕМЕ «КЛАССЫ ТИПОВ»
    Реализовать функцию
  • неблокирующий ДОМАШНЕЕ ЗАДАНИЕ ПО ТЕМЕ «СВЕРТКИ»
  • неблокирующий ДОМАШНЕЕ ЗАДАНИЕ ПО ТЕМЕ «АППЛИКАТИВНЫЕ ФУНКТОРЫ»
  • неблокирующий ДОМАШНЕЕ ЗАДАНИЕ ПО ТЕМЕ «ПАРСЕРЫ И ТРАВЕРСЫ»
  • неблокирующий ДОМАШНЕЕ ЗАДАНИЕ ПО ТЕМЕ «МОНАДЫ»
  • неблокирующий ДОМАШНЕЕ ЗАДАНИЕ ПО ТЕМЕ «СТАНДАРТНЫЕ МОНАДЫ»
  • неблокирующий ДОМАШНЕЕ ЗАДАНИЕ ПО ТЕМЕ «ТРАНСФОРМЕРЫ МОНАД»
  • неблокирующий ДОМАШНЕЕ ЗАДАНИЕ ПО ТЕМЕ «ВЫВОД ТИПОВ»
  • неблокирующий ДОМАШНЕЕ ЗАДАНИЕ ПО ТЕМЕ «РЕКУРСИВНЫЕ ТИПЫ»
  • неблокирующий ТЕСТИРОВАНИЕ
    Тест состоит из 5 вопросов со множественным выбором ответа, за каждый вопрос начисляется 2 балла
Промежуточная аттестация

Промежуточная аттестация

  • 2022/2023 учебный год 2 модуль
    0.059 * ДОМАШНЕЕ ЗАДАНИЕ ПО ТЕМЕ «ВЫВОД ТИПОВ» + 0.059 * ДОМАШНЕЕ ЗАДАНИЕ ПО ТЕМЕ «СТАНДАРТНЫЕ МОНАДЫ» + 0.058 * ДОМАШНЕЕ ЗАДАНИЕ ПО ТЕМЕ «ЛЯМБДА-КАЛЬКУЛЯТОР» + 0.058 * ДОМАШНЕЕ ЗАДАНИЕ ПО ТЕМЕ «СВЕРТКИ» + 0.3 * ТЕСТИРОВАНИЕ + 0.058 * ДОМАШНЕЕ ЗАДАНИЕ ПО ТЕМЕ «ЯЗЫК HASKELL» + 0.058 * ДОМАШНЕЕ ЗАДАНИЕ ПО ТЕМЕ «ПАРСЕРЫ И ТРАВЕРСЫ» + 0.058 * ДОМАШНЕЕ ЗАДАНИЕ ПО ТЕМЕ «КЛАССЫ ТИПОВ» + 0.059 * ДОМАШНЕЕ ЗАДАНИЕ ПО ТЕМЕ «РЕКУРСИВНЫЕ ТИПЫ» + 0.059 * ДОМАШНЕЕ ЗАДАНИЕ ПО ТЕМЕ «ТРАНСФОРМЕРЫ МОНАД» + 0.058 * ДОМАШНЕЕ ЗАДАНИЕ ПО ТЕМЕ «МОНАДЫ» + 0.058 * ДОМАШНЕЕ ЗАДАНИЕ ПО ТЕМЕ «ТИПЫ ДАННЫХ» + 0.058 * ДОМАШНЕЕ ЗАДАНИЕ ПО ТЕМЕ «АППЛИКАТИВНЫЕ ФУНКТОРЫ»
Список литературы

Список литературы

Рекомендуемая основная литература

  • Lipovača, M. (2011). Learn You a Haskell for Great Good! : A Beginner’s Guide. San Francisco, Calif: No Starch Press. Retrieved from http://search.ebscohost.com/login.aspx?direct=true&site=eds-live&db=edsebk&AN=440054
  • Курт, У. Программируй на Haskell : руководство / У. Курт , перевод с английского Я. О. Касюлевича. — Москва : ДМК Пресс, 2019. — 648 с. — ISBN 978-5-97060-694-0. — Текст : электронный // Лань : электронно-библиотечная система. — URL: https://e.lanbook.com/book/123706 (дата обращения: 00.00.0000). — Режим доступа: для авториз. пользователей.

Рекомендуемая дополнительная литература

  • Hutton, G. (2007). Programming in Haskell. Cambridge, UK: Cambridge University Press. Retrieved from http://search.ebscohost.com/login.aspx?direct=true&site=eds-live&db=edsebk&AN=206716
  • Кубенский, А. А.  Функциональное программирование : учебник и практикум для вузов / А. А. Кубенский. — Москва : Издательство Юрайт, 2021. — 348 с. — (Высшее образование). — ISBN 978-5-9916-9242-7. — Текст : электронный // Образовательная платформа Юрайт [сайт]. — URL: https://urait.ru/bcode/469863 (дата обращения: 28.08.2023).

Авторы

  • Кузнецов Антон Михайлович