Informatika a felsőoktatásban 2008 Debrecen, 2008. augusztus 27-29. JAVA PROGRAMOZÁSI NYELV OKTATÁSA C# ALAPOKON



Hasonló dokumentumok
SZOFTVEREK A SORBANÁLLÁSI ELMÉLET OKTATÁSÁBAN

SZAKDOLGOZAT. Kiss Albert

A DEBRECENI MÉRNÖK INFORMATIKUS KÉPZÉS TAPASZTALATAIRÓL. Kuki Attila Debreceni Egyetem, Informatikai Kar. Összefoglaló

IFJÚSÁG-NEVELÉS. Nevelés, gondolkodás, matematika

Fejlesztési tapasztalatok multifunkciós tananyagok előállításával kapcsolatban Nagy Sándor

INFORMATIKA. 6 évfolyamos osztály

IT KOCKÁZATOK, ELEMZÉSÜK, KEZELÉSÜK

Nemzeti Alaptanterv Informatika műveltségterület Munkaanyag március

INFORMATIKAI SZOLGÁLTATÁSIRÁNYÍTÁS. Katona Krisztina, Kurdi Zsombor Budapesti Műszaki Főiskola Neumann János Informatikai Kar.

közötti együttműködések (például: közös, több tantárgyat átfogó feladatok), továbbá az aktív részvétel a kulturális, társadalmi és/vagy szakmai

Gyorsjelentés. az informatikai eszközök iskolafejlesztő célú alkalmazásának országos helyzetéről február 28-án, elemér napján KÉSZÍTETTÉK:

Informatika helyi tanterv Tildy Zoltán Általános Iskola és Alapfokú Művészeti Iskola

MultiMédia az oktatásban

A PROGRAMOZÁSI TECHNOLÓGIA TANTÁRGY OKTATÁSA A GÁBOR DÉNES FŐISKOLÁN

KÜLSÕ CÉGEK TÁMOGATÁSÁVAL MEGVALÓSÍTOTT, 4GL ÉS CASE ESZKÖZÖKRE ALAPOZOTT KÉPZÉS A SZÉCHENYI ISTVÁN FÕISKOLÁN

TÁVOKTATÁSI TANANYAGOK FEJLESZTÉSÉNEK MÓDSZERTANI KÉRDÉSEI

A Szekszárdi I. Béla Gimnázium Helyi Tanterve

Az irányelv-alapú elemzés, valamint az ön- és társértékelés módszereinek alkalmazása az informatikus képzésben

Robotot vezérlő szoftverek fejlesztése Developing robot controller softwares

Fogyatékossággal élő emberek életminősége és ellátási költségei különböző lakhatási formákban

BIZONYOS GRÁFELMÉLETI ALGORITMUSOK TANÍTÁSA ELEGÁNSAN KISS LÁSZLÓ

JÓ GYAKORLATOK MEGOSZTÁSA

A TÉRINFORMATIKA OKTATÁSA ÉS ALKALMAZÁSI LEHETÕSÉGEI

INFORMATIKA 5-8. évfolyam

erő/nyomaték további kapcsolások, terhelések első kapcsolás, terhelés oldás, leterhelés deformáció

E-learning a pedagógusok és könyvtárosok továbbképzésében Pomozi István

KÉPI INFORMÁCIÓK KEZELHETŐSÉGE. Forczek Erzsébet SZTE ÁOK Orvosi Informatikai Intézet. Összefoglaló

DIGITAL ETERNITY: DATABASES AND APPLICATIONS ON CD-ROM IN OUR EDUCATIONAL PRACTICE

Apor Vilmos Katolikus Iskolaközpont. Helyi tanterv. Informatika. készült. a 51/2012. (XII. 21.) EMMI rendelet 2. sz. melléklet 5-8./

Korszerű raktározási rendszerek. Szakdolgozat

A STRATÉGIAALKOTÁS FOLYAMATA

feladatok meghatározása során elsősorban az eszközök ismeretére, az eszközökkel megvalósítható lehetőségek feltérképezésére és az alkotó

INFORMATIKA Helyi tantárgyi tanterv

1. Az informatikai eszközök használata

E-KOMPETENCIA: ÚJ TECHNOLÓGIÁK ÉS PEDAGÓGIAI FELADATOK AZ INTERNETES TÁVOKTATÁSBAN

