МИНОБРНАУКИ РОССИИ
федеральное государственное бюджетное образовательное учреждение высшего образования
«Алтайский государственный университет»

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

рабочая программа дисциплины
Закреплена за кафедройКафедра информатики
Направление подготовки02.03.02. Фундаментальная информатика и информационные технологии
Форма обученияОчная
Общая трудоемкость3 ЗЕТ
Учебный план02_03_02_ФИиИТ-2-2019
Часов по учебному плану 108
в том числе:
аудиторные занятия 52
самостоятельная работа 56
Виды контроля по семестрам
зачеты: 6

Распределение часов по семестрам

Курс (семестр) 3 (6) Итого
Недель 19
Вид занятий УПРПДУПРПД
Лекции 18 18 18 18
Лабораторные 34 34 34 34
Сам. работа 56 56 56 56
Итого 108 108 108 108

Программу составил(и):
к.ф.-м.н., доцент, Половикова Ольга Николаевна

Рецензент(ы):
к.ф.-м.н., доцент, Вараксин Сергей Владимирович

Рабочая программа дисциплины
Функциональное и логическое программирование

разработана в соответствии с ФГОС:
Федеральный государственный образовательный стандарт высшего образования по направлению подготовки 02.03.02 Фундаментальная информатика и информационные технологии 12.03.2015 № 224

составлена на основании учебного плана:
02.03.02 Фундаментальная информатика и информационные технологии
утвержденного учёным советом вуза от 25.06.2019 протокол № 9.

Рабочая программа одобрена на заседании кафедры
Кафедра информатики

Протокол от 22.06.2019 г. № 8
Срок действия программы: 2019-2020 уч. г.

Заведующий кафедрой
к.ф.-м.н., доцент Жариков


Визирование РПД для исполнения в очередном учебном году

Рабочая программа пересмотрена, обсуждена и одобрена для
исполнения в 2019-2020 учебном году на заседании кафедры

Кафедра информатики

Протокол от 22.06.2019 г. № 8
Заведующий кафедрой к.ф.-м.н., доцент Жариков


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

1.1.Целями освоения дисциплины являются:
изучение декларативного логического и функционального подхода программирования;
изучение способов и механизмов управления данными;
Изучение дисциплины направлено:
на формирование у студентов необходимую теоретическую базу и практические навыки для создания программных продуктов с использованием одного или нескольких языков программирования;
на формирование навыков реализации алгоритмов на высокоуровневом декларативном языке программирования; разработки, отладки и тестирования программ;
на подготовку обучающихся к системному восприятию дальнейших дисциплин из учебного плана, использующих навыки алгоритмизации и декларативного программирования;
на получение представлений об основных идеях декларативного программирования и развитие способностей сознательно использовать материал курса, умение разбираться в существующих языковых и программных средствах и условиях их применения.

2. Место дисциплины в структуре ООП

Цикл (раздел) ООП: Б1.В

3. Компетенции обучающегося, формируемые в результате освоения дисциплины

ОПК-3 способностью к разработке алгоритмических и программных решений в области системного и прикладного программирования, математических, информационных и имитационных моделей, созданию информационных ресурсов глобальных сетей, образовательного контента, прикладных баз данных, тестов и средств тестирования систем и средств на соответствие стандартам и исходным требованиям
ПК-3 способностью использовать современные инструментальные и вычислительные средства
В результате освоения дисциплины обучающийся должен
3.1.Знать:
3.1.1.о различных парадигмах программирования и современном уровне развития языков и технологий программирования;
о декларативном подходе программирования;
о принципах логического и функционального программирования;
основные управляющие конструкции декларативных языков программирования;
элементы теории рекурсивных функций;
синтаксис и базовые конструкции языка Prolog, Lisp.
терминологию (понятийный аппарат) анализа, проектирования, программирования и тестирования программных систем;
этапы и стадии разработки программных продуктов;
3.2.Уметь:
3.2.1.выполнять анализ предметной области с целью выявления основных сущностей, их свойств и поведения, актуальных для поставленной задачи;
строить алгоритмы выполнения программы с использованием рекурсивных подпрограмм;
проектировать, создавать и тестировать простейшие программы на декларативных языках программирования;
использовать прикладные среды для написания и отладки программ.
3.3.Иметь навыки и (или) опыт деятельности (владеть):
3.3.1.построения математической модели и алгоритма для прикладной задачи;
написания и отладки программ на декларативном языке программирования.

4. Структура и содержание дисциплины

