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

Functional and Logic Programming

2019/2020
Academic Year
RUS
Instruction in Russian
5
ECTS credits
Delivered at:
Department of Information Technologies in Business (Faculty of Economics, Management, and Business Informatics)
Course type:
Elective course
When:
3 year, 1, 2 module

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

Аннотация

Настоящая программа учебной дисциплины устанавливает требования к образовательным результатам и результатам обучения студента и определяет содержание и виды учебных занятий и отчетности. Программа предназначена для преподавателей, ведущих дисциплину «Функциональное и логическое программирование», учебных ассистентов и студентов направления подготовки 09.03.04 Программная инженерия, обучающихся по образовательной программе «Программная инженерия».
Цель освоения дисциплины

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

  • Целями освоения дисциплины «Функциональное и логическое программирование» являются изучение декларативных языков программирования и математических принципов, лежащих в основе функциональных и логических языков.
Планируемые результаты обучения

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

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

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

  • Раздел 1. Основные парадигмы программирования
    Тема 1. Императивное программирование. Традиционное программирование и логика Хоара. Обзор метода Дейкстры. Тестирование программ и их правильность. Понятие процедурного, функционального и логического программирования, их сравнительный анализ. Соответствие между функциональными и императивными программами. Реализация рекурсии, циклов, переменных. Тема 2. Декларативное программирование Математические методы, применяемые в декларативном программировании. Реализация математических формализмов в декларативном программировании. Управление памятью в декларативных программах. Вычислительный процесс в декларативных программах. Смешение декларативного и императивного стилей
  • Раздел 2 Функциональное программирование
    Тема 3. Математические основы функционального программирования. Запись функций в лямбда-нотации. Понятие лямбда-терма. Правила вывода в лямбда исчислении. Альфа-конверсия. Бета-редукция. Теорема Чёрча-Россера. Каррирование. Типизированное лямбда-исчисление. Синтаксис S-выражения. Запись списков с помощью S-выражений. Основные операции со списками. Формирование списков. Точечная запись S-выражений. Свободные и связанные переменные в лямбда-терме. Понятие комбинатора. Основные комбинаторы. Нумерация Чёрча. Комбинатор упорядоченной пары. Комбинатор примитивной рекурсии. Способы задания алгорифмов Маркова. Порядок выполнения правил и завершение алгорифмов Маркова. Тема 4. Функциональные языки Синтаксис Лиспа. Лямбда-выражения в Лиспе. Способы организации рекурсии. Функции высших порядков. Clisp. Scheme. Трансляторы Хаскелла. GHC. HUGS. Реализация комбинаторов в Хаскелле. Ленивые вычиления. Монады. Задание прототипов функций. Реализация нормальных алгорифмов Маркова в Рефале. Способы задания функций Рефала. Основные приемы программирования на Рефале.
  • Раздел 3 Логическое программирование
    Тема 5. Математические основы логического программирования. Виды продукционных систем. Способы задания продукционных систем. Правило вывода. Аксиоматические теории первого порядка. Понятие предиката. Аксиомы. Предваренная нормальная форма. Получение дизъюнкта. Сколемизация. Унификация. Получение резольвенты. Тема 6. Логические языки Хорновская логическая программа. Задание фактов в Прологе. Задание аксиом в Прологе. Обработка списков на Прологе. Задание баз данных на Прологе. Программирование синтаксического анализатора на Прологе. Программирование в ограничениях
Элементы контроля

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

  • неблокирующий Домашнее задание
  • неблокирующий Самостоятельная работа
    Прохождение курсов: https://openedu.ru/course/ITMOUniversity/FPBC
  • неблокирующий Письменный экзамен
Промежуточная аттестация

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

  • Промежуточная аттестация (2 модуль)
    0.3 * Домашнее задание + 0.4 * Письменный экзамен + 0.3 * Самостоятельная работа
Список литературы

Список литературы

Рекомендуемая основная литература

  • Зыков, С. В. Программирование. Функциональный подход : учебник и практикум для академического бакалавриата / С. В. Зыков. — М. : Издательство Юрайт, 2016. — 164 с. [Электронный ресурс] URL: https://www.biblio-online.ru/book/programmirovanie-funkcionalnyy-podhod-394030

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

  • Иванов, В. М. Интеллектуальные системы : учеб. пособие для вузов / В. М. Иванов ; под науч. ред. А. Н. Сесекина. — М. : Издательство Юрайт, 2016. — 91 с. —[Электронный ресурс] URL: https://www.biblio-online.ru/book/intellektualnye-sistemy-397757
  • Математическая логика: Учебное пособие / Игошин В.И. - М.:НИЦ ИНФРА-М, 2016. - 399 с.: 60x90 1/16. - (Высшее образование: Бакалавриат) (Переплёт) ISBN 978-5-16-011691-4 - Режим доступа: http://znanium.com/catalog/product/539674