Gyarmati Dezső Sport Általános Iskola. Informatika HELYI TANTERV 6-8. ÉVFOLYAM. KÉSZÍTETTE: Oroszné Farkas Judit Dudásné Simon Edit


Az enyhe értelmi fogyatékos fővárosi tanulók 2009/2010. tanévi kompetenciaalapú matematika- és szövegértés-mérés eredményeinek elemzése

TARTALOM ÖSSZEFOGLALÓ... 5 BEVEZETÉS, A KUTATÁS KÖRÜLMÉNYEI...14 A kvantitatív kutatás módszertana, a válaszok területi megoszlása...

MEZŐGAZDASÁGI HULLADÉKOT FELDOLGOZÓ PELLETÁLÓ ÜZEM LÉTESÍTÉSÉNEK FELTÉTELEI

Publikációs jegyzék. Sitkuné Görömbei Cecília PKK, Tanítóképző Intézet

Nyugat-magyarországi Egyetem Geoinformatikai Kara. Nagy Gábor. Informatika 16. INF16 modul. Az OpenOffice.org

TÁMOP /1 Új tartalomfejlesztések a közoktatásban pályázathoz Budapest, december 19.

A Szekszárdi I. Béla Gimnázium Helyi Tanterve

részvétel a kulturális, társadalmi és/vagy szakmai célokat szolgáló közösségekben és hálózatokban. Az informatika tantárgy fejlesztési feladatait a

Az informatika tantárgy fejlesztési feladatait a Nemzeti alaptanterv hat részterületen írja elő, melyek szervesen kapcsolódnak egymáshoz.

Árpád Fejedelem Gimnázium és Általános Iskola Megyervárosi Iskola MÁSODIK IDEGEN NYELV

FIATAL MŰSZAKIAK TUDOMÁNYOS ÜLÉSSZAKA

Az informatika tantárgy fejlesztési feladatait a Nemzeti alaptanterv hat részterületen írja elő, melyek szervesen kapcsolódnak egymáshoz.

ERKI KATALIN* A felsőoktatás, mint versenypiac elemzése a Porter-modell alapján

A "MENEDZSER-INFORMATIKA" OKTATÁSI TAPASZTALATAI

10. K ÖZMŰ SZERŰ IT-SZOLGÁLTATÁS

IT biztonság és szerepe az információbiztonság területén

A tanulásban akadályozott gyermekek idegen nyelvtanulásának aktuális kérdései Magyarországon 1

KÖZÖSSÉGI PORTÁL HASZNÁLATA AZ INFORMATIKAI TÁRGYÚ

TECHNIKAI RENDSZEREK ÁLLAPOTLEÍRÁSÁNAK KÉRDÉSEI QUESTIONS REGARDING THE DESCRIPTION OF THE STATE OF TECHNICAL SYSTEMS

Az informatika tantárgy fejlesztési feladatait a Nemzeti alaptanterv hat részterületen írja elő, melyek szervesen kapcsolódnak egymáshoz.

HELYI KONFLIKTUSOK AZ ÍROTT MÉDIÁBAN

Fiáth Attila Nagy Balázs Tóth Péter Dóczi Szilvia Dinya Mariann

A távmunka és a távdolgozók jellemzői

Széchenyi István Szakképző Iskola

Óbudai Egyetem. Doktori (PhD) értekezés. Adatpárhuzamos sejtmagkeresési eljárás fejlesztése és paramétereinek optimalizálása Szénási Sándor

Matematika 9. évfolyam

DÉVAVÁNYA VÁROS ÖNKORMÁNYZATÁNAK KÖZÉPTÁVÚ ( ) INFORMATIKAI STRATÉGIÁJA, INFORMATIKAI FEJLESZTÉSI TERVE

PEDAGÓGIAI PROGRAM. Jóváhagyta: Békés Megye Képviselő-testülete Humán Ügyek Bizottsága

Budapest a kulturális turizmus szemszögéből A Budapesti Kulturális Munkacsoport tanulmánya. Szerzők: Nyúl Erika és Ördög Ágnes 1

*#Discount~ Kaspersky Internet Security - multidevice 2015 best software to buy for mac ]

Angol Középfokú Nyelvvizsgázók Bibliája: Nyelvtani összefoglalás, 30 kidolgozott szóbeli tétel, esszé és minta levelek + rendhagyó igék jelentéssel

A korai kéttannyelvű oktatás hatása a kisiskolások anyanyelvi szövegértési és helyesírási kompetenciájára

