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
Zakončení
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í
Hranický Radek, Ing., Ph.D. (UIFS)
Kolář Dušan, doc. Dr. Ing. (UIFS)
Poliakov Daniel, Ing. (UIFS)
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
- Úvod do funkcionálního programování
- Lambda kalkul
- Programovací jazyk Haskell, úvod, práce se seznamy
- Uživatelské datové typy, typové třídy a pole v jazyce Haskell
- Vstupy/výstupy v jazyce Haskell - typové třídy IO a Monad
- Dokazování ve funkcionálním programování
- Denotační sémantika, implementace funkcionálních jazyků
- Prolog, úvod
- Seznamy, operátor řezu a řazení v jazyce Prolog
- Datové struktury, řetězce, operátory - rozšíření v jazyce SWI Prolog
- Stavový prostor, práce s klauzulemi a analýza jazyků v jazyce Prolog
- Goedel - logický programovací jazyk nevyužívající Hornovy klauzule
- Implementace logických jazyků, CLP, shrnutí, diskuse
Osnova počítačových cvičení
- 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í
- Haskell - datové typy, monády, vstup/výstup
- Haskell - demonstrační cvičení - konstrukce jednoduchého interpretru s pomocí knihovny Parsec
- Prolog - struktura programu, rekurze, seznamy
- Prolog - dynamické predikáty, pokročilejší příklad
- Prolog - náročnější příklady, testování instanciace proměnných, prohledávání stavového prostor
Osnova ostatní - projekty, práce
- Jednoduchý program v jazyce Haskell (Hugs, GHC, GHCi).
- 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
Den | Typ | Týdny | Místn. | Od | Do | Kapacita | PSK | Skup | Info |
---|---|---|---|---|---|---|---|---|---|
Po | zkouška | 2024-03-18 | E104 E105 E112 | 13:00 | 16: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:00 | 15:50 | 294 | 1MIT 2MIT | NBIO - NSPE NEMB xx | Kolář |
Út | zkouška | 2024-05-07 | D0206 D0207 D105 | 09:00 | 12:50 | 1. termín | |||
Út | poč. lab | 1., 3., 5. výuky | N204 N205 | 16:00 | 17:50 | 40 | 1MIT 2MIT | xx | Poliakov |
Út | poč. lab | 2., 4., 6. výuky | N204 N205 | 16:00 | 17:50 | 40 | 1MIT 2MIT | xx | Poliakov |
Út | poč. lab | 8., 10., 12. výuky | N204 N205 | 16:00 | 17:50 | 40 | 1MIT 2MIT | xx | Hranický |
Út | poč. lab | 9., 11., 13. výuky | N204 N205 | 16:00 | 17:50 | 40 | 1MIT 2MIT | xx | Hranický |
Út | poč. lab | 2024-03-19 | N204 N205 | 16:00 | 17:50 | 40 | 1MIT 2MIT | xx | Dolejška |
Út | poč. lab | 1., 3., 5. výuky | N204 N205 | 18:00 | 19:50 | 40 | 1MIT 2MIT | xx | Poliakov |
Út | poč. lab | 2., 4., 6. výuky | N204 N205 | 18:00 | 19:50 | 40 | 1MIT 2MIT | xx | Poliakov |
Út | poč. lab | 8., 10., 12. výuky | N204 N205 | 18:00 | 19:50 | 40 | 1MIT 2MIT | xx | Hranický |
Út | poč. lab | 9., 11., 13. výuky | N204 N205 | 18:00 | 19:50 | 40 | 1MIT 2MIT | xx | Hranický |
Út | poč. lab | 2024-03-19 | N204 N205 | 18:00 | 19:50 | 40 | 1MIT 2MIT | xx | Dolejška |
St | zkouška | 2024-05-22 | D0206 D105 | 09:00 | 12:50 | 2. termín | |||
Čt | poč. lab | 1., 3., 5. výuky | N204 N205 | 16:00 | 17:50 | 40 | 1MIT 2MIT | xx | Poliakov |
Čt | poč. lab | 2., 4., 6. výuky | N204 N205 | 16:00 | 17:50 | 30 | 1MIT 2MIT | xx | Poliakov |
Čt | poč. lab | 8., 12. výuky | N204 N205 | 16:00 | 17:50 | 30 | 1MIT 2MIT | xx | Hranický |
Čt | poč. lab | 9., 11., 13. výuky | N204 N205 | 16:00 | 17:50 | 40 | 1MIT 2MIT | xx | Hranický |
Čt | poč. lab | 2024-03-21 | N204 N205 | 16:00 | 17:50 | 40 | 1MIT 2MIT | xx | Dolejška |
Čt | poč. lab | 2024-04-11 | N204 N205 | 16:00 | 17:50 | 30 | 1MIT 2MIT | xx | Dolejška |
Pá | zkouška | 2024-06-07 | E104 E112 | 09:00 | 12:50 | 3. termín | |||
Pá | seminář | 2024-02-09 | E112 | 10:00 | 12:50 | 154 | 1MIT 2MIT | NBIO - NSPE NEMB xx | Kolář Demo |
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, 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
- Program MITAI, obor NADE, NBIO, NCPS, NGRI, NHPC, NIDE, NISD, NISY, NISY do 2020/21, NMAL, NMAT, NNET, NSEC, NSEN, NSPE, NVER, NVIZ, 1. ročník, povinný
- Program MITAI, obor NEMB, NEMB do 2021/22, libovolný ročník, povinný