Код занятия Наименование разделов и тем Вид занятия Семестр Часов Компетенции Литература
Раздел 1. Основные понятия языков программирования
1.1. формальные способы описания языков программирования. Императивные и декларативные языки программирования. Структурное, логическое и функциональное программирование. Лекции 6 4 ОПК-3, ПК-3 Л1.1, Л2.1
Раздел 2. Язык Пролог.
2.1. Общая схема поиска решения Пролог-системой. Синтаксис и семантика языка: термы (атомы, структуры, переменные), операторы. Лекции 6 4 ОПК-3, ПК-3 Л1.1, Л2.1
2.2. История развития и базовые понятия языка Пролог. Сам. работа 6 2 Л1.1, Л2.1
2.3. Общая схема поиска решения Пролог-системой. Синтаксис языка: термы (атомы, структуры, переменные), операторы. Лабораторные 6 6 ОПК-3, ПК-3 Л1.1, Л2.1
2.4. Синтаксис языка: термы (атомы, структуры, переменные), операторы. Сам. работа 6 6 ОПК-3, ПК-3 Л1.1, Л2.1
2.5. Типы данных. Списки атомов, чисел, строк. Различные операции над списками. Сортировка списков. Сам. работа 6 8 ОПК-3, ПК-3 Л1.1, Л2.1
2.6. Массивы. Заполнение массивов из элементов списка и наоборот. Файловый ввод/вывод. Сам. работа 6 4 ОПК-3, ПК-3 Л1.1, Л2.1
2.7. Работа со строками. Функции работы со строками. Примеры программ. Сам. работа 6 4 ОПК-3, ПК-3 Л1.1, Л2.1
2.8. Специальные предикаты (оператор цикла, условный оператор). Определение новых функций. Перегрузка операторов. Сам. работа 6 2 ОПК-3, ПК-3 Л1.1, Л2.1
2.9. Списки атомов, чисел, строк. Различные операции над списками. Массивы. Заполнение массивов из элементов списка и наоборот. Файловый ввод/вывод. Лабораторные 6 4 ОПК-3, ПК-3 Л1.1, Л2.1
2.10. Различные операции над списками. Примеры. Сам. работа 6 2 ОПК-3, ПК-3 Л1.1, Л2.1
2.11. Ошибки, возникающие при написании программ на Прологе. Воздействие на процесс возврата: предикат отсечение(!), предикат repeat. Сам. работа 6 2 ОПК-3, ПК-3 Л1.1, Л2.1
2.12. Ошибки, возникающие при написании программ на Прологе. Воздействие на процесс возврата: предикат отсечение(!), предикат repeat. Лабораторные 6 4 ОПК-3, ПК-3 Л1.1, Л2.1
2.13. Отсечение. Виды отсечений. Сам. работа 6 2 ОПК-3, ПК-3 Л1.1, Л2.1
2.14. Работа с базой данных (добавление, модификация и удаление предложений). Статическая, динамическая база данных. Способы и механизмы управления данными. Предикаты of, count_successes, findall. Сам. работа 6 4 ОПК-3, ПК-3 Л1.1, Л2.1
2.15. Структуры. Согласование структур. Работа с компонентами структур, предикаты: functor(_,_,_), arg(_,_,_) и "=..". Сам. работа 6 2 ОПК-3, ПК-3 Л1.1, Л2.1
2.16. Структуры. Согласование структур. Работа с компонентами структур, предикаты: functor(_,_,_), arg(_,_,_) и "=..". Базы фактов. Работа с базой данных. Лабораторные 6 4 ОПК-3, ПК-3 Л1.1, Л2.1
2.17. Работа с базой данных (добавление, модификация и удаление предложений). Статическая, динамическая база данных. Сам. работа 6 1 ОПК-3, ПК-3 Л1.1, Л2.1
2.18. Предикаты для работы с фактами. Лекции 6 4 ОПК-3, ПК-3 Л1.1, Л2.1
Раздел 3. Язык Erlang.
3.1. Введение в Erlang. История Erlang. Особенности Erlang. Лекции 6 4 ОПК-3, ПК-3 Л1.1, Л2.1
3.2. Основные конструкции и синтаксис языка. Лабораторные 6 2 ОПК-3, ПК-3 Л1.1, Л2.1
3.3. Основные конструкции и синтаксис языка. Сам. работа 6 1 ОПК-3, ПК-3 Л1.1, Л2.1
3.4. Типы данных. Целые,Действительные числа. Интерпретатор. Операциии. Атомы. Логические значения. Кортежи. Списки. Строки. Структуры. Функции. Методы и основные этапы трансляции. Лабораторные 6 4 ОПК-3, ПК-3 Л1.1, Л2.1
3.5. Последовательное программирование. Условные выражения. Ввод-вывод. Рекурсия. Хвостовая рекурсия. Обработка ошибок. Лекции 6 2 ОПК-3, ПК-3 Л1.1, Л2.1
3.6. Элементы последовательного программирования. Лабораторные 6 4 ОПК-3, ПК-3 Л1.1, Л2.1
3.7. Элементы последовательного программирования. Сам. работа 6 1 Л1.1, Л2.1
3.8. Конструкции параллельного программирования. Создание процессов. Передача, прием сообщений. Хвостовая рекурсия и утечки памяти. Менеджер процессов. Сам. работа 6 1 ОПК-3, ПК-3 Л1.1, Л2.1
3.9. Шаблоные проектирования процессов. Модель клиент/сервер. Примеры. Сам. работа 6 4 ОПК-3, ПК-3 Л1.1, Л2.1
3.10. Обработка ошибок в процессах. Вспомогательные функции. Сам. работа 6 1 ОПК-3, ПК-3 Л1.1, Л2.1
3.11. Записи и макросы. Сам. работа 6 1 ОПК-3, ПК-3 Л1.1, Л2.1
3.12. Элементы параллельного программирования. Лабораторные 6 2 ОПК-3, ПК-3 Л1.1, Л2.1
3.13. Элементы параллельного программирования. Сам. работа 6 2 ОПК-3, ПК-3 Л1.1, Л2.1
3.14. Функциональное программирование. Сам. работа 6 1 ОПК-3, ПК-3 Л1.1, Л2.1
3.15. Конструкции распределенного программирования. Взаимодействие, сообщения и безопасность. Сам. работа 6 1 ОПК-3, ПК-3 Л1.1, Л2.1
3.16. Элементы распределенного программирования. Лабораторные 6 2 ОПК-3, ПК-3 Л1.1, Л2.1
3.17. Элементы распределенного программирования. Сам. работа 6 1 ОПК-3, ПК-3 Л1.1, Л2.1
3.18. Поведение OTP. Введение. Примеры. Сам. работа 6 1 ОПК-3, ПК-3 Л1.1, Л2.1
3.19. OTP инфраструктура. Лабораторные 6 2 ОПК-3, ПК-3 Л1.1, Л2.1
3.20. OTP инфраструктура. Сам. работа 6 1 ОПК-3, ПК-3 Л1.1, Л2.1
3.21. Создание GUI-приложений. Сам. работа 6 1 ОПК-3, ПК-3 Л1.1, Л2.1

