Funkcionální a logické programování
Kód | Zakončení | Kredity | Rozsah | Jazyk výuky |
---|---|---|---|---|
MI-FLP | Z,ZK | 4 | 2P+1C | česky |
- Přednášející:
- Petr Máj, Jan Janoušek (gar.), Jan Sliacký
- Cvičící:
- Petr Máj, Jan Janoušek (gar.), Jan Sliacký
- Předmět zajišťuje:
- katedra teoretické informatiky
- Anotace:
-
Studenti se seznámí s principy funkcionálního a logického programování. Budou schopni programovat v jazycích Lisp a Prolog.
- Požadavky:
-
Základní znalost principů imperativního programování.
- Osnova přednášek:
-
1. Deklarativní programovací jazyky. Lambda kalkul jako formalismus pro funkcionální programování.
2. Základní typy dat a funkce Lispu, seznamy.
3. Proměnné, typové predikáty, rekurze a iterace v Lispu.
4. Mapovací funkcionály, řídicí struktury.
5. Vstup a výstup, makra.
6. Struktury, vektory, pole, hashovací tabulky.
7. Implementace Lispu.
8. Predikátová logika, Hornovy klauzule a SLD rezoluce jako úvod do Prologu.
9. Predikáty, klauzule, fakta, operátory v Prologu.
10. Průběh a řízení výpočtu v Prologu, seznamy.
11. Datové struktury, vstup, výstup.
12. Implementace Prologu.
13. Logické programování a důkazové stromy - souvislosti s atributovými gramatikami.
- Osnova cvičení:
-
1. Rekurzivní programování, řešení jednoduchých úloh v imperativním jazyce pomocí rekurze.
2. Seznámení s používáním lispovského systému v počítačové laboratoři.
3. Definice jednoduchých funkcí pro práci se seznamy v Lispu.
4. Zadání semestrální práce.
5. Rekurzivní a iterativní řešení úloh, efektivnost rekurze.
6. Mapovací funkcionály.
7. Pole, hashovací tabulky, vstup a výstup.
8. Makra, struktury.
9. Konzultace k semestrální práci.
10. Seznámení s používáním systému Prolog v počítačové laboratoři.
11. Rekurze v Prologu, aritmetické a seznamové predikáty.
12. Programování vstupu a výstupu, řízení výpočtu.
13. Odevzdání a hodnocení domácích prací, zápočet.
- Cíle studia:
-
Předmět se zabývá funkcionálním a logickým programováním. Vysvětluje základní principy a podrobně se věnuje programování v jazycích Lisp a Prolog. Dále jsou studenti seznámeni se základními principy implementace jazyků Lisp a Prolog.
- Studijní materiály:
-
1. Shapiro, S. C. ''Common Lisp: An Interactive Approach''. W. H. Freeman, 1991. ISBN 0716782189.
2. Seibel, P. ''Practical Common Lisp''. Apress, 2005. ISBN 1590592395.
3. Clocksin, W. F., Mellish, C. S. ''Programming in Prolog (5th Edition)''. Springer, 2003. ISBN 3540006788.
- Poznámka:
-
Informace o předmětu a výukové materiály naleznete na https://courses.fit.cvut.cz/MI-FLP/
- Další informace:
- https://courses.fit.cvut.cz/MI-FLP/
- Pro tento předmět se rozvrh nepřipravuje
- Předmět je součástí následujících studijních plánů:
-
- Znalostní inženýrství, verze 2016 a 2017 (volitelný předmět)
- Počítačová bezpečnost, verze 2016 až 2019 (volitelný předmět)
- Počítačové systémy a sítě, verze 2016 až 2019 (volitelný předmět)
- Návrh a programování vestavných systémů, verze 2016 až 2019 (volitelný předmět)
- Zaměření Informační systémy a management, verze 2016 až 2019 (volitelný předmět)
- Zaměření Softwarové inženýrství, verze 2016 až 2019 (volitelný předmět)
- Zaměření Webové inženýrství, verze 2016 až 2019 (volitelný předmět)
- Společný magisterský plán před přiřazením do oboru, verze 2016 až 2019 (VO)
- Zaměření Systémové programování, verze 2016 až 2019 (povinný předmět oboru)
- Zaměření Teoretická informatika, verze 2016-2017 (povinný předmět oboru)
- Specializace Teoretická informatika, verze 2018 až 2019 (VO)
- Znalostní inženýrství, verze 2018 to 2019 (volitelný předmět)