| Funkcionálne a logické programovanie 
Typ štúdia: bakalárskeOdbor: InformatikaRočník: 2,3.Trvanie: 12 týždňovSemester: LetnýPočet hodín týždenne (prednášky - projekt): 2 - 2Kredity: 6Garant 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.
 
Plagiát je odpísaná pasáž z diela iného autora bez jeho správneho citovania.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). 
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 - úvodProgramová 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čeniachodovzdanie 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 bodovPython test - 5 bodovProlog test - 5 bodovProlog zadanie - 6 bodovAktivita počas semestra - 6 bodovTesty na prednáške
Lisp test - 6 bodovPython test - 6 bodovProlog test - 6 bodovZá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 | 
 |  |  |  |