Két projekt - Két év. etrik TISZK

HELYI TANTERV KÉMIA 7-8. évfolyam

Szakmai program 2015

ÓRATERV A pedagógus neve: Horváth Attila Tantárgy: Irodalom Osztály: 10. Az óra témája: Petőfi Sándor, Felhők ciklus

Hazai Leonardo mobilitási projektek ECVET elemeinek vizsgálata és jó példák gyűjtése

DSI működésre. tervezve. Hogyan fog kinézni a jövő informatikai infrastruktúrája? Egész szoftverrendszerek egy

Változó, alakuló (mobil) szakma. Partneri kapcsolatokra épített szakma.

VÍZBIZONSÁGI TERV SZEREPE AZ IVÓVÍZELLÁTÁS BIZTONSÁGI RENDSZERÉBEN

PÁNTYA RÓBERT MESTERSÉGES INTELLIGENCIA ELEMEKKEL TÁMOGATOTT PROGRAMOZÁS OKTATÁSA

Az MS Access adatbázis-kezelő program

A szelektív utánzás mint a kulturális tanulás eszköze

Az audiovizuális médiaszolgáltatásokról szóló irányelv implementációja és az évi I. törvény

SZAKIRÁNYOK A MISKOLCI EGYETEM MÛSZAKI INFORMATIKAI SZAKÁN

Dr. Pétery Kristóf: AutoCAD LT 2007 Fóliák, tulajdonságok

A digitális esélyegyenlőség helyzete Magyarországon

Ipari Robotok Programozása

C++ programozási nyelv

Tehetséggondozás a munkahelyen

LÉTRADIAGRAM FORDÍTÓK ELMÉLETE PLC VEZÉRLÉSEK SZÁMÁRA II.

A családi háttér és az iskolai utak eltérései

Helyi tanterv. Batthyány Kázmér Gimnázium Matematika emelt ( óra/hét) 9-12 évfolyam Készült: 2013 február

MŰSZAKI OKTATÁS SZEREPE A B KATEGÓRIÁS JÁRMŰVEZETŐ KÉPZÉSBEN FUNCTION OF TECHNICAL TRAINING IN DRIVER S EDUCATION OF CATEGORY B

Miskolci Egyetemi Publikációs Adatbázis

Károlyi Mihály Fővárosi Gyakorló Kéttannyelvű Közgazdasági Szakközépiskola június 25.

Programozási technikák Pál László. Sapientia EMTE, Csíkszereda, 2009/2010

A HALLGATÓK FELKÉSZÍTÉSE AZ E-LEARNINGBEN VALÓ RÉSZVÉTELRE A SZÉCHENYI ISTVÁN EGYETEMEN

A SZÁMÍTÓGÉPPEL SEGÍTETT VIZSGÁZTATÁS EGY SAJÁT FEJLESZTÉSŰ ALKALMAZÁSA

FELADATMEGOLDÁSI SZOKÁSAINAK VIZSGÁLATA. Baranyai Tünde

A Nyugat-dunántúli Regionális Fejlesztési Ügynökség

A könyvtári minőségirányítás bevezetésére

Annak ellenére, hogy a számítógépes szövegszerkesztés az utóbbi 10 évben általánossá vált, az irodai papírfelhasználás

Átírás:

