Бакалавриат
2022/2023
Функциональное программирование
Лучший по критерию «Новизна полученных знаний»
Статус:
Курс обязательный (Программная инженерия)
Направление:
09.03.04. Программная инженерия
Когда читается:
3-й курс, 1, 2 модуль
Формат изучения:
без онлайн-курса
Охват аудитории:
для своего кампуса
Язык:
русский
Кредиты:
5
Контактные часы:
64
Программа дисциплины
Аннотация
Курс позволяет раскрыть основы функционального и логического программирования, структуры языков, его синтаксис и семантические конструкции, основные тенденции развития функционального программирования в рамках проектирования современных автоматизированных систем, решений, выполненных при использовании функциональных и логических языков программирования. Также раскрываются основные принципы формирования проектных решений для решения задач искусственного интеллекта. Для освоения дисциплины студентам необходимы знания основ программирования и алгебры. Курс реализуется с использованием онлайн-курса «Функциональное программирование на языке 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).