2024/2025
Функциональное программирование
Статус:
Маго-лего
Кто читает:
Департамент информатики
Когда читается:
1, 2 модуль
Охват аудитории:
для всех кампусов НИУ ВШЭ
Преподаватели:
Радько Степан Владимирович
Язык:
русский
Кредиты:
6
Программа дисциплины
Аннотация
Курс позволяет раскрыть основы функционального и логического программирования, структуры языков, его синтаксис и семантические конструкции, основные тенденции развития функционального программирования в рамках проектирования современных автоматизированных систем, решений, выполненных при использовании функциональных и логических языков программирования. Также раскрываются основные принципы формирования проектных решений для решения задач искусственного интеллекта. Для освоения дисциплины студентам необходимы знания основ программирования и алгебры. Курс реализуется с использованием онлайн-курса «Функциональное программирование на языке Haskell» на платформе Stepik.
Цель освоения дисциплины
- Формирование у студентов теоретических знаний и практических навыков программирования на функциональных языках
Планируемые результаты обучения
- Знает понятия и теоретические основы лямбда-исчисления, комбинаторов, чисел Черча, систем типов, монад.
- Умеет использовать лямбда-исчисление как язык программирования, программировать на языке Haskell, кодировать рекурсивные функции на Haskell, использовать аппликативные функторы и свертки, программировать с помощью стандартных монад, производить оптимизации с помощью правил переписывания в GHC.
- Имеет навыки применения различных методов программирования в функциональном стиле и разработки эффективных программ на языке Haskell.
Содержание учебной дисциплины
- Раздел 1. Основы функционального программирования: лямбда-исчисление и комбинаторная логика
- Раздел 2. Язык программирования Haskell: синтаксис, семантика, стандартная библиотека
- Раздел 3. Управление эффектами с помощью аппликативных функторов и монад
- Раздел 4. Системы типов функциональных языков
Элементы контроля
- Домашнее задание №2Домашнее задание №2 представляет собой решение задач. Решения задач обучающиеся представляют в виде кода на языке Haskell. Сроки предоставления решений составляют две недели с момента выдачи задания.
- Домашнее задание №1Домашнее задание №1 представляет собой решение задач. Решения задач обучающиеся представляют в электронном виде, в любом из стандартных открытых форматов данных. Сроки предоставления решения составляют две недели с момента получения задания.
- Контрольная работаКонтрольная работа проводится в формате тестирования. Время, отводимое на выполнение теста, составляет 90 минут. Тест состоит из 5 вопросов по всем пройденным темам, по каждой из тем обучающемуся выводятся пять утверждений, среди которых он должен отметить верные. За каждую из тем обучающийся получает 2 балла при правильном выборе всех верных утверждений с первой попытки. Если при первой попытке это условие было нарушено, то можно осуществлять повторные попытки, до тех пор, пока указанный результат не будет достигнут. При этом баллы за задание рассчитываются по формуле 2/N, где N – число попыток.
- ЭкзаменТеоретическая часть формируется по одному вопросу из первой (теория) и второй (язык Haskell) части перечня вопросов к экзамену. На подготовку ответа выделяется 2,5 часа.
Промежуточная аттестация
- 2024/2025 2nd moduleПреподаватель учитывает оценку за текущий контроль (домашние задания). Онакопленная = (Од/з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 (дата обращения: 27.08.2024).