JAVA PROGRAMOZÁSI NYELV OKTATÁSA C# ALAPOKON TEACHING OF JAVA PROGRAMMING LANGUAGE ON BASIC LEVEL Szénási Sándor Budapesti Műszaki Főiskola, Neumann János Informatikai kar Összefoglaló Az informatika karokon mindig jelentős kérdésként merül fel, hogy a hallgatók milyen programozási nyelven ismerjék meg az implementációs gyakorlatot. Mivel nehéz erre egyértelmű választ találni, a legtöbb esetben nem egy, hanem egymást követően (vagy akár egymással párhuzamosan) több különböző, egymást kiegészítő programozási nyelv oktatása jelenti a megoldást. A hagyományosnak tekinthető Pascal és C nyelven történő alapozást egyre gyakrabban váltják fel modern, objektumorientált nyelvek, amelyek ismerete szinte naprakész, a piacon felhasználható tudást ad a hallgatók számára. Jelenleg a két legkurrensebb ilyen programozási nyelv a Sun által kifejlesztett Java és a Microsoft által támogatott C# nyelv. A Budapesti Műszaki Főiskola Neumann János Informatikai Kara két éve az alapozó nyelv esetén áttért a C# programozási nyelvre, emellett a hallgatók a későbbi félévekben megismerkedhetnek a Java nyelvvel is. Előadásom vezérfonalát az a felismerés alkotja, hogy e két nyelv felépítése, logikája és szintaxisa egymáshoz nagyon közeli. Ez számos előnyt jelent, hiszen a hallgatóknak nem kell egy egészen új rendszert megismerniük, azonban néhány nehézséget is rejt, mivel két egymáshoz nagyon közeli fogalmi rendszert kell elsajátítaniuk, ami meglehetősen nagy odafigyelést igényel. Az oktatókat is jelentős kihívások elé állítja, hiszen az eddig megszokottaktól (új nyelv oktatása az alapoktól) eltérően, új módszertant kell kidolgozniuk, mivel az új nyelv alapjai sokban megegyeznek a már megismerttel, de az apró különbségek ismerete mégis nélkülözhetetlen az eredményes munkához. Kulcsszavak C#, Java, Programozás oktatás, BMF Abstract It s a difficult problem to choose the best programming language for students in informatics to practice software implementation. Therefore institutions usually support more than one complementary languages sequentially (or side by side) to solve this problem. The traditional Pascal and C language based learning has been replaced by modern objectoriented languages, offering up-to-date knowledge to students. The main programming languages of this kind are Java (developed by Sun) and C# (developed by Microsoft). The John von Neumann Faculty of Informatics of Budapest Tech has done this step two years ago, therefore nowadays the initial language is C# and students learn Java in further semesters. My lecture is about similarity (and difference) between these programming languages, like architecture, base logic and syntax. It is beneficial for the students to learn analogous languages because they don t have to come to know a new system that makes all the difference. But there is a lot of difficulty in this, because students must learn bewilderingly similar conceptual systems which needs major attention. Likewise it s a big challenge for teachers because they need a new method to teach a new programming language from the begining but based on a well-known similar language. Keywords C#, Java, Teaching programming, BMF 1

1. Programozás tárgyakat érintő változások a BMF-NIK-en A Budapesti Műszaki Főiskola Neumann János Informatikai Karán 2006 őszében került bevezetésre egy merőben új koncepció a programozás tárgyak oktatását illetően. Ez volt az első jelentős változtatás az elődintézmények összevonása óta kialakult rendszerben, amelynek alapja a Delphi programozási nyelv oktatása volt 3 féléven keresztül, emellett a 2. és 3. félévben a hallgatók kötelezően választhattak két másik, a C# és a Java nyelv megismerése közül. A módosítás egyik fő oka az objektumorientált programozás (Sergyán et al., 2003) előtérbe helyezése volt, emellett azonban felmerült egy esetleges változtatás lehetősége a programozási nyelveket illetően is. Bár a Delphi (fejlesztési céljának megfelelően) tökéletesen alkalmas volt a kezdő programozók első lépéseinek megtételére, a későbbiekben használata gyakran nehézségekbe ütközött a haladó témakörök környékén. Bár ezzel a nyelvvel is megoldható a szükséges feladatok többsége (web alapú alkalmazások fejlesztése, elosztott rendszerek készítése, többszálú programok megvalósítása stb.), úgy találtuk, hogy mindkét másik nyelv ezekre kifinomultabb és gyakran könnyebben tanítható megoldásokat nyújt. A fenti nyelvek további előnye, hogy mindkét választás esetén a hallgató sokkal könnyebben tud megtanulni egyéb C alapú programozási nyelveket, amelyek sok mérnöki szakterületen nélkülözhetetlenek a továbblépéshez, példaként említve akár a karunkon tradicionális mobil eszközök, illetve a szintén népszerű robotok programozását (Vámossy, 2007). A két nyelv közötti döntés már jóval nehezebb kérdés volt, végül a különböző (akkor elérhető) fejlesztőeszközök lehetőségeinek áttekintése, és a hallgatók számára lényeges funkciók (az informatikus hallgatók jellemzően Windows alapú desktop alkalmazások fejlesztését tanulják) összehasonlítását követően a C# lett a választott alapnyelv. Az új tematika alapján tehát ezen nyelv segítségével sajátíthatják el az objektumorientált programozási alapokat az első félévben, a vizuális eseményvezérelt programok és az adatszerkezetek használatát a második félévben, illetve további haladó programozási technikákat a harmadik félévben. Az alapnyelv kiválasztását követően merült fel a kérdés, hogy szükség van-e emellett további programozási nyelvek megismerésére, és ha igen, melyik legyen az (vagy akár melyek legyenek azok?). Mivel szerettük volna, hogy a hallgatók lehetőség szerint minél átfogóbb képet kapjanak a jelenleg elérhető eszközökről, illetve szerettük volna azt is elkerülni, hogy a végzett informatikus hallgatók számára a programozás csak és egyértelműen a Visual Studio keretrendszert, illetve azon belül a C# nyelv használatát jelentse, a két különböző nyelv oktatása mellett döntöttünk. A második nyelv kiválasztása egyszerűnek tűnt, a Delphi további oktatását ugyanis a fent vázolt problémák miatt nem szerettük volna folytatni a törzsanyag részeként (esetleg fakultatív tárgyként jelenhet meg a későbbiekben). Választásunk emiatt a már eddig is oktatott Java nyelvre esett, ami a hallgatók számára egy alapelveiben hasonló, de számos területen mégis egy más szemléletmód megismerését jelentheti. Bár a C# nyelv látványos elterjedése némileg visszaszorította a Java nyelvű fejlesztések arányát, azért még így is bátran állítható (két év távlatából is), hogy a másodiknak választott nyelv is kurrens, értékelhető tudást jelent a végzett hallgatók számára a piacon. Mindkét esetben kiforrott, a gyakorlatban már bizonyított eszközről van szó, ennek köszönhetően a hallgatók számára fontos irodalom (tankönyvek, referencia könyvek, internetes anyagok) is megfelelő számban és minőségben rendelkezésre állnak. Köztük a kar 2

