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

Вибіркова дисципліна
Навчальна дисципліна професійної підготовки
Обсяг освітнього компонента: 
• у кредитах ЄКТС — 4.5.
Кількість аудиторних занять: 
Лекційних занять - 15, лабораторних занять 7.
Самостійна робота: 
91 година.
Семестровий контроль: 
Залік.
Освітню компоненту забезпечує: 
Анотація: 

Анотація навчальної дисципліни

Мета дисципліни: оволодіння концепціями, методами та засобами  функціонального програмування
Практичне значення та використання отриманих знань: 
Навчитися написанню різних типів програм або їх фрагментів у функціональному стилі з застосуванням класичних функціональних та традиційних мов програмування та розвиток навичок їх практичного застосування.

Тематика та види навчальних занять

Для денної форми здобуття освіти
Лекційні заняття
Лекція 1. Основні відомості про функціональне програмування.
Лекція 2. Відмінності функціонального програмування від інших стилів.
Лекція 3. Основні конструкції мови Haskell (початок).
Лекція 4. Основні конструкції мови Haskell (продовження).
Лекція 5. Приклади програм на мові Haskell
Лекція 6. Вбудовані та стандартні типи мови Haskell.
Лекція 7. Створення власних типів даних в Haskell.
Лекція 8. Класи в Haskell. Монади IO для опису дій з зовнішнім світом в Haskell.
Лекція 9. Монади-список та монади Maybe в Haskell
Лекція 10. Основи ELM. 
Лекція 11. ELM. Перші проекти.
Лекція 12. Просунуті проекти в ELM. 
Лекція 13. Функціональне програмування в С++
Лекція 14. Функціональне програмування в Java (початок)
Лекція 15. Функціональне програмування в Java (продовження)

Лабораторні заняття
Лабораторне заняття 1. Мова Haskell. Перші програми. 
Лабораторне заняття 2. Робота з числами та списками чисел на мові Haskell. 
Лабораторне заняття 3. Просунуті можливості мови Haskell: лямбда-функції, pattern-matching, тип Maybe, типи Text і Sequence.
Лабораторне заняття 4. Просунуті можливості мови Haskell: створювання і застосування власних типів даних.
Лабораторне заняття 5. Монади в мові Haskell: монади IO, монади-список та монади вбудовані монади Maybe.
Лабораторне заняття 6. Web-застосування на мові ELM
Лабораторне заняття 7.  Можливості функціонального програмування в С++: функції високих порядків, лямбда-визначення, захоплення змінних, std:function, bind, хвостова рекурсія.

Для заочної форми здобуття освіти
Лекційні заняття
Лекція 1. Основні відомості про функціональне програмування,  відмінності від інших стилів. Основні конструкції мови Haskell. Вбудовані та стандартні типи 
Лекція 2. Створення власних типів даних в Haskell.  Класи в Haskell. Монади IO, монади-список та монади Maybe 

Лабораторні заняття
Лабораторне заняття №1.  Робота з числами та списками на мові Haskell, лямбда-функції, pattern-matching, тип Maybe.
Мета заняття: Навчитися розробляти прості програми на мові  Haskell

Лабораторне заняття №2. Створення власних типів даних в Haskell та монад.
Мета заняття: Навчитися розробляти просунуті програми на мові  Haskell

Консультації здійснюються впродовж семестру згідно встановленого розкладу.

 Індивідуальна робота

  Для денної форми здобуття освіти

  Не передбачено

Для заочної форми здобуття освіти

Виконання індивідуальних завдань

 Форми контрольних заходів та оцінювання результатів навчання

Оцінювання результатів навчання з дисципліни здійснюється за накопичувальною системою, яка дає можливість здобувачеві протягом семестру отримати максимально 100 балів.

Для денної форми здобуття освіти

