• A
  • A
  • A
  • АБB
  • АБB
  • АБB
  • А
  • А
  • А
  • А
  • А
Обычная версия сайта
Бакалавриат 2022/2023

Функциональное программирование

Лучший по критерию «Новизна полученных знаний»
Статус: Курс обязательный (Прикладная математика и информатика)
Направление: 01.03.02. Прикладная математика и информатика
Когда читается: 2-й курс, 1, 2 модуль
Формат изучения: с онлайн-курсом
Онлайн-часы: 20
Охват аудитории: для всех кампусов НИУ ВШЭ
Преподаватели: Жаворонков Эдгар Андреевич, Москвин Денис Николаевич
Язык: русский
Кредиты: 3
Контактные часы: 60

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

Аннотация

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

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

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

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

  • Знает понятия и теоретические основы лямбда-исчисления, комбинаторов, чисел Черча, систем типов, монад.
  • Умеет использовать лямбда-исчисление как язык программирования, программировать на языке 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 - ISBN: 978-5-97060-694-0 - Текст электронный // ЭБС ЛАНЬ - URL: https://e.lanbook.com/book/123706

Рекомендуемая дополнительная литература

  • 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/book/funkcionalnoe-programmirovanie-469863