oktatói által írt könyvek is megtalálhatók, amelyek jelentős részben lefedik az oktatott tananyagot a fent említett nyelvek használatával (Kotsis et al., 2007). 2. C# és Java nyelv hasonlósága A két választott nyelv között meglehetősen sok hasonlóságot lehet észrevenni, ezt bizonyítja az interneten található számtalan, a tapasztalható különbségeket és azonosságokat taglaló oldal. De ezen túlmenően szakkönyvekben is gyakran kerül közös tárgyalásra a két nyelv, illetve gyakran találkozhatunk az egyik ismeretét feltételező, a másik nyelvet ennek segítségével bemutató írásokat is (Jones, Freeman, 2002). Mindezek puszta léte is azt mutatja, hogy az oktatás során sem célszerű ezeket egymástól függetlenül kezelni, hanem az egyik megismerése után praktikus a meglévő ismeretekre és a felmerülő hasonlóságokra alapozni. Ha egy pillanatra túllépünk a nyelveken, akkor jól látható, hogy ez a hasonlóság már a mögöttük álló futtatókörnyezetekben is felismerhető. Bár megvalósításuk részleteiben számos különbség jelenik meg, fontos hasonlóság, hogy az általunk használt fejlesztőeszközök segítségével egyik nyelven írt programból sem lesz natív kód a fordítás végeredménye. A Java esetén a fordító a forrásállományokból egy úgynevezett Java bájtkódot állít elő, amit a későbbiekben a JVM segítségével tudunk futtatni. A C# esetében ez annyiban különbözik, hogy a fordító egy köztes nyelvű forrást állít elő, ami futásidőben a gazda gép architektúrájának megfelelően kerül fordításra, majd az így létrejött natív kód indul el automatikusan. Bár a két technika megvalósítását tekintve sokban különbözik egymástól, a hallgatók számára azonban mégis sokkal lényegesebbek az ebből adódó hasonlóságok, amik általában előnyöket takarnak. Mivel az általuk írt kód csak egy futtatókörnyezeten keresztül kerül végrehajtásra, így ennek számos szolgáltatását egyszerűen kihasználhatják (pl. a szemétgyűjtő mechanizmusnak köszönhetően nincs szükség a lefoglalt memóriaterületek kézi felszabadítására, ami a hagyományos nyelveknél számos problémát okozott). public class MaximumKereso { int[] A; int N; public MaximumKereso(int N) { this.n = N; A = new int[n]; public int MaximalisElem() { if (N == 0) throw new SajatKivetel("Nincs elem"); int max = 0; for (int i = 1; i < N; i++) { if (A[i] > A[max]) max = i; return max; 1. ábra egyszerű osztály, amely mindkét nyelv alatt helyes A programozás első lépéseit tekintve (saját osztály definiálása) a legszembetűnőbb a két nyelv hasonlósága. Az alap gondolatmenet, a megvalósítandó lépések, de még a nyelvi kulcsszavak is szinte teljes egészében megegyeznek. Példaként látható, hogy az 1. ábrán megvalósított osztály tartalmaz tömböt, metódusokat, ciklust, elágazást, saját kivétel dobást, de mindezek kezelése javarészt azonos mindkét nyelv esetén. 3

