ОТВЕТСТВЕННЫЙ РЕДАКТОР: Захарова И.Г., д.п.н., профессор.

advertisement
МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ
РОССИЙСКОЙ ФЕДЕРАЦИИ
Федеральное государственное бюджетное образовательное учреждение
высшего профессионального образования
«ТЮМЕНСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ»
Институт математики и компьютерных наук
Кафедра программного обеспечения
Пушкарев Александр Николаевич
РЕКУРСИВНО-ЛОГИЧЕСКОЕ И ФУНКЦИОНАЛЬНОЕ
ПРОГРАММИРОВАНИЕ
Учебно-методический комплекс. Рабочая программа для студентов
направления 010500.62 «Математическое обеспечение
и администрирование информационных систем», профиль подготовки:
«Технологии программирования», очная форма обучения
Тюменский государственный университет
2014
Пушкарев А.Н. Рекурсивно-логическое и функциональное
программирование. Учебно-методический комплекс. Рабочая программа
для студентов очной формы обучения, направление 010500.62
«Математическое обеспечение и администрирование информационных
систем», профиль подготовки: «Технологии программирования». Тюмень,
2014, 19 стр.
Рабочая программа составлена в соответствии с требованиями ФГОС
ВПО с учетом рекомендаций и ПрООП ВПО по направлению и профилю
подготовки.
Рабочая программа дисциплины опубликована на сайте ТюмГУ:
Рекурсивно-логическое и функциональное программирование [электронный
ресурс] / Режим доступа: http://www.umk3.utmn.ru., свободный.
Рекомендовано к изданию кафедрой программного обеспечения.
Утверждено директором Института математики и компьютерных наук.
ОТВЕТСТВЕННЫЙ РЕДАКТОР: Захарова И.Г., д.п.н., профессор.
© Тюменский государственный университет, 2014.
© Пушкарев А.Н., 2014.
2
1. Пояснительная записка:
1.1. Цели и задачи дисциплины
Целью изучения дисциплины является приобретение теоретических знаний и
выработка профессиональных навыков в области функционального и рекурсивнологического программирования. Изучение дисциплины направлено на формирование у
студентов базовых знаний теоретических основ и практических навыков в области решения
задач функционального и рекурсивно-логического программирования.
Задачей дисциплины является ознакомление с основными терминами, понятиями,
принципами и методами, применяющимися в функциональном и рекурсивно-логическом
программировании на примере языков функционального программирования Lisp, Haskell и
языка рекурсивно-логического программирования PROLOG.
1.2. Место дисциплины в структуре ООП бакалавриата
Дисциплина «Рекурсивно-логическое и функциональное программирование» входит
в цикл профессиональных дисциплин вариативной части Федерального государственного
образовательного стандарта высшего профессионального образования (ФГОС ВПО) по
направлению «Математическое обеспечение и администрирование информационных
систем»
Дисциплина
«Рекурсивно-логическое
и
функциональное
программирование»
базируется на знаниях, полученных в ходе изучения дисциплин «Структуры и алгоритмы
компьютерной обработки данных», «Технологии разработки программного обеспечения»,
входящими в цикл профессиональных дисциплин базовой части ФГОС ВПО по
направлению «Математическое обеспечение и администрирование информационных
систем»
1.3. Компетенции выпускника ООП бакалавриата, формируемые в результате
освоения данной ООП ВПО.
В результате освоения ООП бакалавриата выпускник должен обладать следующими
компетенциями:ОК 6. исследовательские навыки; ОК 7. способность учиться; ПК 22 знать
принципы обеспечения условий безопасности жизнедеятельности при эксплуатации
аппаратуры и систем различного назначения; ПК 23 знать проблемы и направления развития
технологий программирования; ПК 24 знать основные методы и средства автоматизации
проектирования, производства, испытаний и оценки качества программного обеспечения;
ПК 25 знать направления развития компьютеров с традиционной (нетрадиционной)
архитектурой; тенденции развития функций и архитектур проблемно-ориентированных
программных систем и комплексов; ПК 26 знать проблемы и тенденции развития рынка
3
программного
обеспечения;
ПК
27
знать
основные
концептуальные
положения
функционального, логического, объектно-ориентированного и визуального направлений
программирования, методы, способы и средства разработки программ в рамках этих
направлений; ПК 28 знать методы проектирования и производства программного продукта,
принципы построения, структуры и приемы работы с инструментальными средствами,
поддерживающими создание программного обеспечения ; ПК 29 знать методы организации
работы в коллективах разработчиков ПО, направления развития методов и программных
средств
коллективной
разработки
ПО;
ПК
30
знать
архитектуру,
алгоритмы
функционирования систем реального времени и методы проектирования их программного
обеспечения; ПК 31 иметь навыки использования современных системных программных
средств: операционных систем, операционных и сетевых оболочек, сервисных программ; ПК
32 иметь навыки использования метода системного моделирования при исследовании и
проектировании программных систем; ПК 33 иметь навыки разработки моделирующих
алгоритмов и реализации их на базе языков и пакетов прикладных программ моделирования;
ПК 34 иметь навыки использования основных моделей информационных технологий и
способов их применения для решения задач в предметных областях; ПК 35 иметь навыки
выбора архитектуры и комплексирования современных компьютеров, систем, комплексов и
сетей системного администрирования; ПК 36 иметь навыки выбора, проектирования,
реализации, оценки качества и анализа эффективности программного обеспечения для
решения задач в различных предметных областях.
В результате освоения дисциплины обучающийся должен:
 Знать:
