Název:

Funkcionální a logické programování

Zkratka:FLP
Ak.rok:2011/2012
Semestr:letní
Studijní plán:
ProgramOborRočníkPovinnost
IT-MGR-2MBI-volitelný
IT-MGR-2MBS1.povinný
IT-MGR-2MGM1.povinný
IT-MGR-2MGM.1.volitelný
IT-MGR-2MIN1.povinný
IT-MGR-2MIN.1.volitelný
IT-MGR-2MIS1.povinný
IT-MGR-2MIS.1.volitelný
IT-MGR-2MMI1.povinný
IT-MGR-2MMM1.povinný
IT-MGR-2MPS-volitelný
IT-MGR-2MPV1.povinný
IT-MGR-2MSK-volitelný
IT-MGR-2EITE2.volitelný
Vyučovací jazyk:čeština
Informace veřejné:http://www.fit.vutbr.cz/study/courses/FLP/public/
Informace pro zapsané:http://www.fit.vutbr.cz/study/courses/FLP/private/
Kredity:5 kreditů
Ukončení:zápočet+zkouška (písemná)
Výuka:
hod./sempřednáškasem./cvičenílab. cvičenípoč. cvičeníjiná
Rozsah:26001214
 zkouškatestycvičenílaboratořeostatní
Body:60200020
Garant:Kolář Dušan, doc. Dr. Ing., UIFS
Přednášející:Kolář Dušan, doc. Dr. Ing., UIFS
Cvičící:Halfar Patrik, Ing., UIFS
Křivka Zbyněk, Ing., Ph.D., UIFS
Židek Stanislav, Ing., UIFS
Fakulta:Fakulta informačních technologií VUT v Brně
Pracoviště:Ústav informačních systémů FIT VUT v Brně
Nahrazuje:
Funkcionální a logické programování (FLP), UIFS
 
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.
Anotace:
  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.
Požadované prerekvizitní znalosti a dovednosti:
  Způsoby zpracování (analýza, vyhodnocení/interpretace/překlad) programovacích jazyků, predikátová logika.
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.
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
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).
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
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.
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).
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.
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í.