Ez természetesen nem meglepő, hiszen mindkét nyelv nem titkoltan a C és C++ nyelvek alapjaira építkezik, illetve ezen túlmenően egymás fejlődését figyelemmel kísérve láthatóan a másik által megvalósított, és bevált eszközöket is próbálják adaptálni. Természetesen nem helyezhetünk egyenlőségjelent a két programozási nyelv közé, számos apró (pl. protected kulcsszó különbsége stb.), illetve néhány szembetűnő (pl. tulajdonságok megléte vagy hiánya, eseménykezelési módszerek stb.) különbség található. Ezek megismerését követően azonban elmondható, hogy a C# nyelvet már magabiztosan kezelő hallgató meglehetősen egyszerűen el tudja sajátítani a Java nyelv használatát. Mindez persze nem kérdőjelezi meg a két nyelv létjogosultságát, megismerésük során számos, a szintaktikai jelöléseken messze túlmutató, architektúrális különbséggel találkozunk (pl. Enterprise JavaBeans stb.). Ezek oktatása azonban jelenleg nem tartozik a képzés törzsanyagához, így a hallgatóknak a két párhuzamos környezet közül főképpen csak a kiinduló, a fentiek alapján láthatóan hasonló részterületeket kell megismerniük. A gyakorlati munka során szintén sok hasonlóságot fedezhetünk fel, ugyanis mindkét nyelv esetén egy meglehetősen kiterjedt beépített osztálykönyvtárral dolgozhatunk. Ezek a hagyományos nyelvekben megismert alapvető funkciókon túl (pl. állományok kezelése, konverziók stb.) számos jóval összetettebb műveletet is támogatnak (pl. gyűjtemények, tömörítés, különböző segédosztályok stb.). A két osztálykönyvtár felépítésében, illetve az egyes osztályok, metódusok neveiben természetesen eltér egymástól, de a két rendszer által használt alapkoncepció megértését követően egyszerűen megtalálhatók a szükséges elemek. Az osztálykönyvtár mélyére nézve természetesen számos különbségre derül fény, a hallgatók számára lényeges funkciók azonban néhány apróságtól eltekintve könnyen elérhetők és általában hasonló gondolatmenetet követnek. 3. A tananyag kidolgozása során felmerülő kérdések A fent említett hasonlóságok természetesen alapvetően előnyként jelennek meg a nyelveket elsajátítani szándékozók számára, az oktatás során azonban egészen érdekes problémákat vetnek fel. Minderre már a 3. félévben induló Java tárgy előtt fény derült a szükséges anyagok részletes kidolgozása során, amikor el kellett dönteni, hogy milyen mértékben és milyen formában tudunk építkezni az előző két félévben tanult (és az előkövetelmények alapján a hallgató által sikeresen teljesített) C# alapú tárgyak anyagára. A helyzet talán a nyelvoktatásból lehet ismerős, amikor két, egymáshoz meglehetősen hasonló nyelvet kell tanítani. Talán csak annyi a különbség, hogy a hasonlóság itt (a hallgatók számára szükséges szinten) már zavarbaejtően nagy, az apró különbségek azonban mind kritikusak, hiszen a fordítóprogramok csak a saját nyelvük által definiált pontos szabályok szerint képesek működni, nincsenek félmegoldások. Az új tematika során felmerülő igények között természetesen első helyen a szakszerűség állt. A felsőoktatásban nélkülözhetetlennek tartjuk azt, hogy a hallgatók ne csak a gyakorlati megoldásokat tudják kivitelezni, hanem pontosan tisztában legyenek az általuk használt eszközök működésével. Ennek az alapelvnek megfelelve az elkészített anyagok tartalmaznak utalásokat minden, a két nyelv között felmerülő különbségre, mégha ezek jelentős részét a hallgató mindennapi munkája közben észre sem venné (pl. a protected kulcsszó jelentése hasonló, de nem teljesen azonos a két nyelvben, még ha ez a rövid iskolai feladatok elkészítése során nem is okoz problémát). Legalább ennyire fontos szempont a hallgatók motivációjának fenntartása. Bár sok szempontból a legegyszerűbb és legprecízebb a Java teljesen alapoktól való indítása lett 4