Модуль 1
Оцінка за виконання лабораторних робіт – максимально 20 балів за модуль.
Модульна контрольна робота – бездоганне виконання 30  балів (в кожному завданні модульної контрольної роботи наведено максимальну кількість балів за виконання завдання).
Модуль 2
Оцінка за виконання лабораторних робіт – максимально 20 балів за модуль.
Модульна контрольна робота – бездоганне виконання 30 балів (в кожному завданні модульної контрольної роботи наведено максимальну кількість балів за виконання завдання).
Підсумковим контролем з дисципліни є залік. Залік виставляється за підсумками модульних контрольних робіт та накопичувальної частини дисципліни.

Для заочної форми здобуття освіти

В якості індивідуальних завдань виконуються 2 лабораторних роботи та 1 контрольна робота. Контрольна робота оцінюється з максимально можливого балу 50 балів. Кожна лабораторна оцінюється з максимально можливого балу 25 балів.
Підсумковим контролем з дисципліни є залік. Залік виставляється за підсумками контрольної роботи та накопичувальної частини дисципліни.

 Посилання на рекомендовані джерела

1. Кубенський А А Функціональне програмування, - 2018 – Електронний примірник https://stud.com.ua/165233/informatika/funktsionalne_programuvannya
2. Заяць В. М.,  Заяць М. М.. Логічне і функціональне програмування. Системний підхід -    Підручник.  - 2-ге видання випр. та доповн. - Рівне, НУВГП, -  2018. – 422  с.  – Електронний примірник http://ep3.nuwm.edu.ua/15918/1/Логічне і функціональне програмування.pdf
3. An Introduction to Elm  – Електронний примірник guide.elm-lang.org
4. Hal Daum´e III. Yet Another Haskell Tutorial – 2006. – p.192 – Електронний примірник http://users.umiacs.umd.edu/~hal/docs/daume02yaht.pdf
5. Методичні вказівки до лабораторних робіт з дисципліни «Функціональне  програмування” для студентів спеціальності 121 – Інженерія програмного забезпечення / Уклали В.М. Рувінська, Л.С. Жиро. – Одеса: ОНПУ. 2018. –25 с. – (ел. версія, рег. МВ09899 (№6200-РС-2018) від 23.10.2018).
6. Методичні вказівки до розрахунково- графічної роботи з дисципліни «Функціональне  програмування” для студентів спеціальності 121 – Інженерія програмного забезпечення / Уклали В.М. Рувінська, Л.С. Жиро. – Одеса: ОНПУ. 2019. –15 с. – (ел. версія, рег. МВ11186 (№71936200-РС-2019) від 20.12.2019).
7. Методичні вказівки до практичних занять з дисципліни “Функціональне програмування” для студентів спеціальності 121 – Інженерія програмного  забезпечення /Укл.: В.М. Рувінська, Л.С .Жиро. – Одеса: ОНПУ, 2020 . – с. 31– (ел. версія, рег. МВ11238 (№7424-РС-2020 від 24.06.2020).
8. Методичні вказівки до виконання контрольних завдань з дисципліни “Функціональне програмування” для студентів спеціальності 121 – Інженерія програмного  забезпечення заочної форми навчання /Укл.: В.М. Рувінська. – Одеса: ОНПУ, 2020. – с. 24 – (ел. версія, рег. МВ11237 (№7464-РС-2020) від 24.06.2020).
 

Компетентності: 

К1. Здатність розробляти архітектури, модулі та компоненти програмних систем.

Передумови вивчення дисципліни: 

Основи програмування,
Організація даних в обчислювальних системах
Алгоритми та структури даних

Результати навчання: 

РН1. Знати і застосовувати на практиці фундаментальні концепції, парадигми і основні принципи функціонування мовних, інструментальних і обчислювальних засобів інженерії програмного забезпечення.
РН2. Знати і застосовувати методи розробки алгоритмів, конструювання програмного забезпечення та структур даних і знань.
РН3. Мотивовано обирати мови програмування та технології розробки для розв’язання завдань створення і супроводження програмного забезпечення.

2024 рік