Logo ČVUT
ČESKÉ VYSOKÉ UČENÍ TECHNICKÉ V PRAZE
STUDIJNÍ PLÁNY
2024/2025

Funkcionální programování

Předmět není vypsán Nerozvrhuje se
Kód Zakončení Kredity Rozsah Jazyk výuky
B4B36FUP Z,ZK 6 2P+2C česky

Předmět B4B36FUP nesmí být zapsán, je-li v témže semestru zapsán anebo již dříve absolvován předmět BE4B36FUP (vztah je symetrický)

Předmět B4B36FUP nesmí být zapsán, je-li v témže semestru zapsán anebo již dříve absolvován předmět BE4B36FUP (vztah je symetrický)

Předmět B4B36FUP může být splněn v zastoupení předmětem BE4B36FUP

Garant předmětu:
Přednášející:
Cvičící:
Předmět zajišťuje:
katedra počítačů
Anotace:

Předmět podává úvod do technik funkcionálního programování, výhod a

nevýhod funkcionálního přístupu, a nejběžnějších použití těchto

technik v praxi. Tyto jazyky jsou deklarativní v tom smyslu, že

programátor symbolicky popíše problém, který má být řešen, místo výčtu

konkrétní posloupnosti akcí, které má počítač provést. Tento přístup

umožnuje soustředit se na jádro problému a implementovat i velmi

komplikované algoritmy kompaktně. Funkcionální programování má

nesporné výhody pro paralelizaci a formální verifikaci algoritmů a

nejužitečnější koncepty funkcionálního programování stále více

pronikají i do standardních programovacích jazyků. Díky důrazu na

operace se symboly a namísto čísel, funkcionální programování také

nalezlo významné aplikace v umělé inteligenci, např. v agentových

systémech či v symbolickém strojovém učení.

Tento předmět je také součástí meziuniverzitního programu prg.ai Minor. Ten spojuje to nejlepší z výuky AI v Praze s cílem poskytnout studujícím hlubší a širší vhled do oboru umělé inteligence. Více informací je k dispozici na webu https://prg.ai/minor.

Požadavky:
Osnova přednášek:

1. Úvod do deklarativních programovacích jazyků. Srovnání s

klasickými imperativními jazyky. Hlavní principy a praktické aplikace

funkcionálního programování.

2. LISP: základní jazykové idiomy, atomy, seznamy, rekurze

3. LISP: lambda abstrakce, vestavěné funkce, pokročilé datové struktury

4. LISP: vestavěné funkce vyšších řádů

5. LISP: nekonečné datové struktury, uzávěry (closures)

6. Úvod do Lambda kalkulu, vztah k funkcionálnímu programování

7. Ekvivalence funkcionálního programování s Turingovím strojem

8. Typy ve funkcionálních jazycích, jejich smysl a důsledky na

vyjadřovací sílu jazyka, typovaný Lambda kalkulus

9. Haskell: typy, vzory, vestavěné funkce, lambda abstrakce

10. Haskell: líné vyhodnocování, částečná aplikace funkce

11. Haskell: monády

12. Automatické optimalizace ve funkcionálním programování, formální

verifikace funkcionálních programů

13. Funkcionální programování a paralelní výpočty

14. Funkcionální rysy v populárních programovacích jazycích a nástrojích

Osnova cvičení:
Cíle studia:
Studijní materiály:

Hudak, Paul, and Joseph H. Fasel. „A gentle introduction to Haskell.“ ACM Sigplan Notices 27.5 (1992): 1-52.

Harvey, Brian, and Matthew Wright. Simply Scheme: introducing computer science. Mit Press, 1999.

Poznámka:
Další informace:
https://cw.fel.cvut.cz/wiki/courses/fup/start
Pro tento předmět se rozvrh nepřipravuje
Předmět je součástí následujících studijních plánů:
Platnost dat k 23. 4. 2024
Aktualizace výše uvedených informací naleznete na adrese https://bilakniha.cvut.cz/cs/predmet4703006.html