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

Functional Programming

2022/2023
Academic Year
RUS
Instruction in Russian
3
ECTS credits
Delivered at:
Department of Informatics
Course type:
Compulsory course
When:
2 year, 1, 2 module

Instructors


Жаворонков Эдгар Андреевич

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

Аннотация

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

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

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

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

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

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

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

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

  • неблокирующий Домашнее задание №1
    Домашнее задание №1 представляет собой решение задач. Решения задач обучающиеся представляют в электронном виде, в любом из стандартных открытых форматов данных. Сроки предоставления решения составляют две недели с момента получения задания.
  • неблокирующий Домашнее задание №2
    Домашнее задание №2 представляет собой решение задач. Решения задач обучающиеся представляют в виде кода на языке Haskell. Сроки предоставления решений составляют две недели с момента выдачи задания.
  • неблокирующий Контрольная работа
    Контрольная работа проводится в формате тестирования. Время, отводимое на выполнение теста, составляет 90 минут. Тест состоит из 5 вопросов по всем пройденным темам, по каждой из тем обучающемуся выводятся пять утверждений, среди которых он должен отметить верные. За каждую из тем обучающийся получает 2 балла при правильном выборе всех верных утверждений с первой попытки. Если при первой попытке это условие было нарушено, то можно осуществлять повторные попытки, до тех пор, пока указанный результат не будет достигнут. При этом баллы за задание рассчитываются по формуле 2/N, где N – число попыток.
  • блокирующий Экзамен
    Теоретическая часть формируется по одному вопросу из первой (теория) и второй (язык Haskell) части перечня вопросов к экзамену. На подготовку ответа выделяется 2,5 часа.
Промежуточная аттестация

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

  • 2022/2023 учебный год 2 модуль
    Преподаватель учитывает оценку за текущий контроль (домашние задания). Онакопленная = (Од/з1 + Од/з2 +Ок/р)/3 Результирующая оценка за дисциплину рассчитывается следующим образом: ОРезультирующая = 0,5Онакопленная + 0,5Оэкзамен
Список литературы

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

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

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