Popis předmětu - A4B33FLP
A4B33FLP | Funkcionální a logické programování | ||
---|---|---|---|
Role: | Rozsah výuky: | 2P+2C | |
Katedra: | 13136 | Jazyk výuky: | CS |
Garanti: | Zakončení: | Z,ZK | |
Přednášející: | Kreditů: | 6 | |
Cvičící: | Semestr: | L |
Webová stránka:
http://cw.felk.cvut.cz/doku.php/courses/a4b33flp/startAnotace:
Předmět podává úvod do technik funkcionálního programování v jazycích LISP (přesněji v jeho implementaci SCHEME) a HASKELL a logického programování v jazyce PROLOG. Oba 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. V PROLOGu je problém popsán vlastnostmi objektů a vztahy mezi nimi vyjádřenými v logice. V LISPu má popis problému formu definice funkcí. Oba jazyky nalezly významné aplikace v umělé inteligenci, např. v agentových systémech či v symbolickém strojovém učení.Výsledek studentské ankety předmětu je zde: A4B33FLP
Cíle studia:
Seznámit se s principy funkcionálním a logickým programováním v jazycích LISP resp. PROLOG.Osnovy přednášek:
1. | Úvod do deklarativních programovacích jazyků. Srovnání s klasickými imperativními jazyky. Úvod do programování pro umělou inteligenci. | |
2. | LISP a Scheme: základní jazykové idiomy, atomy, seznamy, rekurze | |
3. | Scheme: lambda abstrakce, vestavěné funkce, pokročilé datové struktury | |
4. | Scheme: vztahy mezi iteracemi, optimizace rekurze zaručená jazykovým standardem, vestavěné funkce vyšších řádů. | |
5. | Scheme: prohledávání stavového prostoru, aplikace v umělé inteligenci | |
6. | Haskell: typy, vzory, vestavěné funkce, lambda abstrakce | |
7. | Haskell: prokročilé vlastnosti jazyka ve srovnání se Scheme | |
8. | Prolog: fakta, pravidla, dotazy, rekurze, odpovídání dotazů | |
9. | Funkce, unifikace, operace se seznamy | |
10. | Prolog a logika: klauzule, Herbrandova báze, interpretace, model, předpoklad uzavřeného světa, rozhodnutelnost | |
11. | Řez a negace, mimologické operátory, aritmetika | |
12. | Kombinatorické prohledávání v Prologu | |
13. | Programování s omezujícími podmínkami | |
14. | Programovací praktiky, ladění, vestavěné predikáty |
Osnovy cvičení:
1. | Scheme. Seznámení se Scheme a jeho prostředím. Ladění. Základní příklady. | |
2. | Rekurze, akumulátor. | |
3. | Lambda abstrakce | |
4. | Rekurze, funkce vyššího řádu | |
5. | Haskell | |
6. | Prolog jako databáze, fakta, pravidla, dotazy | |
7. | Rekurze, ladění programů | |
8. | Unifikace, operace se seznamy | |
9. | Operace se seznamy, operace řezu a negace | |
10. | Prohledávací algoritmy | |
11. | Prohledávací algoritmy | |
12. | Programování s omezujícími podmínkami | |
13. | Programování s omezujícími podmínkami | |
14. | Zápočy |
Literatura:
P. | Flach: Simply Logical, John Wiley 1994 | |
V. | Mařík et al: Umělá |
P. | Jirků, P. Štěpánek, O. Štěpánková: Programování v Jazyku Prolog, SNTL 1991 | |
I. | Bratko: Prolog programing for AI, Addison Wesley 2001 (3rd edition) |
Požadavky:
Diskrétní matematika, Logika a grafy, Programování 1+2Poznámka:
Rozsah výuky v kombinované formě studia: 14p+6c |
Klíčová slova:
LISP, PROLOG, funkcionální programování, logické programováníPředmět je zahrnut do těchto studijních plánů:
Plán | Obor | Role | Dop. semestr |
Stránka vytvořena 15.9.2024 12:51:11, semestry: Z/2025-6, Z,L/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) |