Funkcionálne a logické programovanie
- Typ štúdia: bakalárske
- Odbor: Informatika
- Ročník: 2,3.
- Trvanie: 12 týždňov
- Semester: Letný
- Počet hodín týždenne (prednášky - projekt): 2 - 2
- Kredity: 6
- Garant predmetu: prof. Ing. Mária Bieliková, PhD.
- Cvičenia: Ing. Ivan Kapustík, Ing. Martin Labaj, Ing. Jakub Ševcech, PhD.
|
to Homepage |
|
to Teaching |
|
to FLP |
Akademická bezúhonnosť
Odpisovanie je vedomé prezentovanie cudzej práce ako svoj vlastný výsledok.
- V tomto predmete netolerujeme odpisovanie - v zadaní, v testoch a aj v záverečnom teste (v skúškovom období, v ľubovoľnom z termínov).
Plagiát je odpísaná pasáž z diela iného autora bez jeho správneho citovania.
- V tomto predmete netolerujeme plagiát.
|
to Homepage |
|
to Teaching |
|
to FLP |
|
to the Top |
Nadväznosti a ciele predmetu
V predmete sa vysvetľujú základné princípy funkcionálneho a logického programovania. Diskutujú sa procedurálne a deklaratívne aspekty jednotlivých prístupov a porovnávajú sa s ostatnými paradigmami programovania. Funkcionálne a logické programovanie sa vysvetľuje pomocou príkladov zapísaných v programovacích jazykoch lisp, python a prolog. Predmet buduje predpoklady pre osvojenie si základných implementačných nástrojov, ktoré sa používajú najmä pri vytváraní rôznych aplikácií umelej inteligencie.
Predmet nevyžaduje žiadne zvláštne predbežné znalosti.
|
to Homepage |
|
to Teaching |
|
to FLP |
|
to the Top |
Sylabus
- LISP
- Úvod do aplikatívneho programovania, výrazy, vlastnosti výrazov, funkcie, definícia funkcie, nedefinované prípady, induktívne dôkazy a rekurzívne funkcie, funkcionálne programovacie jazyky.
- Atomické údajové typy, abstraktný údajový typ lisp-zoznam.
- Rekurzia, všeobecný pohľad na rekurziu, práca so zoznamami, príklady rekurzívnych funkcií v lispe, rekurzia a iterácia.
- Schémy rekurzie, funkcionály.
- PYTHON
- Úvod do jazyka Python, výhody funkcionálneho programovania, spájanie funkcionálneho programovania s inými paradigmami.
- Používanie iterátorov na spracovanie zoznamov a na iterovanie cez dátové štruktúry, lambda výrazy, map-reduce.
- Štruktúrovanie kódu - náhrada premenných a tried, closure ako alternatíva k triede, porovnávanie vzorov.
- Ďalšie funkcionálne koncelty - curying, nekonečné postupnosti, lenivé vyhodnocovanie, generátor, monády.
- PROLOG
- Úvod do logického programovania, základné pojmy, údajové objekty jazyka prolog, procedurálna a deklaratívna sémantika jazyka prolog, zoznamy a rekurzia.
- Procedúra pokusu o splnenie zadaného cieľa: Hornove klauzuly, rezolvencia, zisťovanie podobnosti termov, postup odvodenia v prologu.
- Operátory a aritmetika, programovanie cyklov, schémy rekurzie v prologu.
- Riadenie odvodenia riešenia - spätný chod, rez, negácia, poradie klauzúl a cieľov.
|
to Homepage |
|
to Teaching |
|
to FLP |
|
to the Top |
Organizácia a harmonogram predmetu
Prednášky budú okrem termínu v rozvrhu občas aj v ďalšom termíne tak, aby súhrnný počet prednášok a cvičení bol zachovaný (2/2 týždenne).
Harmonogram prednášok sa môže zmeniť. Zmenu vždy včas oznámim na web stránke predmetu v časti Oznamy.
|
Týždeň |
Aula minor |
Aula magna
| PU1 cvičenia |
Ut. 16:00 |
Str. 16:00 |
Plus+ |
Str. |
Štv. |
1. |
12.2.-16.2. |
1c |
-- |
LSP Tut |
-- |
2. |
19.2.-23.2. |
2h |
-- |
-- |
2c |
3. |
26.2.-02.3. |
2h |
-- |
-- |
3c |
4. |
05.3.-09.3. |
2h |
-- |
-- |
4c - test lisp |
5. |
12.3.-16.3. |
2h |
-- |
test lisp |
5c |
6. |
19.3.-23.3. |
2h |
-- |
-- |
6c |
7. |
26.3.-30.3. |
2h |
-- |
-- |
7c |
8. |
02.4.-06.4. |
2h |
1h |
PP1 |
8c - test python |
9. |
09.4.-13.4. |
test python + 1h |
-- |
9c |
-- |
10. |
16.4.-20.4. |
2h |
-- |
-- |
-- |
10c |
11. |
23.4.-27.4. |
2h |
1h |
PP2 |
10c |
11c |
12. |
30.4.-04.5. |
-- |
2h |
-- |
11c |
12c - test prolog |
13. |
07.5.-11.5. |
-- |
1h |
test prolog |
12c - test prolog |
-- |
11.5. |
|
|
|
12c - odovzdanie prolog |
- Na 4, 8 a 12. cvičení môžete získať na každom 5 bodov. Študent s neospravedlnenou neúčasťou stráca nárok na tieto body.
- PP1 a PP2 sú pozvané prezentácie k vybraným problémom na rozšírenie vedomostí - pôjde najmä o praktické ukážky rôznych programovacích jazykov a ich funkcionálnych čŕt.
- Na prednáškach aj cvičeniach je možné získať body za aktivitu.
- Účasť na výučbe je povinná!
- V prvom týždni bude cvičenie v čase prednášok (označené ako 1c).
- K takémuto rozčleneniu cvičení a prednášok sme pristúpili preto, aby cvičenia nepredbiehali odprednášanú látku. Na cvičeniach nebudeme vysvetľovať základy jazyka lisp, python a prolog, ale budeme konzultovať riešené úlohy.
- V 5, 9 a 12. týždni budú na prednáške priebežné testy z jazyka lisp, python, resp. prolog. Hodnotenie testov sa započítava k bodovému ohodnoteniu ku skúške. Prosím sledujte oznamy, kde sa dozviete presný čas a miesto testu.
V prípade neospravedlnenej neúčasti na teste je hodnotenie testu 0 bodov. V prípade ospravedlnenia (choroba s dokladom PN na študijnom oddelení) možno test po dohode absolvovať na niektorej z nasledujúcich prednášok pokiaľ to ešte umožňuje harmonogram semestra.
|
to Homepage |
|
to Teaching |
|
to FLP |
|
to the Top |
Náplň cvičení
- * Lisp - údajové typy, základné funkcie na prácu so zoznamami, funkcia QUOTE, predikáty, vetvenie.
- Programová realizácia jednoduchých funkcií v lispe.
- Programová realizácia jednoduchých funkcií v lispe.
- Test - programová realizácia jednoduchých funkcií v lispe.
- Python - úvod
- Programová realizácia jednoduchých funkcií v pythone.
- Programová realizácia jednoduchých funkcií v pythone.
- Test - programová realizácia jednoduchých funkcií v pythone.
- Programová realizácia jednoduchých predikátov v prologu.
- Implementácia údajového typu.
- Test - programová realizácia jednoduchých predikátov v prologu.
- Odovzdávanie zadania v prologu.
* cvičenie bude v čase prednášky pre všetky skupiny (pozri harmonogram vyššie)
|
to Homepage |
|
to Teaching |
|
to FLP |
|
to the Top |
Podmienky absolvovania predmetu
- aktívna účasť na cvičeniach
- odovzdanie zadania vytvoreného študentom samostatne najneskôr v zápočtovom týždni. Odovzdané programy budú vhodne okomentované a budú mať všetky náležitosti programu.
- prezentovanie vlastnej práce v ktoromkoľvek výstupe z predmetu (vrátane prvého termínu skúšky)
- získanie aspoň 40% priebežného hodnotenia (18 bodov)
- získanie aspoň 56% celkového hodnotenia (56 bodov)
Body 1. až 4. sú zároveň podmienkami na získanie zápočtu.
Akademická bezúhonnosť
Odpisovanie je vedomé prezentovanie cudzej práce ako svoj vlastný výsledok. V tomto predmete sa nebude plagiát (odpísaná pasáž z diela iného autora) tolerovať. Typickym príkladom plagiátu je použitie (častí) práce niekoho iného bez jej citovania. Vzhľadom na povahu výstupov v tomto predmete sa predpokladá, že študent vytvorí dielo (program) samostatne, teda bez použitia práce iných (bez ohľadu na správne citovanie).
Nedodržanie sa podľa Štatútu FIIT STU posudzuje a rieši aj pred disciplinárnou komisiou fakulty pre študentov.
|
to Homepage |
|
to Teaching |
|
to FLP |
|
to the Top |
Hodnotenie predmetu
Spolu 100 bodov:
- Malé príklady cvičenia
- Lisp test - 5 bodov
- Python test - 5 bodov
- Prolog test - 5 bodov
- Prolog zadanie - 6 bodov
- Aktivita počas semestra - 6 bodov
- Testy na prednáške
- Lisp test - 6 bodov
- Python test - 6 bodov
- Prolog test - 6 bodov
- Záverečný test - 55 bodov
Z priebežného hodnotenia cez semester (testy, zadania, aktivita) treba získať aspoň 18 bodov.
Za semester sa dá získať max. 45 bodov.
Známka:
A - výborne |
92 až 100 |
B - veľmi dobre |
83 až 91 |
C - dobre |
74 až 82 |
D - uspokojivo |
65 až 73 |
E - dostatočne |
56 až 64 |
FX - nedostatočne |
menej ako 56 |
|
to Homepage |
|
to Teaching |
|
to FLP |
|
to the Top |
Zdroje pre programovacie jazyky
|
to Homepage |
|
to Teaching |
|
to FLP |
|
to the Top |
Literatúra
Povinná literatúra
- Bieliková, M. a Návrat, P.
- Funkcionálne a logické programovanie. 2. vydanie. STU Bratislava, 2000, 2009.
Odporúčaná literatúra
- Brna, P.
- Prolog Programming: A first course, dostupné na http://oopweb.com/Prolog/Documents/prologbook/VolumeFrames.html.
- Amzi!
- Adventure in Prolog, dostupné na http://www.amzi.com/AdventureInProlog/.
- Bratko, I.
- PROLOG Programming for Artificial Intelligence, Addison-Wesley, 2nd Edition, 1990.
- Kalaš, I.
- Iné programovanie - Stretnutie s jazykom lisp, Alfa, 1990.
- Kolář, J.
- Jazyky pro umělou inteligenci. ČVUT v Praze, Fakulta elektrotechnická. Praha 1994.
- Polák, J.
- PROLOG, Grada, 1992.
- Rowe, N.C.
- Artificial Intelligence trough Prolog, Prentice-Hall International, Inc. 1988.
- Sangal, R.
- Programming Paradigms in Lisp, McGraw-Hill, 1991.
- Van Le, T.
- Techniques of Prolog Programming, John Wiley and Sons, 1993.
- Winston, P.H. and Horn, B.K.I.
- Lisp, 3rd Edition, Addison-Wesley, 1989.
|
to Homepage |
|
to Teaching |
|
to FLP |
|
to the Top |
|
|
|
|