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í

  1. * Lisp - údajové typy, základné funkcie na prácu so zoznamami, funkcia QUOTE, predikáty, vetvenie.
  2. Programová realizácia jednoduchých funkcií v lispe.
  3. Programová realizácia jednoduchých funkcií v lispe.
  4. Test - programová realizácia jednoduchých funkcií v lispe.
  5. Python - úvod
  6. Programová realizácia jednoduchých funkcií v pythone.
  7. Programová realizácia jednoduchých funkcií v pythone.
  8. Test - programová realizácia jednoduchých funkcií v pythone.
  9. Programová realizácia jednoduchých predikátov v prologu.
  10. Implementácia údajového typu.
  11. Test - programová realizácia jednoduchých predikátov v prologu.
  12. 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

  1. aktívna účasť na cvičeniach
  2. 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.
  3. prezentovanie vlastnej práce v ktoromkoľvek výstupe z predmetu (vrátane prvého termínu skúšky)
  4. získanie aspoň 40% priebežného hodnotenia (18 bodov)
  5. 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

Home
Research
Projects
Publications
Books
SCM
Teaching
Links
Last updated:
Mária Bieliková bielik [zavináč] fiit-dot-stuba-dot-sk
Design © 2oo1 KoXo