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

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

рабочая программа дисциплины
Закреплена за кафедройКафедра информатики
Направление подготовки02.03.02. Фундаментальная информатика и информационные технологии
Форма обученияОчная
Общая трудоемкость3 ЗЕТ
Учебный план02_03_02_ФИиИТ-3-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 Л1.1, Л2.1
2.2. История развития и базовые понятия языка Пролог. Сам. работа 6 2 ОПК-3, ПК-3 Л1.1, Л2.1
2.3. Общая схема поиска решения Пролог-системой. Синтаксис языка: термы (атомы, структуры, переменные), операторы. Лабораторные 6 6 ОПК-3, ПК-3 Л1.1, Л2.1
2.4. Синтаксис языка: термы (атомы, структуры, переменные), операторы. Сам. работа 6 6 ОПК-3 Л1.1, Л2.1
2.5. Типы данных. Списки атомов, чисел, строк. Различные операции над списками. Сортировка списков. Сам. работа 6 8 ПК-3 Л1.1, Л2.1
2.6. Массивы. Заполнение массивов из элементов списка и наоборот. Файловый ввод/вывод. Сам. работа 6 4 ОПК-3, ПК-3 Л1.1, Л2.1
2.7. Работа со строками. Функции работы со строками. Примеры программ. Сам. работа 6 4 ПК-3 Л1.1, Л2.1
2.8. Специальные предикаты (оператор цикла, условный оператор). Определение новых функций. Перегрузка операторов. Сам. работа 6 2 ОПК-3 Л1.1, Л2.1
2.9. Списки атомов, чисел, строк. Различные операции над списками. Массивы. Заполнение массивов из элементов списка и наоборот. Файловый ввод/вывод. Лабораторные 6 4 ОПК-3, ПК-3 Л1.1, Л2.1
2.10. Различные операции над списками. Примеры. Сам. работа 6 2 ОПК-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 Л1.1, Л2.1
2.17. Работа с базой данных (добавление, модификация и удаление предложений). Статическая, динамическая база данных. Сам. работа 6 1 ПК-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 Л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 Л1.1, Л2.1
3.17. Элементы распределенного программирования. Сам. работа 6 1 ОПК-3 Л1.1, Л2.1
3.18. Поведение OTP. Введение. Примеры. Сам. работа 6 1 ОПК-3 Л1.1, Л2.1
3.19. OTP инфраструктура. Лабораторные 6 2 ОПК-3 Л1.1, Л2.1
3.20. OTP инфраструктура. Сам. работа 6 1 ОПК-3 Л1.1, Л2.1
3.21. Создание GUI-приложений. Сам. работа 6 1 ОПК-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/).
- В процессе подготовки и построения решения, поставленных задач, не просто читайте текст учебника, но и выражайте свою личностно-профессиональную оценку прочитанного.
- Задания практического характера: продумайте план их выполнения или решения .
- При возникновении трудностей в процессе работы взаимодействуйте с преподавателем, консультируйтесь по самостоятельному изучению темы.

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