volna, valószínűleg csak teljes érdektelenséget tudtunk volna ezzel elérni. Az érintett hallgatók már készségszinten kezelik a C# nyelv alapjait, magabiztosan használják az ott megismert osztálykönyvtárat és különböző eszközöket. Számukra egy szinte teljesen azonos alapokon nyugvó nyelv kezdetektől való oktatása valószínűleg minimális kihívást jelentene (talán nem túlzó hasonlat, ha arra gondolunk, hogy több év brit angol tanulás után a személyes névmásoktól kellene elkezdenünk amerikai angol nyelvet tanulni). Szintén ez ellen szól az is, hogy a Java nyelv oktatására meglehetősen kevés időt tudunk csak szánni, egy félév alatt a fenti módszerrel csak olyan témaköröket tudnánk érinteni, amit a másik nyelvből, szinte teljesen azonos módon már ismernek. A hangsúlyt tehát mindenképpen a két nyelv közötti különbség kiemelésére kell fektetni, mindezt azonban a didaktikai alapelvek figyelembevételével kell megoldani. Bár a különböző szakmai oldalakon található összehasonlító referenciák a szakértők számára nagyon röviden, pontosan és jól érthetően feltárják a nyelvek közötti különbségeket, a gyakorlati oktatás során ez a módszer valószínűleg nem válna be. Ez ugyanis a tananyag jelentős részét leegyszerűsítené egymást követő táblázatokra, ahol az egyik oldalon a C# nyelven megismert tudáselem található, a másik oldalon pedig ennek Java megfelelője. Ennek következtében nem csak az órák lennének meglehetősen unalmasak, de a tananyag megtanulhatósága is erősen kétségbevonható lenne (azt nem is említve, hogy mivel a programozás egy alapvetően gyakorlati tárgy, ezeket az elméleti információmorzsákat a zárthelyik során egy komplett program megíratásával szeretnénk ellenőrizni). 4. Felmerülő ötletek a tematika kidolgozása során A cél tehát a fenti kritériumoknak megfelelő tematika kidolgozása, vagy talán pontosabb, ha a megfelelő arányok megkereséséről beszélünk a fenti, gyakran egymásnak ellentmondó követelmények teljesítése között. Első körben a tárgyalni kívánt anyagrész határait kellett kitűzni, itt szerencsére sikerült egy előnyös döntést hozni a többi tárgy figyelembevételével. Mivel az alapnyelvben megismertektől csak apró technikai különbségekkel rendelkező anyagrészek oktatása meglehetősen problémás a fent említett okok miatt, illetve ezek megtanulása is valószínűleg csak nehézkesen sikerülne a hallgatók számára, hiszen nem rendelkeznek még olyan szintű magabiztos tudással egyik nyelv esetében sem, hogy ne keverjék néha a szintakszist. Az alapkoncepció tehát az lett, hogy a nyelv alapjainak ismertetése után nem a első nyelv segítségével már egyszer bejárt utat követjük, hanem azonnal egy másik irányba kanyarodunk, jelen esetben a szerver oldali/web programozás irányába. Egy tudatos döntés eredményeként ezeket a témaköröket a C# nyelv esetében csak érintőlegesen tárgyaljuk, ami egyrészt segít elkerülni a fent vázolt problémát, másrészt lehetőséget ad további, az idő hiányában egyébként elmaradó területek feldolgozásához. Mivel azonban szeretnénk elkerülni, hogy a hallgatók valódi megértés nélkül, csak látott gyakorlati minták alapján dolgozzanak, hangsúlyt fektettünk a félév első néhány órájában a nyelv alapjainak megismerésére. Az itt kidolgozott anyagrész meglehetősen száraz, főleg technikai összehasonlításokat tartalmaz, a célunk azonban az volt, hogy a hallgatók minél előbb megismerjék a szükséges nyelvi alapokat a továbblépéshez (a második szakasz előtt ezt egy zárthelyivel is próbáltuk biztosítani). Mivel a tárgy hangsúlyos anyaga a szerver oldali programozás, emiatt a szükséges alapismereteket is lehetőség szerint ez alapján válogattuk, próbáltunk egy stabil, de mégis 5

