Функційне програмування

Спеціальність: Комп'ютерні науки
Код дисципліни: 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