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

Functional Programming

2021/2022
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


Кайсин Илья Сергеевич


Podkopaev, Anton

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

Аннотация

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

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

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

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

  • Знает модели вычислений, лежащей в основе функционального программирования, способов реализации этой модели. Использует иммутабельные структуры данных, рекурсию и сопоставление с образцом при реализации алгоритмов на функциональных языках. Использует типовые аннотации и классы типов для описания интерфейсов и обеспечения статического контроля
  • Знает общие свойства базовой системы типов функциональных языков и ее расширений полиморфными и рекурсивными типами. Эффективно выбирает ленивую или энергичную стратегию вычислений. Реализует основные задачи разработки прикладного программного обеспечения в функциональной парадигме.
  • Знает основные принципы командной работы в IT сфере. Производит совместную разработку проекта. Владеет программными средствами команднопроектной деятельности.
  • Знает преимущества и недостатки функциональной парадигмы программирования. Эффективно применяет функциональное программирвоание для решения прикладных задач. Программирует на языке Haskell.
Содержание учебной дисциплины

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

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

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

  • неблокирующий Домашнее задание №1
  • неблокирующий Домашнее задание №2
  • неблокирующий Контрольная работа №1
  • блокирующий Экзамен
Промежуточная аттестация

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

  • 2021/2022 учебный год 1 модуль
  • 2021/2022 учебный год 2 модуль
    0.16 * Домашнее задание №1 + 0.16 * Домашнее задание №2 + 0.18 * Контрольная работа №1 + 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