lehetőleg rövid útvonalat kiépíteni ehhez a témakörhöz (emiatt például a grafikus felület tervezése csak marginálisan jelent meg). Néhol az idő hiányában kénytelenek voltunk néhány érdekes, bár nélkülözhető lépést kihagyni, az érdeklődő hallgatók számára azonban az elkészített tananyag ezeket is részletesen tartalmazza egy egyszerű megkülönböztetéssel (pl. webes programok készítéséhez nem szükséges pontosan ismerni a webszerver részletes működési paramétereit, de ez a kiegészítő anyag ezeket is részletesen taglalta). Ezekre az órán csak utalásokat tudunk tenni, a hallgatókra bíztuk, hogy ezekkel otthon, szabadidejükben részletesebben foglalkozzanak (2. ábra). 2. ábra törzsanyag és kiegészítő anyag, színekkel megkülönböztetve A nyelv ismertetése során az egyszerű nyelvi elemek összehasonlításán túl nagy hangsúlyt fektettünk a különböző tipikus hibák bemutatására is. Ezek közül sok már eddigi oktatási tapasztalatainkból is ismert volt (pl. a String osztály kezelése során felmerülő gyakran elkövetett problémák), néhány azonban csak menet közben jelentkezett (pl. C# névtér és Java csomag fogalom közötti különbségek miatt), ez utóbbiakat is próbáltuk beépíteni az anyagokba. Bár meglehetősen kevés gyakorlati feladatmegoldásra maradt idő, a zárthelyi tapasztalatok alapján így is meglehetősen gyorsan sikerült a szükséges alapismereteket megszerezni, amelyekre már néhány alkalommal később (valószínűleg már nem sokkal a motiváció teljes elveszítése előtt) elkezdhettük építeni a kitűzött web alapú programozás témakört. Ez már meglehetősen hálás témának bizonyult, a hallgatók azonnal vissza is nyerték ideiglenesen elveszített lelkesedésüket. Ennél a témakörnél pedig már visszatérhettünk az eddig ismeretlen anyagrészeknél megszokott oktatási módszerekhez is. 5. Tapasztalatok összegzése A fent vázolt tanterv szerint eddig két félévben tartottunk órákat, a nyári hónapokra tervezzük az eddigi tapasztalatok összegyűjtését, ezek alapján az esetleges módosítások végrehajtását. A hallgatók láthatóan nem kedvelik az első néhány óra nagyon intenzív Java 6

alapismereteket feldolgozó témakört, azonban a teljes tematikát ismerve megértik ennek fontosságát, a félév második felében megjelenő webes alkalmazásfejlesztés témakörhöz érve pedig már kimondottan motiváltak. Rövid, nem reprezentatív felmérésünk alapján is egyértelműen úgy tűnik, hogy ezt utólag is helyesnek találják (kérdésünkre, miszerint jobbnak látnák-e, ha alaposabb, gyakorlatorientáltabb lenne az első szakasz, viszont ennek következményeként rövidebb a második, mindenki nemmel válaszolt). Kisebb módosítások természetesen még szükségesek az elkészült anyagokban, főleg a kötelezően megtanulandó és a kiegészítő anyagok közötti átmozgatásokkal, azonban jelenleg úgy tűnik, hogy hosszabb távon is kivitelezhető lesz ez a koncepció. [1] A. Jones, A. Freeman (2002) C# for Java developers, Microsoft Press, ISBN 978-0-7356-1779-7 [2] Kovács D. L., Nyékyné G. J., Sergyán Sz. (2003) Objektum orientált programozás. In: Programozási nyelvek (ed.: Nyékyné G. J.), Kiskapu Kiadó, Budapest, ISBN 963-9301-47-7 [3] Kotsis D., Légrádi G., Nagy G., Szénási S. (2007) Többnyelvű programozástechnika, Panem Könyvkiadó, Budapest, ISBN 978-9-635454-72-3 [4] Vámossy, Z. (2007) Map Building and Localization of a Robot Using Omnidirectional Image Sequences, Acta Polytechnica Hungarica, Vol. 4/3, Budapest Tech, pp. 103 112, ISSN 1785-8860 7