Detail předmětu

Funkcionální a logické programování

FLP Ak. rok 2023/2024 letní semestr 5 kreditů

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

Koordinátor 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 bodů závěrečná zkouška (písemná část)
  • 20 bodů půlsemestrální test (písemná část)
  • 20 bodů projekty

Zajišťuje ústav

Přednášející

Cvičící

Stránky předmětu

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

Proč je předmět vyučován

Čistě deklarativní programovací jazyky jsou fenomén, který umožňuje získat na řadu problémů nový pohled a tak i získat nová, neotřelá řešení.

Požadované prerekvizitní znalosti a dovednosti

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

Technické vybavení

volně dostupné

  • Hugs, GHC, GHCi, SWIPL, Gödel, CiaoProlog

Literatura studijní

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

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.


  • 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ň 7 bodů z půlsemestrální zkoušky (z 20 možných),
  • 4 body z projektu na funkcionální programování (z 12 možných) a
  • 3 body z projektu na logické programování (z 8 možných).

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

Rozvrh

DenTypTýdnyMístn.OdDoKapacitaPSKSkupInfo
Po zkouška 2024-03-18 E104 E105 E112 13:0016:00 Půlsemestrální zkouška z FLP 18. 3. 2024
Po přednáška 1., 2., 3., 4., 5., 6., 7., 8., 12., 13. výuky E104 E105 E112 13:0015:50294 1MIT 2MIT NBIO - NSPE NEMB xx Kolář
Út zkouška 2024-05-07 D0206 D0207 D105 09:0012:50 1. termín
Út poč. lab 1., 3., 5. výuky N204 N205 16:0017:5040 1MIT 2MIT xx Poliakov
Út poč. lab 2., 4., 6. výuky N204 N205 16:0017:5040 1MIT 2MIT xx Poliakov
Út poč. lab 8., 10., 12. výuky N204 N205 16:0017:5040 1MIT 2MIT xx Hranický
Út poč. lab 9., 11., 13. výuky N204 N205 16:0017:5040 1MIT 2MIT xx Hranický
Út poč. lab 2024-03-19 N204 N205 16:0017:5040 1MIT 2MIT xx Dolejška
Út poč. lab 1., 3., 5. výuky N204 N205 18:0019:5040 1MIT 2MIT xx Poliakov
Út poč. lab 2., 4., 6. výuky N204 N205 18:0019:5040 1MIT 2MIT xx Poliakov
Út poč. lab 8., 10., 12. výuky N204 N205 18:0019:5040 1MIT 2MIT xx Hranický
Út poč. lab 9., 11., 13. výuky N204 N205 18:0019:5040 1MIT 2MIT xx Hranický
Út poč. lab 2024-03-19 N204 N205 18:0019:5040 1MIT 2MIT xx Dolejška
St zkouška 2024-05-22 D0206 D105 09:0012:50 2. termín
Čt poč. lab 1., 3., 5. výuky N204 N205 16:0017:5040 1MIT 2MIT xx Poliakov
Čt poč. lab 2., 4., 6. výuky N204 N205 16:0017:5030 1MIT 2MIT xx Poliakov
Čt poč. lab 8., 10. výuky N204 N205 16:0017:5030 1MIT 2MIT xx Hranický
Čt poč. lab 9., 11., 13. výuky N204 N205 16:0017:5040 1MIT 2MIT xx Hranický
Čt poč. lab 2024-03-21 N204 N205 16:0017:5040 1MIT 2MIT xx Dolejška
Čt poč. lab 2024-04-25 N204 N205 16:0017:5030 1MIT 2MIT xx Dolejška
zkouška 2024-06-07 E104 E112 09:0012:50 3. termín
seminář 2024-02-09 E112 10:0012:50154 1MIT 2MIT NBIO - NSPE NEMB xx Kolář Demo

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

Nahoru