Бакалавриат
2023/2024
Функциональное программирование
Статус:
Курс обязательный (Программная инженерия (очно-заочное обучение))
Направление:
09.03.04. Программная инженерия
Когда читается:
3-й курс, 3, 4 модуль
Формат изучения:
без онлайн-курса
Охват аудитории:
для своего кампуса
Преподаватели:
Маслова Екатерина Александровна
Язык:
русский
Кредиты:
3
Контактные часы:
32
Программа дисциплины
Аннотация
Настоящая дисциплина относится к профессиональному циклу, дисциплинам базовой части профиля. Для специализации «Распределенные системы» настоящая дисциплина является базовой. Изучение данной дисциплины базируется на знании курса “Сложность вычислений и логика в теоретической информатике”.
Цель освоения дисциплины
- Освоение теоретической базы функционального программирования (начала теории типов, лямбда-исчисление, начала теории категорий).
- Овладение техникой программирования на языке Haskell.
Планируемые результаты обучения
- Студент владеет общей информацией об императивном и функциональном стилях программирования, их сильных и слабых сторонах, умеет выбирать правильный стиль в зависимости от задачи.
- Студент знает теоретические основы функционального программирования (лямбда-исчисление, начала теории категорий и проч.).
- Студент разрабатывает новые библиотеки на языке Haskell.
- Студент решает задачи на программирование на языке Haskell.
- Студент создает код на функциональном языке, корректность которого формально доказана (верифицирована).
Содержание учебной дисциплины
- Типизованное лямбда-исчисление
- Нормализуемость и конфлюэнтность
- Императивное и функциональное программирование. Элементы функционального программирования в императивных языках
- Язык и среда разработки Haskell: установка и настройка
- Основы программирования на языке Haskell
- Типы данных в Haskell
- "Ленивые" и "ретивые" вычисления
- Монады и их использование для ввода-вывода
- Соответствие Карри - Говарда. Верификация программ и математических утверждений. Система Coq
Элементы контроля
- Аудиторная работаПреподаватель оценивает работу студентов на лекциях и семинарах, а также самостоятельную работу, выставляя баллы за активность в аудитории и контрольную работу. Оценки за все виды работ выставляются в рабочей электронной ведомости.
- Экзаменвысшая оценка в 9 баллов (10 баллов только в исключительных случаях) проставляется при полностью правильных ответах на вопросы и отличном выполнении заданий (правильном решении задачи, чётком и исчерпывающем её представлении); почти отличная оценка в 8 баллов проставляется при полностью правильных ответах на вопросы и отличном выполнении заданий, но при отсутствии чёткого и исчерпывающего представления решаемой задачи; оценка в 7 баллов проставляется при правильных ответах на вопросы и правильном решении задачи, но при наличии отдельных неточностей в ответах на вопросы; оценка в 6 баллов проставляется при наличии отдельных неточностей в ответах на вопросы (включая грамматические ошибки) или неточностях в решении задачи непринципиального характера (описки и случайные ошибки); оценка в 5 баллов проставляется в случаях, когда в ответах на вопросы и в решении задачи имеются неточности и ошибки, свидетельствующие о недостаточном понимании изучаемой дисциплины и требующие дополнительного обращения к учебным материалам; оценка в 4 балла проставляется при наличии серьёзных ошибок в ответах на вопросы и в решении задачи, что свидетельствует о наличии пробелов в знании изучаемой дисциплины; оценка в 3 балла проставляется при наличии лишь отдельных положительных моментов в ответах на вопросы и в решении задач, говорящих лишь о потенциальной возможности в последующем более успешного выполнения заданий; оценка в 3 балла, как правило, ведёт к повторному решению дополнительной задачи; оценка в 2 балла проставляется при полном отсутствии положительных моментов в ответах на вопросы и в решении задачи и, как правило, ведёт к повторному написанию контрольной работы в целом; оценка в 1 балл проставляется в тех случаях, когда наряду с неправильными ответами на вопросы и решением задачи имеют место какие-либо демонстративные проявления безграмотности или неэтичное отношение к изучаемой дисциплине.
Промежуточная аттестация
- 2023/2024 учебный год 4 модуль0.1 * Аудиторная работа + 0.1 * Аудиторная работа + 0.4 * Экзамен + 0.4 * Экзамен
Список литературы
Рекомендуемая основная литература
- Barendregt, H., Dekkers, W., Statman, R. Lambda calculus with types. – Cambridge University Press, 2013. – 856 pp.
Рекомендуемая дополнительная литература
- Lipovaca M. Learn you a Haskell for great good!: a beginner's guide. – No Starch Press, 2011. – 404 pp.