Popis předmětu - BE4B36FUP
BE4B36FUP | Functional Programming | ||
---|---|---|---|
Role: | PV, P | Rozsah výuky: | 2P+2C |
Katedra: | 13136 | Jazyk výuky: | EN |
Garanti: | Pěchouček M. | Zakončení: | Z,ZK |
Přednášející: | Horčík R., Pěchouček M. | Kreditů: | 6 |
Cvičící: | Frána L., Heim N., Horčík R., Omasta T., Pěchouček M. | Semestr: | L |
Webová stránka:
https://cw.fel.cvut.cz/wiki/courses/fup/startAnotace:
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 |
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 |
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í |
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 10.12.2023 07:50:36, semestry: Z,L/2023-4, L/2022-3, Z/2024-5, 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) |