основные
понятия
и
принципы
логического
и
функционального
программирования
 Уметь: разрабатывать программы на языках функционального программирования Lisp,
Haskell и языка рекурсивно-логического программирования PROLOG
 Владеть: математическим аппаратом лямбда-исчислений Черча и теории рекурсивных
функций, аппаратом математической логики с использованием математических
принципов резолюций
2.
Структура и трудоемкость дисциплины.
Семестр 8. Форма промежуточной аттестации: зачет. Общая трудоемкость дисциплины
составляет 2 зачетные единицы, 72 часа.
3.
Тематический план.
Таблица 1.
Тематический план
4
1.
2.
1.
2
3
1.
2.
4
6
7
8
5
Из них в
интерактивной форме
Итого часов по теме
3
Самостоятельн
ая работа*
2
Модуль 1
Классификация парадигм
программирования
Декларативная парадигма
программирования
Всего
Модуль 2
История развития функционального
программирования
Язык функционального
программирования Lisp
Язык функционального
программирования Haskell
Всего
Модуль 3
История развития рекурсивно –
логического программирования
Язык рекурсивно –логического
программирования Prolog
Всего
Итого (часов, баллов):
Из них в интерактивной форме
Лабораторные
занятия*
1
Семинарские
(практические)
занятия*
Тема
Виды учебной работы и
самостоятельная работа, в час.
Лекции*
недели семестра
№
Итого
колич
ество
баллов
9
4
4
1
8
3
0-10
4
4
1
10
3
0-20
8
8
2
18
6
0-30
4
4
1
8
2
0-10
4
4
2
12
2
0-15
4
4
2
12
2
0-15
12
12
5
32
6
0-40
4
4
3
11
2
0-10
6
6
2
10
2
0-29
10
30
10
30
10
5
12
6
21
72
4
0-30
0-100
16
Таблица 2.
Модуль 1
1.
2.
Всего
Модуль 2
1.
программы
компьютерног
о тестирования
комплексные
ситуационные
задания
электронные
практикум
другие формы
реферат
Информац
ионные
системы и
технологи
и
0-10
0 – 10
0 – 20
0-30
0-10
0-10
0-20
5
Технические
формы
контроля
эссе
Письменные работы
ответ на
семинаре
лабораторная
работа
контрольная
работа
тест
собеседование
Устный опрос
коллоквиумы
№ темы
Итого количество баллов
Виды и формы оценочных средств в период текущего контроля
0-15
2.
3
Всего
Модуль 3
1.
2.
Всего
Итого
0-15
0-15
0-40
0-15
0-10
0-10
0-20
0-30
0 – 100
0-20
Таблица 3.
Планирование самостоятельной работы студентов
№
Модули и темы
Модуль 1
1.1
Классификация парадигм
программирования
1.2
Декларативная парадигма
программирования
Виды СРС
обязательные
дополнительные
Проработка
лекций, работа с
литературой,
подготовка
реферата
Неделя
семестра
Объем
часов
Кол-во
баллов
1-2
1
0-10
3-4
1
Всего по модулю 1:
Модуль 2
2.1
История развития
функционального
программирования
2.2
Язык функционального
программирования Lisp
2.3
Язык функционального
программирования Haskell
Проработка
лекций, работа с
литературой
2
0-10
5-6
1
0-10
7-8
2
9-10
2
Всего по модулю 2:
Модуль 3
3.1
История развития рекурсивно
3.2
–логического
программирования
Язык рекурсивно –
логического
программирования Prolog
Проработка
лекций, работа с
литературой,
подготовка
реферата
Всего по модулю 3:
ИТОГО:
4.
5
0-10
11-12
3
0-10
13-14
2
5
12
0-10
0-30
Разделы дисциплины и междисциплинарные связи с обеспечиваемыми
(последующими) дисциплинами
Дисциплина не является обеспечивающей, изучается в 8 (завершающем) семестре.
5.
Содержание дисциплины.
Модуль 1.
Тема 1.1. Классификация парадигм программирования.
6
Парадигмы программирования. Классификация языков программирования. Основные
различия между императивной и декларативной парадигмами.
Тема
1.2.
Декларативная
парадигма
программирования.
Функциональная,
резолюционная и продукционная парадигмы как примеры группы декларативных парадигм.
Модуль 2
Тема 2.1. История развития функционального программирования.
Индуктивный вывод. Математическая индукция. Лямба – исчисление. Теория
рекурсивных функций. Сравнение лямба - исчисления и машины Тьюринга. Создание
первых функциональных языков, их предназначение. Современное применение языков
функционального программирования. Абстрактный функциональный язык. Основные
свойства языков функционального программирования.
Тема 2.2. Язык функционального программирования Lisp.
Интерпретатор Lisp. Атомы, списки. Стандартные функции, оперирующие с числами,
выражения с функциями.
Логические
значения,
предикаты,
Функции, их определение и вызов, параметры функции.
условные
Функции
для
выражения.
работы
со
списками. Рекурсивные функции. Библиотека стандартных функций.
Тема 2.3. Язык функционального программирования Haskell.
Интерпретатор
Huskell.
Стандарт
языка
Haskell
98.
Понятие
чистого
функционального языка программирования. Синтаксические отличия Haskell и Lisp.
Стандартные функции Haskell. Функции, их определение и вызов, параметры функции.
Сопоставление с образцом. Функции для работы со списками. Рекурсивные функции
в языке Haskell.
Модуль 3
Тема 3.1. История развития рекурсивно –логического программирования.
Область применения языков рекурсивно- логического программирования. Понятие
экспертной системы. Представление знаний и логические программы. Разработка
программ в области искусственного интеллекта. Основные этапы развития и современное
состояние языков рекурсивно –логического программирования.
Тема 3.2. Язык рекурсивно –логического программирования Prolog.
Константы, переменные, логические формулы, предикаты. Логическое следствие и
логический вывод. Общая резолюция сверху вниз. Подстановка. Унификация. Логическая
программа. Целевое утверждение. Стратегия управления в логической программе.
Ветвление, итерация, рекурсия. Предложения в виде фактов. Примеры программ. Списки
в языке Пролог. Средства работы со списками.
7
6.
Планы семинарских занятий.
Не предусмотрены.
7.
Темы лабораторных работ (Лабораторный практикум).
Тема 1.2 .Разработка программ в декларативном стиле в процедурном языке
программирования.
Тема 2.2 . Лямбда-выражение и специальная форма DEFUN. Простые и условные формы.
Рекурсивное определение функции. Алгоритм сортировки слиянием на языке Lisp.
Тема 2.3. Алгоритм «быстрой» сортировки на языке Haskell. Передача параметров и
область их действия.
Тема 3.2. Разработка простых логических программ. Алгоритм сортировки слиянием на
языке Пролог.
8.
Примерная тематика курсовых работ
Не предусмотрены
9.
Учебно - методическое обеспечение самостоятельной работы студентов.
Оценочные
средства
для
текущего
контроля
успеваемости,
промежуточной
аттестации по итогам освоения дисциплины (модуля).
Примерные темы рефератов:
 История формирования понятия "алгоритм".
 Известнейшие алгоритмы в истории математики.
 Проблема существования алгоритмов в математике.
 Средства и языки описания (представления) алгоритмов.
 Методы разработки алгоритмов.
 Формализация понятия алгоритм.
 Проблема алгоритмической разрешимости в математике.
 Основатели теории алгоритмов - Клини, Черч, Пост, Тьюринг.
 Основные определения и теоремы теории рекурсивных функций.
 Тезис Черча.
 Проблемы вычислимости в математической логике.
 Машина Поста.
 Машина Тьюринга.
 Нормальные алгоритмы Маркова и ассоциативные исчисления в исследованиях по
