Název:

Funkcionální a logické programování

Zkratka:FLP
Ak.rok:2015/2016
Semestr:letní
Studijní plán:
ProgramOborRočníkPovinnost
IT-MGR-2MBI-volitelný
IT-MGR-2MBS1.povinný
IT-MGR-2MGM-povinně volitelný - skupina I
IT-MGR-2MIN1.povinný
IT-MGR-2MIS1.povinný
IT-MGR-2MMI1.povinný
IT-MGR-2MMM-povinný
IT-MGR-2MPV-povinně volitelný - skupina M
IT-MGR-2MSK-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č.lab. cvič.poč. cvič.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í:Hyrš Martin, Ing. (UPSY)
Matula Peter, 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), Goedel, CLP 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í
  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).
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ů, 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). Zkouška má jeden řádný a dva opravné termíny. Řádný termín zkoušky bude realizován písemnou formou, opravné termíny budou realizovány formou písemnou nebo kombinovanou (tedy písemně i ústně v jeden den - nejdříve písemná, ihned následuje ústní část). Forma opravných termínů zkoušky bude oznámena vždy po vyhodnocení předchozího termínu zkoušky, přičemž kombinovaná forma zkoušky bude zvolena tehdy, pokud se daného termínu zkoušky bude moci zúčastnit nejvýše 16 studentů.
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í.
 

Vaše IPv4 adresa: 35.172.201.102
Přepnout na IPv6 spojení

DNSSEC [dnssec]