Detail předmětu

Funkcionální a logické programování

FLP Ak. rok 2011/2012 letní semestr 5 kreditů

Aktuální akademický rok

Praktické aplikace a širší úvod do lambda kalkulu a predikátové logiky v prostředí funkcionálních a logických programovacích jazyků. V rámci funkcionálního programování jsou diskutovány abstraktní datové typy, použití rekurze a indukce, práce se seznamy a nekonečnými datovými strukturami v jazyce Haskell. V rámci logických jazyků základy programování v jazyce Prolog (operátor řezu, prohledávání stavového prostoru, změna databáze) a Goedel a principy jejich implementace.

Garant předmětu

Jazyk výuky

česky

Zakončení

zápočet+zkouška

Rozsah

  • 26 hod. přednášky
  • 12 hod. pc laboratoře
  • 14 hod. projekty

Zajišťuje ústav

Získané dovednosti, znalosti a kompetence z předmětu

Studenti získají základní znalosti a praktické zkušenosti ve funkcionálním a logickém programování, což jsou významní představitelé deklarativního programování. Kromě toho obdrží základní informace o teoretických základech obou paradigmat a způsobu implementace.

Užití a zvládnutí rekurze pro algoritmizaci.

Cíle předmětu

Zvládnutí principů funkcionálního a logického programování jak prakticky tak i z pohledu formálních základů, které jsou při použití obou paradigmat využívány.

Požadované prerekvizitní znalosti a dovednosti

Způsoby zpracování (analýza, vyhodnocení/interpretace/překlad) programovacích jazyků, predikátová logika.

Literatura studijní

  • Thompson, S.: Haskell, The Craft of Functional Programming, ADDISON-WESLEY, 1999, ISBN 0-201-34275-8
  • Nilsson, U., Maluszynski, J.: Logic, Programming and Prolog (2ed), John Wiley & Sons Ltd., 1995
  • Hill, P., Lloyd, J.: The Gödel Programming Language, MIT Press, 1994, ISBN 0-262-08229-2
  • Bieliková, M., Návrat, P.: Funkcionálne a logické programovanie, Vydavateĺstvo STU, Vazovova 5, Bratislava, 2000.

Literatura referenční

  • Thompson, S.: Haskell, The Craft of Functional Programming, ADDISON-WESLEY, 1999, ISBN 0-201-34275-8
  • Nilsson, U., Maluszynski, J.: Logic, Programming and Prolog (2ed), John Wiley & Sons Ltd., 1995
  • Hill, P., Lloyd, J.: The Gödel Programming Language, MIT Press, 1994, ISBN 0-262-08229-2
  • Bieliková, M., Návrat, P.: Funkcionálne a logické programovanie, Vydavateĺstvo STU, Vazovova 5, Bratislava, 2000.
  • Jones, S.P.: Haskell 98 Language and Libraries, Cambridge University Press, 2003, p. 272, ISBN 0521826144

Osnova přednášek

  1. Úvod do funkcionálního programování, lambda kalkul
  2. Programovací jazyk Haskell, úvod, práce se seznamy
  3. Uživatelské datové typy, typové třídy a pole v jazyce Haskell
  4. Vstupy/výstupy v jazyce Haskell - typové třídy IO a Monad
  5. Praktické úlohy v jazyce Haskell
  6. Dokazování ve funkcionálním programování
  7. Denotační sémantika, implementace funkcionálních jazyků
  8. Prolog, úvod
  9. Seznamy, operátor řezu a řazení v jazyce Prolog
  10. Datové struktury, řetězce, operátory - rozšíření v jazyce SWI Prolog
  11. Stavový prostor, práce s klauzulemi a analýza jazyků v jazyce Prolog
  12. Goedel - logický programovací jazyk nevyužívající Hornovy klauzule
  13. Implementace logických jazyků, CLP, shrnutí, diskuse

Osnova počítačových cvičení

  1. Seznámení s prostředím jazyka Haskell (Hugs), jednoduché funkce, rekurze, seznamy
  2. Nekonečné datové struktury
  3. Uživatelské datové typy, vstupy/výstupy
  4. Praktická úloha, samostatná práce
  5. Seznámení s prostředím jazyka Prolog, seznamy
  6. Praktická úloha, samostatná práce

Průběžná kontrola studia

Student musí během semestru získat alespoň 50% bodů z možného maxima, tj. 20 bodů ze 40.
Pokud bude odhaleno plagiátorství nebo nedovolená spolupráce na projektech, či u půlsemestrální zkoušky, zápočet nebude udělen a dále bude zváženo zahájení disciplinárního řízení.

Kontrolovaná výuka

  • Půlsemestrální zkouška - písemná, formou otázek a úkolů (vyskytují se i otázky s výběrem jedné z nabízených odpovědí), neexistuje náhradní/opravný termín - 20 bodů.
  • Vypracování projektů - 2 projekty, jeden ve funkcionálním a druhý v logickém programovacím jazyce - jednoduché programy, dle zadání - 20 bodů celkem.
  • Závěrečná zkouška - písemná, formou otázek a úkolů (vyskytují se i otázky s výběrem jedné z nabízených odpovědí), 2 opravné termíny (60 bodů - pro získání bodů ze zkoušky je nutné zkoušku vypracovat tak, aby byla hodnocena nejméně 25 body, v opačném případě bude zkouška hodnocena 0 body).
Nahoru