Přehled studia |
Přehled oborů |
Všechny skupiny předmětů |
Všechny předměty |
Seznam rolí |
Vysvětlivky
Návod
Webová stránka:
https://cw.fel.cvut.cz/wiki/courses/fup/start
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.
Osnovy 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 |
Osnovy cvičení:
Literatura:
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.
Požadavky:
Předmět je zahrnut do těchto studijních plánů:
Stránka vytvořena 19.5.2024 15:50:46, semestry: Z/2024-5, Z,L/2023-4, připomínky k informační náplni zasílejte správci studijních plánů |
Návrh a realizace: I. Halaška (K336), J. Novák (K336) |