Функційне програмування
Спеціальність: Комп'ютерні науки
Код дисципліни: 6.122.04.E.175
Кількість кредитів: 4.00
Кафедра: Системи штучного інтелекту
Лектор: Осипов М.
Семестр: 5 семестр
Форма навчання: денна
Результати навчання: знати:
? методи проектування та розробки програмного забезпечення;
? підходи у оцінці зусиль на реалізацію розробки програмного забезпечення;
вміти:
? проектувати архітектуру та дизайн програмного забезпечення з використанням засобів
візуального моделювання та документування;
? володіти логікою функціонального підходу;
? оцінювати зусилля на розробку програмного забезпечення та візуально представити
результати оцінки;
Необхідні обов'язкові попередні та супутні навчальні дисципліни: Алгоритмізація і програмування
Дискрета математика
Короткий зміст навчальної програми: Імперативна парадигма програмування. Функційна парадигма програмування.
Модель підстановки.
REPL, головні предикати, визначення функції: Інтерактивна
консоль REPL. Головні предикати Scala. Визначення функції.
Чисті функції. Побічні ефекти.
Структури даних Scala: Логічна та фізична структура даних.
Внутрішнє подання символів, чисел, функцій. Розподіл областей
даних. Точкова пара. Побудова незмінних списків.
Використання рекурсії у функціональному програмуванні:
Функції вищого порядку.
Об’єктно-орієнтовна Scala: Системи об’єктів. Наслідування. Поліморфізм та варіантність типів Scala. Коваріантність,
контрваріантність та інваріантність типів. Поліморфні типи в ієрархії класів.
Pattern-matching та розпізнавання образів: Умови зіставлення.
Pattern-matching та розпізнавання образів. Використання змінних для зіставлення. Розпізнавання структур.
Неявні конструкції Scala: Implicit параметри, функції розширення та декомпозиції.
Методи та системи програмування: Методи та стилі програмування.
Продукційне програмування: Використання продукційного програмування при використанні експертних систем. Інтерфейс користувача. Машина логічного виводу.
Розробка інтерпретатора довільної простої мови: Метапрограмування. Множина виразів як програма. Пошук у глибину. Інтерфейс. Побудова дерева внутрішнього подання
Методи та критерії оцінювання: 50 - лабораторні роботи
50 - екзамен
Рекомендована література:
1. Programing in Scala 3rd ed, Martin Odersky
2. Scala for the Impatient 2nd ed, Cay Horstmann
3. Programming Scala, 2nd ed, Dean Wampler
4. Functional Programming in Scala, Paul Chiusano