5. Фонд оценочных средств

5.1. Контрольные вопросы и задания для проведения текущего контроля и промежуточной аттестации по итогам освоения дисциплины
см. приложение
5.2. Темы письменных работ для проведения текущего контроля (эссе, рефераты, курсовые работы и др.)
см. приложение
5.3. Фонд оценочных средств для проведения промежуточной аттестации
см. приложение

6. Учебно-методическое и информационное обеспечение дисциплины

6.1. Рекомендуемая литература
6.1.1. Основная литература
Авторы Заглавие Издательство, год Эл. адрес
Л1.1 Половикова О.Н. Функциональное и логическое программирование: учеб.-метод. пособие: учебно-методическое пособие Изд-во АлтГУ, 2016 elibrary.asu.ru
6.1.2. Дополнительная литература
Авторы Заглавие Издательство, год Эл. адрес
Л2.1 Шрайнер П. А Основы программирования на языке Пролог: Интернет-Университет Информационных Технологий, 2005 biblioclub.ru
6.2. Перечень ресурсов информационно-телекоммуникационной сети "Интернет"
Название Эл. адрес
Э1 Поисковые системы - yandex.ru, google.com
Э2 Свободная энциклопедия Википедия – http://ru.wikipedia.org
Э3 Форум разработчиков программного обеспечения - Stackoverflow.com
Э4 Интернет-университет информационных технологий. – http://www.intuit.ru
Э5 Функциональное и логическое программирование portal.edu.asu.ru
6.3. Перечень программного обеспечения
Visual Prolog
Common Lisp
Strawberry Prolog
Microsoft Windows
Microsoft Office
7-Zip
AcrobatReader
6.4. Перечень информационных справочных систем
1. Электронная база данных «Scopus» (http://www.scopus.com);
2. Электронная библиотечная система Алтайского государственного университета (http://elibrary.asu.ru/);
3. Научная электронная библиотекаe library(http://elibrary.ru)

7. Материально-техническое обеспечение дисциплины

Аудитория Назначение Оборудование
Учебная аудитория для проведения занятий лекционного типа, занятий семинарского типа (лабораторных и(или) практических), групповых и индивидуальных консультаций, текущего контроля и промежуточной аттестации, курсового проектирования (выполнения курсовых работ), проведения практик Стандартное оборудование (учебная мебель для обучающихся, рабочее место преподавателя, доска)
Помещение для самостоятельной работы помещение для самостоятельной работы обучающихся Компьютеры, ноутбуки с подключением к информационно-телекоммуникационной сети «Интернет», доступом в электронную информационно-образовательную среду АлтГУ
107Л лаборатория информационных технологий - компьютерный класс - учебная аудитория для проведения занятий семинарского типа (лабораторных и(или) практических); проведения групповых и индивидуальных консультаций, текущего контроля и промежуточной аттестации Учебная мебель на 18 посадочных мест; компьютеры: марка HP, модель ProOne 400 - 18 единиц; проектор: марка SMART, модель UF70 - 1 единица; интерактивная доска: марка SMART Board модель SMB680 - 1 единица

8. Методические указания для обучающихся по освоению дисциплины

На лекционных занятиях необходимо конспектировать изучаемый материал.
- Для систематизации лекционного материала, который будет полезен при подготовке к итоговому контролю знаний, записывайте на каждой лекции тему, вопросы для изучения, рекомендуемую литературу.
- В каждом вопросе выделяйте главное, обязательно запишите ключевые моменты (определение, факты, законы, правила и т.д.), подчеркните их.
- Если по содержанию материала возникают вопросы, не нужно выкрикивать, запишите их и задайте по окончании лекции или на семинарском занятии.
- Перед следующей лекцией обязательно прочитайте предыдущую, чтобы актуализировать знания и осознанно приступить к освоению нового содержания

Лабораторные работы, где студенты максимально активно участвуют в практическом приложении изучаемого материала дисциплины.
- Самостоятельную подготовку к занятию необходимо начинать с изучения понятийного аппарата темы. Рекомендуем использовать справочную литературу (словари, справочники, энциклопедии), целесообразно создать и вести свой словарь терминов.
- Важно запомнить, что любой источник должен нести достоверную информацию, особенно это относится к Internet-ресурсам. При использовании Internet - ресурсов в процессе подготовки не нужно их автоматически «скачивать», они должны быть проанализированы. Не нужно «скачивать» готовые рефераты, так как их однообразие преподаватель сразу выявляет, кроме того, они могут быть сомнительного качества.
- В процессе изучения темы анализируйте несколько источников. Используйте периодическую печать - специальные журналы.
- Полезным будет работа с электронными учебниками и учебными пособиями в Internet-библиотеках. Зарегистрируйтесь в них: университетская библиотека Онлайн (http://www.biblioclub.ru/) и электронно-библиотечная система «Лань» (http://e.lanbook.com/).
- В процессе подготовки и построения решения, поставленных задач, не просто читайте текст учебника, но и выражайте свою личностно-профессиональную оценку прочитанного.
- Задания практического характера: продумайте план их выполнения или решения .
- При возникновении трудностей в процессе работы взаимодействуйте с преподавателем, консультируйтесь по самостоятельному изучению темы.

Самостоятельная работа.
- При изучении дисциплины не все вопросы рассматриваются на занятиях, часть вопросов рекомендуется преподавателем для самостоятельного изучения.
- Поиск ответов на вопросы и выполнение заданий для самостоятельной работы позволит вам расширить и углубить свои знания по курсу, применить теоретические знания в решении задач практического содержания, закрепить изученное ранее.
- Эти задания следует выполнять не «наскоком», а постепенно, планомерно, следуя порядку изучения тем курса.
- При возникновении вопросов обратитесь к преподавателю в день консультаций на кафедру.
- Выполнив их, проанализируйте качество их выполнения. Это поможет вам развивать умения самоконтроля и оценочные компетенции.
Итоговый контроль.
- Для подготовки к зачету возьмите перечень примерных вопросов у преподавателя.
- В списке вопросов выделите те, которые были рассмотрены на занятиях. Обратитесь к своим записям, выделите существенное. Для более детального изучения изучите рекомендуемую литературу.
- Если в списке вопросов есть те, которые не рассматривались на занятии, изучите их самостоятельно.