|
Факултет по математика и информатика - Функционално програмиране |
 |
|
проф. д-р Елена Сомова, Dr. Viktória Zsók
|
|
Областта на функционалното програмиране предлага добра среда за програмиране за най-новите тенденции в компютърните науки, като киберфизически системи, вградени системи и спе-цифично програмиране за дадена област. Високото ниво на абстракция на функционалните прог-рами позволява разработването на нови приложения и инструменти за специфични цели. Предста-вянето на такива добре изучавани теми е полезно за студенти, които все още не са запознати с тази парадигма на програмиране. Краткият интензивен курс по функционално програмиране включва понятия, структури от данни, алгоритми, както и общи теми, специфични за областта. Основната мотивация е да се предоставят на обочаемите знания за функционалното програмиране и предизвикателни въпроси, свързани също и с по-задълбоченото изучаване и изследване на пара-дигмата на функционално програмиране. Използваният език за програмиране е Haskell, който е чист (lazy) език за функционално програмиране. Предложеният курс е подходящ за студенти в ба-калавърска, магистърска (и евентуално докторска) степен, които все още не са запознати с функ-ционалното програмиране, но биха искали да се запознаят с него.
|
| Не се изискват специални основни познания, но някои вече съществуващи умения за програмиране биха били полезни, тъй като курсът се фокусира особено върху елементи на функционалния стил на програмиране. |
| |
: Успешно завършилите обучението по тази учебна дисциплина: 1. Ще знаят: основните понятия и концепции в предметната област на дисциплината; ключовите механизми за функционално програмиране; спецификата на функционалния подход, вкл. концепцията за lazy evaluation; функционалния подход за програмиране чрез Haskell. 2. Ще могат: да прилагат концепциите на функционалното програмиране; да дефинират различните видове функции; да използват различните видове структури от данни; да създават алгоритми във функционален стил на програмиране; да програмират на Haskell. 3. Ще придобият следните компетентности: способност за логическо мислене; способност за самостоятелно търсене на информация и натрупване на допълнителни знания. |
| Студентите могат да ползват електронни материали за задължително изучаване, както и за допълнително преглеждане. Всички лекции се представят в зала, оборудвана с мултимедийна техника и с осигурен (вкл. и безжичен) Интернет-достъп. За самостоятелна работа студентите могат да ползват и компютърна зала със свободен достъп. Студентите имат възможност да получат консултации като се срещат лично с преподавателите в определени часове на всяка седмица, или виртуално – по всяко време в рамките на 24 часа, използвайки университетската компютърна мрежа. |
А) Лекции 1. Дефиниране на функции (охранители, шаблони, рекурсивни функции, композиции, приоритети и обработка на ламбда изрази). (5 часа) 2. Структури от данни (списъци). Функции от по-висок ред, сортиращи списъци и разбиране на списъци. (5 часа) 3. Структури от данни (кортежи, записи), специфични типове и преобразуване на типове. (5 часа) 4. Алгебрични типове и дървета. Алгоритми, модули и класове. Теми и предизвикателства за изследване в функционалното програмиране. (5 часа) |
• Лекции; • Практически упражнения. |
• Дават се домашни работи и курсов проект по темите за самостоятелно разработване. (60 ча-са) • Студентите разширяват знанията си чрез ползване на е-курс, предложената литература и ин-тернет сайтове. (25 часа) |
• По време на занятията се провежда текущо оценяване на базата на участие в дискусион-ния процес и реализирането на учебните задачи (50% от крайната оценка), както и на представяне на самостоятелна курсова работа (50% от крайната оценка). Оформената оценка се мотивира пред студента и се вписва в изпитния протокол и студентската книжка. • Неполучилите положителна оценка се явяват на поправителен изпит, който се провежда при същите правила. • Ако и на поправката студентът не успее да издържи изпита, се явява на ликвидационен изпит. |
|
1. Viktória Zsók, E-learning resourses for students, 2026. 2. Graham Hutton, Programming in Haskell 2nd Edition, Cambridge University Press, 2016. 3. Haskell, https://www.haskell.org/, достъп: 2026. 4. Learn You a Haskell for Great Good!, https://learnyouahaskell.github.io/chapters.html, , достъп: 2026. 5. Learning Haskell, https://wiki.haskell.org/Learning_Haskell, достъп: 2026.
|
|
|
|