Babeş–Bolyai Tudományegyetem Kolozsvár
Matematikai és Informatikai Kar  
2005/2006-os tanév, II. félév 

I.	A tantárgy adatai

A tantárgy neve: Programozási nyelvek alapjai
Kód: MID0011
Kreditszám: 5
Hol tartják? (előadás, szeminárium, laboratórium): előadás, laboratórium
•	Előadás: C310
•	Labor: L336
Mikor tarják? (előadás, szeminárium, laboratórium):
•	Előadás: Péntek 10-12
•	Labor: Péntek 8-10; 12-14

II.	Az oktatók adatai
Előadás
Név, tudományos cím: M.Sc. Kovács Lehel István
Elérhetőség (e-mail, telefon): klehel@cs.ubbcluj.ro, 0744251245
Fogadóóra: Szerda, 13:00-14:00, Campus 407-es terem
Szeminárium
Név, tudományos cím: -
Elérhetőség (e-mail, telefon): -
Fogadóóra: -
Laboratórium
Név, tudományos cím: M.Sc. Kovács Lehel István
Elérhetőség (e-mail, telefon): klehel@cs.ubbcluj.ro, 0744251245
Fogadóóra: Szerda, 13:00-14:00, Campus 407-es terem

III.	A tantárgy leírása: 
A számítógép nem rendelkezik semmilyen intelligenciatényezővel, csupán egy bizonyos mennyiségű alapinformációval, amit a számítógép alaptudásának is nevezhetünk. Ahhoz, hogy a számítógépet komolyabb feladatok elvégzésére bírjuk rá, ezeket az alapinformációkat kell kombinálnunk. Ezen alapinformációk összessége, egy adott számítógépre levetítve, az adott számítógép alapművelet-halmazát (instruction set) képezi.
A számítógépek alapműveleteinek kizárólagos felhasználásával nagyon kevés ember tudna számítógép-felhasználóvá válni, ezért a programozás (programírás) elősegítéséért olyan programozási nyelvek és környezetek születtek, amelyekben emberközelibb formában lehet a programokat megírni, és azokat gépi kódra lefordítani. Ezek a magasabb szintű hozzáférési lehetőségek már egy viszonylag szélesebb körű felhasználásnak örvendenek.
60 évvel ezelőtt, 1946-ban Neumann János kidolgozta a korszerű számítógépek megépítésének alapelveit, 1946–1955 között megépültek az első generációs elektronikus számítógépek. 1954–1958 között megjelentek a magas szintű programozási nyelvek (FORTRAN, ALGOL), amelynek segítségével emberközelibb formában lehet a programokat megírni, és azokat gépi kódra lefordítani. Ezt követően a programozási nyelvek gyors fejlődésnek indultak, napjainkban több ezer programozási nyelvről beszélhetünk, és számuk növekszik.
Az előadás célja egy kritériumrendszer felállítása a programozási nyelvek osztályozásához és összehasonlító elemzéséhez, módszertani alapként az oktatáshoz és kutatáshoz, azon kérdés megválaszolására, hogy egy adott feladat megoldásához melyik programozási nyelv biztosít ideális eszközöket, elemeket.
Célja továbbá a meglévő fontosabb nyelvek elemzése és összehasonlító elemzése, valamint egy új programozási nyelv tervezésének lépései, módszertana.

IV.	Kötelező könyvészet:
•	[1.] Bíró Ernő; Kovács Lehel: A programozási nyelvek alapjai, Komp-Press, Kolozsvár, 1997.
•	[2.] Fischer, Alice E.; Grodzinsky, Frances S.: The anatomy of programming languages, Prentice-Hall, 1993.
•	[3.] Horowitz, E. (ed.): Programming Languages: A Grand Tour, Computer Science Press, Rockville, Maryland, 1984.
•	[4.] Horowitz, E.: Fundamentals of Programming Languages, Springer-Verlag, 1983.
•	[5.] Horowitz, E.: Magasszintű programnyelvek, Műszaki Könyvkiadó, Budapest, 1987.
•	[6.] Kovács D. Lehel István: Programozási nyelvek összehasonlító elemzése - Az objektumorientált paradigma, Egyetemi Kiadó, BBTE, Kolozsvár, 2000. ISBN: 973-8095-63-8.
•	[7.] Kovács D. Lehel István: Programozási nyelvek összehasonlító elemzése - A programozási nyelvek anatómiája, Egyetemi Kiadó, BBTE, Kolozsvár, 2004. ISBN: 973-610-280-7.
•	[8.] Nyékyné Gaizler Judit (szerk.): Programozási nyelvek, Kiskapu Könyvkiadó, Budapest, 2003. ISBN: 963-9301-47-7.
•	[9.] Pârv, Bazil; Vancea, Alexandru: Fundamentele limbajelor de programare, Ed. Albastră, Kolozsvár, 1996.

V.	Az oktatásban használt eszközök:
•	számítógép
•	írásvetítő
•	laptop
•	Internet

