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

ТРУДОЕМКОСТЬ ДИСЦИПЛИНЫ
Общая трудоемкость дисциплины составляет 5 ЗЕТ (180 час.).

ЦЕЛИ И ЗАДАЧИ ДИСЦИПЛИНЫ
Дисциплина «Функциональное и логическое программирование» читается студентам по направлению подготовки бакалавров 230100.62 – «Информатика и вычислительная техника» в седьмом семестре, предусматривает чтение лекций, проведение практических и лабораторных работ, получение различного рода консультаций. Целью дисциплины является формирование у студентов профессиональных знаний и практических навыков по разработке и созданию моделей с помощью языков функционального и логического программирования.

МЕСТО ДИСЦИПЛИНЫ В СТРУКТУРЕ ООП
Дисциплина «Функциональное и логическое программирование» относится к числу дисциплин профессионального цикла (вариативной части) по выбору. Для эффективного освоения дисциплины студент должен знать основные положения дисциплин: "Математика", "Математическая логика и теория алгоритмов", "Программирование", "Структуры и алгоритмы обработки данных на ЭВМ". Знания и навыки, полученные при ее изучении, используются в последующих дисциплинах профессионального цикла «Системы искусственного интеллекта».

ТРЕБОВАНИЯ К УРОВНЮ ОСВОЕНИЯ ДИСЦИПЛИНЫ
Процесс изучения дисциплины направлен на формирование следующих общекультурных (ОК), профессиональных компетенций (ПК):

  1. осознает социальную значимость своей будущей профессии, обладает высокой мотивацией к выполнению профессиональной деятельности (ОК-8);
  2. использует основные законы естественнонаучных дисциплин в профессиональной деятельности, применяет методы математического анализа и моделирования, теоретического и экспериментального исследования (ОК-10);
  3. осваивать методики использования программных средств для решения практических задач (ПК-2);
  4. разрабатывать модели компонентов информационных систем, включая модели баз данных (ПК-4);
  5. разрабатывать компоненты программных комплексов и баз данных, использовать современные инструментальные средства и технологии программирования (ПК-5).
В результате изучения дисциплины студент должен:

Знать:
  1. Языки функционального и логического программирования;
  2. Основные методы и средства эффективной разработки программного продукта;
  3. Типовые роли в процессе разработки программного обеспечения;
  4. Методологии разработки программного обеспечения;
  5. Математические основы лямбда-исчисления, предикатов первого порядка.
Уметь:
  1. Использовать методы и технологии разработки для генерации исполняемого кода;
  2. Анализировать поставленные задачи, разрабатывать алгоритмы, представлять знания для решения поставленных задач;
  3. Разрабатывать модели различных классов систем с применением языков функционального и логического программирования;
  4. Программировать на языках Лисп и Пролог.
Владеть:
  1. Основными методологиями процессов разработки программного обеспечения;
  2. Математическим аппаратом, применяемым в функциональном и логическом программировании;
  3. Языками Лисп и Пролог для построения моделей искусственного интеллекта.

СОДЕРЖАНИЕ ДИСЦИПЛИНЫ. ОСНОВНЫЕ РАЗДЕЛЫ

  1. Тема 1. Функциональное программирование. Функция как «черный ящик». Понятие функциональности.
  2. Тема 2. Основы языка Лисп. Символы и списки. Константы и переменные. Построение списков из атомов и подсписков. Различные интерпретации списка. Понятие функции.
  3. Тема 3. Базовые функции в Лиспе. Основные функции обработки списков. Внутреннее представление списков в Лиспе. Указатели. Логическое и физическое равенство.
  4. Тема 4. Математические основы Лиспа. Лямбда-исчисление. Порядок редукция и нормальные формы. Лямбда-выражение в Лиспе.
  5. Тема 5. Рекурсия в Лиспе. Формы рекурсии: простая, взаимная, параллельное ветвление, рекурсия более высокого порядка.
  6. Тема 6. Функционалы в Лиспе. Замыкания. Абстрагирование вычислений. Автофункции.
  7. Тема 7. Логическое программирование. Метод резолюций. Унификация. Применение метода резолюция для ответа на вопросы.
  8. Тема 8. Основы языка Пролог. Символы и списки. Константы и переменные. Синтаксис.
  9. Тема 9. Порядок предложений и целей. Процедурная и декларативная семантика Пролога.
  10. Тема 10. Ограничения перебора. Примеры, использующие отсечение. Отрицание как неудача.
  11. Тема 11. Внелогические предикаты: доступ к программам и обработка программ.
  12. Тема 12. Метапрограммирование. Модификация синтаксиса.

ВИДЫ УЧЕБНОЙ РАБОТЫ
Лекции -18 часов, лабораторная работа – 36 часов, практическая работа - 18 часов, самостоятельная работа: 72 часа.

ФОРМА АТТЕСТАЦИИ ПО ДИСЦИПЛИНЕ
Изучение дисциплины заканчивается экзаменом (7 семестр).