Universitatea Babeş-Bolyai Cluj-Napoca
Facultatea de Matematică şi Informatică
Ciclul de studii: Licenţă
Domeniul: Informatică
Programul de studii: Informatică - linia de studiu maghiară
Limba de predare: Maghiară

SYLLABUS

I. Általános adatok
Kód	Tantárgy neve	
MID0005	Logikai és Funkcionális Programozás	

Félév	Órák: C+S+L	Kategória	Típus	
3	2+0+1	specialitate	obligatorie	

II. Foállásban az Egyetem oktatói
Név	Tudományos	Oktatói	Tanszék	Tevékenység	
	fokozat	státus		E	Sz	L	
CSATO Lehel	Dr. 	Conf.	Limbaje şi Metode de Programare	*			

Társult oktatók
Név	Tudományos	Intézmény	Állás	Tevékenység 	
	fokozat		típusa	E	Sz	L	

III. A tantárgy célkituzései
1. Új programozási paradigmák elsajátítása;
2. A programozási paradigmákhoz tartozó programozási nyelvek bemutatása:
     A logikai programozást a Prolog programozási nyelvvel;
     A funkcionális programozást a Clean programozási nyelvvel.
3. Az elsajátított programozási nyelvek és módszerek használatának körülményei
4. A programozási technikák elemzése, érdekes feladatok programozása.	

IV. A tantárgy tartalma
•	Logikai programozás és a Prolog programozási nyelv:
Imperatív és deklaratív nyelvek, különböző programozási módszertanok, a logikai programozás alapfogalmai. Tények a Prolog nyelvben, szabályok, illetve tudásbázis létrehozása, Cél-kifejezés a Prolog-ban, a kiértékelés menete. Változók és összetett predikátumok. Mintaillesztés szabályai, aritmetikai műveletek, logikai műveletek. Backtracking, a „!” parancs. Listák Prolog-ban. Rekurzív adatstruktúrák Prolog-ban. 
•	Funkcionális programozás és a Clean programozási nyelv:
A funkcionális programozási paradigma, a Clean programnyelv bemutatása, a Clean függvények, a programnyelv elemei,  rekurzió. Clean listakezelés, a lista-konstruktorok, listák ábrázolása. Operátorok, függvények aritása, parciális paraméterezés, lambda-függvények, függvénydefiniciók. Abstrakt adattípusok, konstruktorok, 
•	Funkcionális programozás és a Lambda-kalkulus:
definíciók, a programozási modell, példák a Clean nyelvből.
A különböző programozási technikák elemzése, érdekes feladatok programozása. Releváns feladatok megoldási módjai.	

V. Könyvészet
[1]. 	Serban G., Pop H.F. (2006) Elemente avansate de programare in Lisp si Prolog. Aplicatii in Inteligenta Artificiala, Editura Albastra.
[2]. 	Ásványi Tibor - ELTE - logikai programozás oldalai: Prolog. (http://aszt.inf.elte.hu/~asvanyi/pl/jegyzetek)
[3]. 	Prolog könyv - letölthető Mike Spivey oldaláról,  (http://spivey.oriel.ox.ac.uk/mike/logic/index.html)
[4]. 	Learn Prolog Now! (http://www.coli.uni-saarland.de/~kris/learn-prolog-now/)
[5]. 	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)
[6]. 	http://www.lpa.co.uk , Logikai Programozás
[7]. 	Reede, C. (1989) Elements of Functional Programming, Addison Wesley.
[8]. 	Field A. (1988) Functional Programming, Addison Wesley, New York.
[9]. 	Clean programozási nyelv kézikönyv (ftp://ftp.cs.kun.nl/pub/Clean/papers/cleanbook/CleanBookI.pdf)
[10]. 	Clean programozási nyelv specifikációja (http://www.cs.ubbcluj.ro/~csatol/log_funk/clean/CleanLangRep.2.1.pdf)
[11]. 	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)

VI. Az oktatói tevékenység heti tematikája
•	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, a 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 hét)
•	Funkcionális programozás és a Clean programozási nyelv.
o	A funkcionális programozási paradigma,
A Clean programnyelv bemutatása	(7. hét)
o	A Clean függvények, a programnyelv elemei, a rekurzió.	(8. hét)
o	Clean listakezelés, a lista-konstruktorok, listák ábrázolása..	(9. hét)
o	Operátorok, függvények aritása, parciális paraméterezés,
lambda-függvények, függvénydefiniciók	(10. hét)
o	Abstrakt adattípusok, konstruktorok, 	(11. hét)
•	A lambda-kalkulus és a matematikai programmodell
o	A lamdba-kalkulus alapfogalmai	(12. hét)
o	Clean-példák a lambda kalkulus implementációjára	(13. hét)
•	Ismétlés és fontos paradigmák felsorolása	(14. hét)

VII. Alkalmazott didaktikai módszerek
Kifejtés módszere, a problematizálás módszere, rákérdezés és rávezetés, egyéni feladatok megoldására való ösztönzés.
Használunk a megfelelő programnyelvekkel ellátott számítógépeket gyakorlásra; vetítőt az előadásokhoz tartozó jegyzetek kivetí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.	

VIII. Értékelés
A félév-végi jegy írásbeli vizsga eredménye. A vizsgán való részvételhez szükséges a labor- illetve gyakorlati órákon kiadott feladatoknak a leadása, ezek a vizsgapontok 40%-át jelentik, az írásbeli a maradék 60%-ot.
A félév során lehetőség van szemináriumokon bemutatót tartani. Ezen diákok mentesülnek a vizsga alól, de a laborfeladatokat nekik is be kell mutatniuk.	

IX. Kiegészíto 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/)

	Dékán,						Tanszékvezető,

Dátum,								Előadás felelőse,

2009. okt. 4								Lect. Dr. CSATÓ Lehel