Funkcionální programování
Kód | Zakončení | Kredity | Rozsah | Jazyk výuky |
---|---|---|---|---|
B4B36FUP | Z,ZK | 6 | 2P+2C | česky |
- Vztahy:
- 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
- Předmět je ekvivalentní s AD4B33FLP,A4B33FLP .
- Garant předmětu:
- Michal Pěchouček
- Přednášející:
- Rostislav Horčík
- Cvičící:
- Rostislav Horčík, Jiří Němeček, Tomáš Votroubek, Matěj Zorek
- 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
- Rozvrh na zimní semestr 2024/2025:
- Rozvrh není připraven
- Rozvrh na letní semestr 2024/2025:
- Rozvrh není připraven
- Předmět je součástí následujících studijních plánů:
-
- Otevřená informatika - Informatika a počítačové vědy 2016 (povinný předmět oboru)
- Otevřená informatika - Software 2016 (povinný předmět oboru)
- Otevřená informatika - před rozřazením do oborů (povinný předmět oboru)
- Otevřená informatika - Základy umělé inteligence a počítačových věd 2018 (povinný předmět zaměření)
- Otevřená informatika - Software 2018 (povinný předmět zaměření)
- prg.ai/minor-tech (volitelný předmět)