Popis předmětu - B4B36FUP
B4B36FUP | Funkcionální programování | ||
---|---|---|---|
Role: | PO, PZ | Rozsah výuky: | 2P+2C |
Katedra: | 13136 | Jazyk výuky: | CS |
Garanti: | Pěchouček M. | Zakončení: | Z,ZK |
Přednášející: | Horčík R. | Kreditů: | 6 |
Cvičící: | Horčík R., Němeček J., Votroubek T., Zorek 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ů:
Plán | Obor | Role | Dop. semestr |
BPOI1_2016 | Informatika a počítačové vědy | PO | 4 |
BPOI_BO_2016 | Před zařazením do oboru | PO | 4 |
BPOI3_2016 | Software | PO | 4 |
BPOI3_2018 | Software | PZ | 4 |
BPOI1_2018 | Základy umělé inteligence a počítačových věd | PZ | 4 |
Stránka vytvořena 21.11.2024 14:51:06, semestry: Z,L/2024-5, Z/2025-6, 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) |