Fakulta informačních technologií VUT v Brně

Detail předmětu

Funkcionální a logické programování

FLP Ak. rok 2018/2019 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), Goedel, CLP a principy jejich implementace.

Garant předmětu

Zástupce garanta předmětu

Jazyk výuky

česky

Zakončení

zápočet+zkouška (písemná)

Rozsah

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

Bodové hodnocení

60 zkouška, 20 půlsemestrální test, 20 projekty

Zajišťuje ústav

Přednášející

Cvičící

Škarvada Libor, RNDr. (UIFS FIT VUT)
Zobal Lukáš, Ing. (UIFS FIT VUT)

Stránky předmětu

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.

Dovednosti, znalosti a kompetence obecné

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í
  2. Lambda kalkul
  3. Programovací jazyk Haskell, úvod, práce se seznamy
  4. Uživatelské datové typy, typové třídy a pole v jazyce Haskell
  5. Vstupy/výstupy v jazyce Haskell - typové třídy IO a Monad
  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. Haskell - základní rysy jazyka, rekurze, seznamy, částečná aplikace, funkce vyššího řádu (map, filter, foldX), ukázka práce s nekonečným seznamem, zkrácené vyhodnocování
  2. Haskell - datové typy, monády, vstup/výstup
  3. Haskell - demonstrační cvičení - konstrukce jednoduchého interpretru s pomocí knihovny Parsec
  4. Prolog - struktura programu, rekurze, seznamy
  5. Prolog - dynamické predikáty, pokročilejší příklad
  6. Prolog - náročnější příklady, testování instanciace proměnných, prohledávání stavového prostor

Osnova ostatní - projekty, práce

  1. Jednoduchý program v jazyce Haskell (Hugs, GHC, GHCi).
  2. Jednoduchý program v jazyce Prolog/Gödel/CLP(R) (SWIPL, Gödel, CiaoProlog).

Průběžná kontrola studia

  • Půlsemestrální zkouška, u které neexistuje náhradní, či opravný termín.
  • Vypracování 2 projektů v průběhu semestru a jejich odevzdání ve stanoveném termínu.

Kontrolovaná výuka

  • Půlsemestrální zkouška - písemná, formou otázek a úkolů, 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ů, 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).

Podmínky zápočtu

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í.

Zařazení předmětu ve studijních plánech

  • Program IT-MGR-2, obor MBI, MSK, libovolný ročník, volitelný
  • Program IT-MGR-2, obor MBS, MIN, MIS, MMI, 1. ročník, povinný
  • Program IT-MGR-2, obor MGM, libovolný ročník, povinně volitelný skupina I
  • Program IT-MGR-2, obor MMM, libovolný ročník, povinný
  • Program IT-MGR-2, obor MPV, libovolný ročník, povinně volitelný skupina M
Nahoru