Babeş–Bolyai Tudományegyetem Kolozsvár
Matematikai és Informatikai Kar  
 _2006-2007-es_  tanév,    _3._  félév 

I.	A tantárgy adatai

A tantárgy neve: Logikai és Funkcionális Programozás
Kód: MID0005
Kreditszám: 5
Hol tartják:
Mikor tarják:

II.	Az oktatók adatai  

Előadás, laboratórium
Név, tudományos cím: Dr. Csató Lehel, adjunktus
Elérhetőség (e-mail, telefon): lehel.csato _at_ cs.ubbcluj.ro
Fogadóóra:

III.	A tantárgy leírása: 

•	Logikai programozás és a Prolog programozási nyelv.
•	Funkcionális programozás és a Clean programozási nyelv.
•	A különböző programozási technikák elemzése, érdekes feladatok programozása.

IV.	Kötelező könyvészet:

[1]. 	Ásványi Tibor - ELTE - logikai programozás oldalai: Prolog. (http://aszt.inf.elte.hu/~asvanyi/pl/jegyzetek)
[2]. 	Prolog könyv - letölthető Mike Spivey oldaláról,  (http://spivey.oriel.ox.ac.uk/mike/logic/index.html)
[3]. 	Learn Prolog Now! (http://www.coli.uni-saarland.de/~kris/learn-prolog-now/)
[4]. 	Szeredi Péter és Benkő Tamás "Nagyhatékonyságú Logikai Programozás" (http://www.cs.ubbcluj.ro/~csatol/log_funk/prolog/SzerediBenko__NagyHatProlog.pdf)
[5]. 	http://www.lpa.co.uk , Logikai Programozás
[6]. 	Clean programozási nyelv kézikönyv (ftp://ftp.cs.kun.nl/pub/Clean/papers/cleanbook/CleanBookI.pdf)
[7]. 	Clean programozási nyelv specifikációja (http://www.cs.ubbcluj.ro/~csatol/log_funk/clean/CleanLangRep.2.1.pdf)
[8]. 	Horváth Zoltán (ELTE programnyelvek tanszék) Funkcionális programozás előadása (http://www.cs.ubbcluj.ro/~csatol/log_funk/clean/HorvathZoltan_ea.pdf)

V.	Az oktatásban használt eszközök:

Számítógép a programozási nyelvek gyakorlására; vetítő az előadásokhoz használt jegyzetek vetítéséhez. Az előadások tematikája, a laborfeladatok és a a kötelező olvasmányok letölthető anyaga megtalálható a http://www.cs.ubbcluj.ro/~csatol/log_funk lapon.

VI.	A tevékenységek és ellenőrzések/részleges vizsgák órarendje:
•	Logikai programozás és a Prolog programozási nyelv.
o	Imperatív és deklaratív nyelvek, a programozási módszertan	(1. hét).
o	Logikai programozási alapfogalmak. Tények a Prolog nyelvben, szabályok, tudásbázis létrehozása.	(2. hét)
o	A cél-kifejezés a Prolog-ban, kiértékelés menete. Változók és összetett predikátumok.	(3. hét)
o	Mintaillesztés szabályai, aritmetikai műveletek, logikai műveletek, egy Prolog program.	(4. hét)
o	Backtracking, a „!” parancs. Listák Prolog-ban.	(5. hét)
o	Rekurzív adatstruktúrák Prolog-ban.	(6-7. hét)
•	Funkcionális programozás és a Clean programozási nyelv.
o	A funkcionális programozási paradigma, történelmi háttér és a Clean programnyelv bemutatása	(8. hét)
o	A Clean függvények, a programnyelv elemei, a rekurzió.	(9. hét)
o	Clean listakezelés, a lista-konstruktorok, listák ábrázolása..	(10. hét)
o	Operátorok, függvények aritása, parciális paraméterezés, lambda-függvények, függvénydefiniciók	(11. hét)
o	Abstrakt adattípusok, konstruktorok, 	(12. hét)
•	A különböző programozási technikák elemzése, érdekes feladatok programozása.
o	Releváns feladatok megoldási módjai 	(13-14. hét)
o	Ismétlés és fontos paradigmák felsorolása	(14. hét)

VII.	Az értékelés módja:

A félév-végi vizsga gyakorlati. A végső jegy a félév során leadott laborfeladatok (40%) és a félév-végi vizsga (60%) súlyozott átlaga. A vizsgán az előadásokon tárgyalt illetve bemutatott  feladatokhoz hasonlóakat kell megoldani.

VIII.	Szervezési kérdések, a különleges esetek kezelése:

Az órákon való jelenlét nem kötelező. Ugyanígy nem kötelező a laborokon való jelenlét sem, azonban a vizsgán feltétel a 3 laborfeladat leadása. A laborfeladatokra 3-4 hét megoldási idő lesz; ezeket a laboratóriumi órák alatt kell bemutatni.

IX.	Ajánlott, de nem kötelező könyvészet:

A témával kapcsolatos információkat a http://www.cs.ubbcluj.ro/~csatol/log_funk lapon teszem elérhetővé.
[1]. 	Ulle Endriss előadása. (http://staff.science.uva.nl/~ulle/teaching/prolog).
[2]. 	http://www.cs.ubbcluj.ro/~csatol/log_funk/prolog/Ulle_Endriss_Prolog.pdf
[3]. 	Learn Prolog Now! -- letölthető dokumentáció  (http://www.coli.uni-saarland.de/~kris/learn-prolog-now/)