• 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).

Авторы

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