искусственному интеллекту.
 Парадигма логического программирования — альтернатива процедурному и
функциональному программированию.
8
 Пролог и продукционное представление знаний.
 Прикладная логика предикатов 1-го порядка и фразы Хорна.
 Логическая природа решения задач на Прологе.
 Примеры баз знаний на Прологе.
 Моделирование интеллектуальной деятельности человека и Пролог.
 Рекурсия — основной метод программирования на Прологе.
 Управление логическим выводом. Отсечение.
 Списки и структуры в решении логических задач.
 Эволюция систем программирования на Прологе.
Вопросы к зачету:
 Основные понятия функционального программирования. Области применения
функционального программирования.
 Индуктивный вывод. Математическая индукция.
 Определение индуктивного вывода с использованием: множества правил объектов
вывода, метода представления правил, способа показа примеров, метода вывода,
критерий правильности вывода.
 Рекурсия. Определение рекурсии. Виды рекурсии: параллельная, взаимная,
иерархическая.
 λ-исчисление. Редукция. Соответствие между вычислениями функциональных
программ и редукцией.
 Использование списков. Использование списочных структур.
 Рекурсивно-логическое программирование. Области применения.
 Особенности логического программирования по сравнению с традиционным
программированием.
 Синтаксис и семантика Пролог – программ.
 Объекты данных.
 Структурные объекты.
 Унификация и конкретизация переменных.
 Декларативный смысл Пролог - программ. Процедурная семантика.
 Списки, операторы, арифметика в языке логического программирования.
 Ограничение перебора (отсечение).
 Встроенные предикаты для ввода/вывода и форматирования объектов данных

