- Цели и задачи дисциплины
- Преподаваемая дисциплина является средством решения специальных прикладных задач, одним из подходов к анализу предметной области и проектированию систем. Преподавание и изучение дисциплины следует рассматривать как важную составляющую профессиональной подготовки. Целью преподавания дисциплины является обучение студентов двум важным стилям программирования: функциональному и логическому, выяснение взаимосвязи математической логики и программирования, изучение теоретических основ средств декларативного программирования и основных приемов программирования систем искусственного интеллекта, а также использование этих стилей в практике программирования при разработке программных систем. Задачи дисциплины заключаются в том, чтобы ознакомить студентов с использованием функциональной и логической парадигмы для исследования и разработки математических, информационных и имитационных моделей, представления знаний в интеллектуальных системах по тематике проводимых научно-исследовательских проектов; для разработки архитектуры, алгоритмических и программных решений системного и прикладного программного обеспечения
- Краткое содержание дисциплины
- Функциональное программирование. Понятие функции. Использование функций для программирования. Отличие функционального программирования от процедурного. Списки. S-выражения. Точечная запись. Функции для обработки S-выражений. Определение рекурсивных функций. Накопительные параметры. Локальные определения. Функции высших порядков. Лямбда-выражения. Представление и выполнение функциональных программ. Виды вычислений. Карринг. Запоминание. Монады. Интерпретация и компиляция функциональных программ. Определение типа функции высшего порядка. Чистое /\-исчисление. Комбинаторная логика. Логическое программирование Логическое программирование и язык Пролог. Синтаксис Пролог-программы. Правила, структуры, атомы, операторы и списки. Арифметика в языке Пролог. Сопоставление и рекурсия - основные приемы программирования в Прологе. Работа со списками в Прологе (append, delete, member). Семантика программирования на Прологе. Отсечение и отрицание. Встроенные предикаты классификации термов. Встроенные предикаты для работы с утверждениями, структурами, ввода и вывода. Встроенные предикаты порождения решений.Отладка Пролог-программ. События CALL, EXIT, REDO и FAIL. Примеры решения задач средствами логического программирования. Логика предикатов. Логика предикатов первого порядка. Метод резолюции. Факторизация. Хорновские предложения и язык Пролог. Логическая программа. Спецификация. Вычисляемое отношение. Частичная правильность и полнота логической программы (достаточные условия). Разрешимость программы. Правильность логических алгоритмов (достаточные условия). Верификация программ. Синтез программ. Представление знаний. Искусственный интеллект. Способы представления знаний. Нечеткая логика. Принципы построения экспертных систем. Системы автоматического доказательства теорем. Эвристические алгоритмы.
- Компетенции обучающегося, формируемые в результате освоения дисциплины
- Выпускник должен обладать:
- ОПК-2 Способен использовать и адаптировать существующие математические методы и системы программирования для разработки и реализации алгоритмов решения прикладных задач
- ОПК-5 Способен разрабатывать алгоритмы и компьютерные программы, пригодные для практического применения
- Образование
- Учебный план 01.03.02, 2021, (4.0), Прикладная математика и информатика
- Функциональное и логическое программирование