Programovací paradigmata
Kód | Zakončení | Kredity | Rozsah | Jazyk výuky |
---|---|---|---|---|
BI-PPA.21 | Z,ZK | 5 | 2P+2R | česky |
- Garant předmětu:
- Jan Janoušek
- Přednášející:
- Jan Janoušek, Petr Máj
- Cvičící:
- Filip Gregor, Petr Máj, Tomáš Pecka, Jan Liam Verter
- Předmět zajišťuje:
- katedra teoretické informatiky
- Anotace:
-
Předmět se zabývá základními paradigmaty vyšších programovacích jazyků, včetně jejich základních exekučních modelů, benefitů a nevýhod jednotlivých přístupů. Podrobněji je probíráno funkcionální paradigma a aplikace jeho základních principů. Logické programování je představeno jako další způsob deklarativního programování. Probírané principy jsou demonstrovány na lambda kalkulu a programovacích jazycích Lisp (Racket) a Prolog. Dále je ilustrováno využití principů na moderních rozšířených programovacích jazycích, jako jsou C++ a Java.
- Požadavky:
-
Základní znalosti imperativního programování a OOP (C a C++)
- Osnova přednášek:
-
1. Vyšší programovací jazyky a jejich základní paradigmata.
2. Základní běhové prostředí pro vykonávání programů.
3. Funkcionální programování: Lambda kalkul.
4. Neformální úvod do LISPu, od lambda kalkulu k LISPu.
5. Rekurze, funkce vyšších řádů a jejich kompozice.
6. Makra.
7. Funkcionální programování v moderních programovacích jazycích.
8. [2] Efektivní interpretace funkcionálních jazyků: SECD virtuální stroj.
10. Logické programování: Prolog - úvod.
11. Unifikace, operátor řezu.
12. [2] Složitější příklady, grafové algoritmy v Prologu.
- Osnova cvičení:
-
1. Lambda kalkulus I
2. Lambda kalkulus II
3. Lambda kalkulus III
4. Lisp I
5. Lisp II
6. Lisp III
7. Prolog I
8. Prolog II
- Cíle studia:
-
Cílem předmětu je poskytnout přehled a porozumění hlavních programovacích paradigmat. Jsou vysvětleny a srovnány základníprincipy a sémantické koncepty vyšších programovacích jazyků na těchto paradigmatech založených. V oblasti objektově-orientovanéhoparadigmatu navazuje předmět na předmět Objektově-orientované programování. Do větších detailů jsou probírána funkcionální a logická(deklarativní) programovací paradigmata. Vedle vysvětlení základních principů je důraz kladen i na zvládnutí základních praktickýchpříkladů a srovnání a diskuze přínosů a nevýhod jednotlivých paradigmat a důvody pro kombinování těchto paradigmat v rámcimoderních programovacích jazyků. Dále jsou diskutovány implementační aspekty jednotlivých typů programovacích jazyků.
- Studijní materiály:
-
1. Lee K. D. : Foundations of Programming Languages. Springer, 2014. ISBN 978-3-319-13314-0.
2. Hoyte D. : Let Over Lambda. lulu.com, 2008. ISBN 978-1435712751.
3. Brammer M. : Logic Programming with Prolog (2nd Edition). Springer, 2013. ISBN 978-1-4471-5487-7.
4. Weitz E. : Common Lisp Recipes: A Problem-Solution Approach. Apress, 2016. ISBN 978-1-4842-1177-9.
- Poznámka:
- Další informace:
- https://courses.fit.cvut.cz/BI-PPA
- Rozvrh na zimní semestr 2024/2025:
-
06:00–08:0008:00–10:0010:00–12:0012:00–14:0014:00–16:0016:00–18:0018:00–20:0020:00–22:0022:00–24:00
Po Út St Čt Pá - Rozvrh na letní semestr 2024/2025:
- Rozvrh není připraven
- Předmět je součástí následujících studijních plánů:
-
- Bc. specializace Informační bezpečnost, 2021 (volitelný předmět)
- Bc. specializace Manažerská informatika, 2021 (volitelný předmět)
- Bc. specializace Počítačová grafika, 2021 (volitelný předmět)
- Bc. specializace Počítačové inženýrství, 2021 (volitelný předmět)
- Bc. program, pro fázi studia bez specializace, 2021 (VO)
- Bc. specializace Webové inženýrství, 2021 (volitelný předmět)
- Bc. specializace Umělá inteligence, 2021 (volitelný předmět)
- Bc. specializace Teoretická informatika, 2021 (PS)
- Bc. specializace Softwarové inženýrství, 2021 (PS, volitelný předmět)
- Bc. specializace Počítačové systémy a virtualizace, 2021 (volitelný předmět)
- Bc. specializace Počítačové sítě a Internet, 2021 (volitelný předmět)
- Bc. specializace Informační bezpečnost, 2024 (volitelný předmět)
- Bc. program, pro fázi studia bez specializace, 2024 (VO)
- Bc. specializace Manažerská informatika, 2024 (volitelný předmět)
- Bc. specializace Počítačová grafika, 2024 (volitelný předmět)
- Bc. specializace Softwarové inženýrství, 2024 (PS, volitelný předmět)
- Bc. specializace Webové inženýrství, 2024 (volitelný předmět)
- Bc. specializace Počítačové sítě a Internet, 2024 (volitelný předmět)
- Bc. specializace Počítačové inženýrství, 2024 (volitelný předmět)
- Bc. specializace Počítačové systémy a virtualizace, 2024 (volitelný předmět)
- Bc. specializace Umělá inteligence, 2024 (volitelný předmět)
- Bc. specializace Teoretická informatika, 2024 (PS)