VI.	A tevékenységek és ellenőrzések/részleges vizsgák órarendje:
1. előadás: Történeti háttér [7.]
•	A számítástechnika és az informatika fogalma
•	A számítástechnika története a XX. századig
2. előadás: Alapfogalmak [7.]
•	A számítástechnika története a XX. században
•	Magyarok a számítástechnika történetében
•	A programozási nyelv fogalma
•	A programozási nyelvek osztályozása
3. előadás: A programozási nyelvek elemzési szempontjai [7.]
•	Elemzési szempontok
4. előadás: A programozási nyelvek kialakulása [7.]
•	A programozási nyelvek alakulása
•	A programozási nyelvek családfája
5. előadás: Programozási nyelvek tervezése [7.], [4.]
•	Lexikális atomok
•	Szintaktika
•	Szemantika
•	Fordítóprogramok, értelmezők
•	Kritériumok
6. előadás: A programozási nyelvek elemei [7.]
•	Változók
•	Konstansok
•	Kifejezések
7. előadás: A programozási nyelvek elemei [7.]
•	Típusok
•	Utasítások
•	Programegységek
8. előadás: Absztrakciós szintek [7.]
•	Eljárások, függvények paraméterei
•	Paraméter átadási módok
•	I/O műveletek
9. előadás: Az objektumorientált paradigma [6.]
•	Valóságmodellezés
•	Osztályok, objektumok
•	Adatrejtés
•	Egybezártság
10. előadás: Az objektumorientált paradigma [6.]
•	Öröklődés
•	Polimorfizmus
11. előadás: Az objektumorientált és vizuális paradigma [6.]
•	Objektumok, osztályok közötti kapcsolatok
•	Perszisztencia
•	Komponensorientált paradigma
•	Negyedik generációs nyelvek
12. előadás: A funkcionális és logikai paradigma [8.], [2.]
•	Lambda-kalkulus
•	Típusos lambda-kalkulus
•	Funkcionális nyelvek
•	A deklaratív paradigma
•	Logikai nyelvek
•	Ötödik generációs nyelvek
13. előadás: A párhuzamos paradigma [8.]
•	Párhuzamos és nem konvencionális architektúrák
•	Adatfolyam architektúrák
•	Szisztolikus architektúrák
•	Futószalag
•	Tömb-processzorok
14. előadás: Végkövetkeztetések [4.]
•	Az elemzések haszna
•	Előnyök, hátrányok

VII.	Az értékelés módja:
•	A hallgatók a félév során egy dolgozatot kell írjanak a félév elején választott programozási nyelv elemzéséből.
•	A hallgatók a félév során négy nagy laborfeladatot kell hogy megoldjanak.
•	A hallgatók a szesszióban írásbeli vizsgán vesznek részt.
•	A hallgatók a szesszióban egy számítógépes tesztet kell hogy megoldjanak, ahol 500 kérdésből véletlenszerűen kiválasztott 20 kérdésre kell hogy feleljenek, a szoftver pontozza a válaszokat.
•	A végső jegy kiszámítása: (2*Dolgozat + Labor1 + Labor 2 + Labor3 + Labor4 + 3*Írásbeli + 2*Teszt) / 11, de csak akkor, ha az írásbeli is, és a tesztjegy is elérte az ötöst.

VIII.	Szervezési kérdések, a különleges esetek kezelése:
•	A jelenlétet írjuk, a jelenlét függvényében kerekítünk fel vagy le a végső jegy átlagszámításánál.
•	Aki az internetről letöltött, vagy már mások által beadott dolgozatot, laborgyakorlatot ad be, az 4-est kap.

IX.	Ajánlott, de nem kötelező könyvészet:
•	Aho, A.V.; Ullmann, J.D.: The Theory of Parsing, Translation and Compiling, Vol. I.-II. Pretice Hall Inc., Englewood Cliffs, N. J., 1972–1973.
•	Aho, A.V.; Ullmann, J.D.: Principles of Compiler Design, Addison-Wesley Publishing Co., Reading, Mass., 1977.
•	Bakos Tamas: A COBOL programozási nyelv, Műszaki Könyvkiadó, Budapest, 1974.
•	Barnes, J.: Programming in Ada95, Springer-Verlag, New York, 1996.
•	Barr, M.; Wells, Ch.: Category Theory for Computer Science, Prentice Hall, London, 1990.
•	Csörnyei Zoltán: Bevezetés a fordítóprogramok elméletébe, Vol. I.-II. ELTE jegyzet, Budapest 1996.
•	Drótos Dániel: Borland Pascal 7.0, LSI Oktatóközpont, Budapest 1993.
•	Hoare, C.A.R.: Communicating Sequential Processes, Pretice Hall, Englewood Cliffs, N. J., 1985.
•	Markó Tamás: A számítástechnika története, JPTE, Pécs, 1996.
•	Meyer, Bertrand: Eiffel. The Language, Prentice Hall, 1992.
•	Mössenböck, H.; Wirth, N.: The Programming Language Oberon-2, Institut für Computersysteme, ETH Zürich, 1993.
•	Negrescu, Liviu: Limbajul C++, Microinformatica, Cluj-Napoca, 1994.
•	Nyékyné G. Judit et al.: Java 2 útikalauz programozóknak, ELTE TTK Hallgatói Alapítvány, Budapest, 1999.
•	Nyékyné G. Judit et al.: Az Ada95 programozási nyelv, ELTE Eötvös Kiadó, Budapest, 1998.
•	Sammet, J.: Programming Languages: History and fundamentals, Prentice Hall, Englewood Cliffs, NJ, 1969.
•	Scott, M.K.: Programming Languages Pragmatics, Morgan Kaufmann, San Francisco, 2000.
•	Sethi, R.: Programming Languages: Concepts and Constructs, Addison-Wesley, Reading Mass., 1996.
•	Stroustrup, Bjarne: A C++ programozási nyelv, Kiskapu, Budapest, 2001.
•	The UNICODE Consortium: The Unicode Standard, Addison-Wesley, Reading Mass., 2000.
•	Vadász Dénes, dr.: Számítógépek, számítógép-rendszerek, Miskolc, 2002.
•	Wirth, N.: Systematic Programming, Pretice Hall, Englewood Cliffs, N. J., 1973.