Согласование процедурного и декларативного стиля при составлении программы
Пролог.
9
10.
Образовательные технологии.
а) аудиторные занятия:
 лекционные
и
практические
занятия;
на
практических
занятиях
контроль
осуществляется в форме проверки лабораторных работ в виде компьютерных
программ (исходных текстов и результатов работы на контрольных примерах);
б) активные и интерактивные формы
 компьютерное моделирование и анализ результатов при выполнении лабораторных
работ
в) внеаудиторные занятия:
 самостоятельная работа; контроль осуществляется в форме защиты рефератов;
 индивидуальные консультации.
11.
Учебно-методическое и информационное обеспечение дисциплины (модуля).
11.1. Основная литература:

Городняя Л. В.Основы функционального программирования : курс лекций :
учеб. пособие для студ. вузов, обуч. по спец. 351400 "Прикладная
информатика"/
Л.
В.
Городняя.
-Москва:
Интернет-Университет
Информационных технологий, 2004.

Пантелеев Е. Р.Логическое программирование : учеб. пособие для вузов/ Е. Р.
Пантелеев, Д. А. Куликов. -Иваново: Изд-во Иванов. гос. энергет. ун-т, 2000.

Алексеев В. Е.Графы и алгоритмы. Структуры данных. Модели вычислений :
учеб. для студ., обуч. по спец. 510200 "Прикладная математика и
информатика"/ В. Е. Алексеев, В. А. Таланов. -Москва: БИНОМ. Лаборатория
знаний: Интернет-Университет Информационных Технологий, 2006.
11.2. Дополнительная литература:
Не требуется.
11.3. Программное обеспечение и Интернет – ресурсы:
Интерпретаторы
языков
функционального
и
рекурсивно-логического
программирования Lisp, Haskell, Prolog.
12.
Технические средства и материально-техническое обеспечение дисциплины
(модуля).
Учебные аудитории для проведения лекционных занятий, оснащенные мультимедийным
оборудованием. Компьютерные классы с установленными интерпретаторами языков
функционального и рекурсивно-логического программирования.
10
Download