Impulzus

 
A Budapesti Műszaki és Gazdaságtudományi Egyetem Villamosmérnöki és Informatikai Kar Hallgatói Képviseletének lapja

Változások az infós programozásoktatásban

Valószínűleg sokan hallottatok arról, hogy az informatika szakon idén jelentősen átalakult a programozás oktatása. Az okokról, az átállás zökkenőiről, a keresztfélévekkel kapcsolatos gondokról, az érintett tanárokkal való kapcsolatról és a villanyos esetleges változás lehetőségéről kérdeztük Sziffridet, aki a HK soraiban küzdötte végig a még korántsem lezárult folyamatot.

–Mondj egy-két dolgot: mi a probléma lényege, miről is szól ez az egész?

–Az elsőévesek szeptembertől más tanmenet szerint tanulják a Programozás tárgyat, a legmarkánsabb változás, hogy Pascal helyett már C-vel kezdenek. Ez a változtatás nem csak ezt az egy félévet érinti, kihat a Programozás alapjai I-II. és a Számítógép labor I-III. tárgyakra. Az első félévben ugye Pascal helyett C-t, a másodikban C helyett C++-t tanulnak, és végül a Számítógép labor III.-ban eredetileg C++ és Java szerepelt, ehelyett lett tisztán Java. Az egész átszervezés innen indult ki, az Számítógép labor III.-tól, itt csúcsosodott ki a dolog: ez a tárgy sokaknak nagyon nehéznek bizonyult, nagyon sokan buktak meg, és igazából nem tudtak használható tudást szerezni. Szirmay tanár úr volt a tárgy felelőse, mikor az átszervezés elkezdődött – érezte, hogy komoly problémák vannak a tematikával. Egyeztetések kezdődtek a HK és a tanszék, a tantárgy oktatói között, hogy hogyan lehetne átszervezni a tárgy tantervét. Először csak a Számítógép labor III.-at érintette volna a változtatás, a tematikáját szerettük volna átalakítani, hogy ne a labor keretében kelljen megtanulni egy teljesen új programozási nyelvet, mert az gyakorlati oktatásra való: az elméleti ismereteket elvileg előadáson kéne megszerezni. Az előző tantárgyreformban, ami ezelőtt körülbelül három évvel történt, úgy döntöttek, hogy nincs Programozás alapjai III., csak labor – és a tananyag nagy részét átcsapták oda –, ekkor alakult ki ez a kicsit skizofrén helyzet. Ezen szerettünk volna valahogy változtatni. Időközben kiderült, hogy ez ennek az egy tárgynak a keretén belül sajnos nem oldható meg: maga az oktatás egy elavult nyelvből indul ki, a Pascalból, és innen kéne eljutni egy teljesen más szemléletű nyelvhez, amit három félév alatt nem tudtak megvalósítani. Szerettük volna, hogy az iparban használható gyakorlati tudást, valamint naprakész információkat is szerezzenek a hallgatók, ezért kellett a három félévet átfogó reformot elkészíteni.

–Milyen megoldási javaslatok vetődtek fel a HK és az érintett tanszékek részéről?

–Nagy viták voltak a Pascal oktatása körül, hogy maradjon-e vagy sem. A HK álláspontja az volt, hogy a hallgatókat nem feltétlenül egy-egy konkrét programozási nyelvre kell megtanítani, tehát nem a Pascalt, a C-t, a C++-t és a Java-t kell megtanulni, hanem a programozáshoz szükséges szemléletet kéne elsajátítani. Ezért mi egy programozási nyelvektől függetlenebb tantervet szerettünk volna, az oktatók viszont ragaszkodtak ahhoz az elvhez, hogy egy diplomás informatikusnak programozni tudnia kell. Ez ellen több ellenvetésünk volt, ha megnézzük a különböző szakterületeket, ahol elhelyezkedhetnek a hallgatók, láthatjuk, hogy nem szükséges az a szintű programozási tudás, amit az oktatók elvárnak. Például egy hálózatos szakirányon nincsen szükség arra, hogy olyan mélységben ismerje az ember a programozási nyelveket, ahogy ezt az alapképzésben oktatják, sokkal inkább egy szemléletmód elsajátítását szerettük volna belevinni a tanításba. Az alapkoncepció az volt a HK oldaláról, hogy az első félévben a hallgatók tanulják meg a problémákat strukturálni egy egyszerű strukturált programozási nyelv alapján, ahol a nyelv segédeszközként van jelen, hogy be lehessen mutatni az egyes problémákat, de ne azon legyen a hangsúly. Inkább az algoritmizálás feladatát sajátítsák el, azt a szemléletmódot, ami ehhez kell. A második félévben térjenek át a strukturált programozásról az objektumorientált programozásra, hiszen az megint egy teljesen más gondolkodásmódot igényel, viszont a mai fejlesztési tempónál gyakorlatilag ez az egyetlen megoldás, ami alkalmazható az iparban. A harmadik félévben pedig, ahol már csak gyakorlati képzés van, egy modern fejlesztőeszköz, egy modern nyelv használatát sajátítsák el, erősen támaszkodva az objektumorientált szemléletre. Ezt a gyakorlati oktatást az átszervezett Programozás technológiája tárggyal kiegészítve egy olyan tervezési háttértudást adjanak hozzá, amivel versenyképes fejlesztőket tud útjukra bocsátani az Egyetem. Tehát a végcél az lett volna, hogy ha a hallgató a harmadik félév végeztével szembekerül egy problémával – ami irányítottan elő is fordul az Számítógép labor IV. tárgyban, ahol egy kiírt projektet kell megvalósítani –, akkor hozzá tudjon állni valahogy. Legyen olyan rálátása, hogy meg tudja fogni a problémát, azt tudja strukturálni, és a megfelelő szemléletmódon, vagy strukturáltan, vagy objektumorientáltan fel tudjon építeni erre egy megoldást.

–Mennyiben sikerült ezeket az elképzeléseket megvalósítani?

–Sajnos a terveket színtisztán nem tudtuk átvinni, elég nagy ellenállásba ütköztünk az oktatók részéről, mivel ők készségszintű programozást várnak el a hallgatóktól mind a három programozási nyelven, amit a három félévben oktatnak. Ezt a HK kicsit túlzottnak találta, de ebből az elvből az oktatók nem voltak hajlandóak engedni, ezért állt elő a mostani, kicsit disszonáns helyzet.

–Mi a helyzet a "C vagy Pascal" kérdéssel?

–Itt a fő elv, ami mentén próbáltunk haladni, az az volt, hogy milyen terhet ró az elsőéves hallgatóra, ha nem Pascallal kezdi, hanem C-vel. Mi azt szerettük volna, ha egy programozási felfogást, nem pedig egy konkrét nyelvet oktatnának. A két nyelv között jelentős különbségek vannak: a Pascal sokkal kötöttebb, sokkal jobban fogja az ember kezét, amikor próbál beletanulni ebbe az egész gondolkodásmódba, míg a C sokkal szabadabb, sokkal több lehetőséget ad – és sokkal nagyobb a hibák elkövetésének a veszélye is ezáltal. Szemléletben is van eltérés a két nyelv között, itt annyira ez nem jött elő: mi azt tartottuk szem előtt, hogy először a strukturált programozási elveket kell a hallgatónak elsajátítani, aztán továbblépni az objektumorientált tervezés felé, ebből a szempontból a két nyelv majdnem ekvivalens. Másik, már gyakorlati kérdés itt, hogy míg Pascalból vannak nagyon jó jegyzetek, addig C-ből nem volt ilyen. Ami érv a C oldalán állt, az pedig az volt, hogy a Pascal gyakorlatilag egy halott nyelv, az iparban nem nagyon használják már, míg a C-t itt-ott még fel lehet lelni, és bár ez is egy elég szűk terület, a C ad egy olyan alapot, amiből bármely más programozási nyelv viszonylag könnyen megtanulható. Ha az oktatók oldaláról nézzük ezt a problémát, akkor megérthető, hogy a C-t támogatták, mivel ők gyakorlati, készségszintű programozási tudást akarnak adni, és a C ehhez nagyon jó alap. A HK oldaláról nézve, mi a Pascal mellett tesszük le a voksunkat, mert a szemlélet elsajátítása mellett nem nagyon kell foglalkozni a nyelv finomságaival, amik a C-ben akaratlanul is előjönnek a nyelv adottságai miatt. Ez egy nagy vita volt...

–Egyéb alternatíva nem vetődött föl a Pascal és a C mellett?

–László tanár úrnak volt egy olyan ötlete, hogy rögtön az első félévben Javát tanítsunk, és ez húzódjon végig mind a három féléven. Ezt azzal indokolta, hogy ez egy modern nyelv, az iparban használják, és a Sunnak vannak nagyon jó tanítási mellékletei, amik a Javát úgy kezelik, mintha egy strukturált nyelv lenne, és végigvezetik a hallgatókat rajta. Ezzel a probléma az volt, hogy a hallgató elé kéne gyakorlatilag egy ködöt húzni, ami elfedi a Java objektumorientált mivoltát, nagyon sok olyan részt kellene az előadásba beépíteni, ahol azt mondjuk, hogy "ezt most oda kell írni, mert így működik", de nem magyarázzuk meg részletesebben, mert még nem a tananyag része. Tipikusan, hogy pl. miért kell egy objektumba beágyazni egy strukturált programot, miért egy objektumból áll a program. Ezt – a HK szempontjából szerencsére – sikerült elvetni.

–Végül is miért lett C az első félévben?

–Ígéretet kaptunk arra, hogy a nyár végére, augusztusra kész jegyzettel fognak előállni. Poppe tanár úrtól kaptuk ezt az ígéretet, sajnos ez nem történt meg. Nyáron az egyetemen ugye a fű se nő, nem tudtunk ezzel kapcsolatban egyeztetni, augusztus közepe felé próbáltuk újra felvenni a kapcsolatot, a hónap végére sikerült elérnünk a tanár urat, és akkor derült ki, hogy hát ez a jegyzet nem áll sehogy. Azt az áthidaló megoldást nyújtották erre, hogy Poppe tanár úr bejár hospitálni az előadásokra, és az ő előadás-jegyzetei kerülnek ki a Netre, amit az elsőévesek letölthetnek. Ez nekünk egy nagyon fájó pont, emiatt több vitánk is volt mind Poppe, mind Szeberényi tanár úrral (Szeberényi tanár úr most a tárgy felelőse). Úgy érezzük, hogy amikor egy elsőéves idekerül az egyetemre, még nincs tisztában azzal, hogy milyen elektronikus jegyzeteket lehet elérni, milyen mellékcsatornákon tud jegyzeteket szerezni, valamint ez egy teljesen új tárgy, teljesen új tematika, nincsen belőle felhalmozott tudásanyag különböző, a hallgatók "kezén forgó" helyeken, és emiatt a szerencsétlen hallgató teljesen el van veszve. Az első előadáson elhangzott, hogy bármely olyan könyv jó, ami a C-vel foglalkozik. Ezt, ha egy elsőéves meghallja, nincsen tisztában vele, milyen jegyzetet kell megvenni, kit kell megkérdezni ez iránt – meg fog vásárolni több C könyvet, aminek az egytizedét nem fogja használni, mivel a piacon elérhető C-könyvek mind arra alapoznak, hogy az, aki abból tanulni akar, már rendelkezik valamiféle programozási tudással. Ezt viszont nem lehet feltételezni, mert az egyetem felvételi rendszere nem vár el semmi ilyesmit. Így rengeteg pénzt kell elköltenie az elsőévesnek, ami mind rá, mind a családjára nagy terhet ró. Ezt szerettük volna elkerülni, sajnos nem sikerült. Próbáltunk egyezkedni Szeberényi tanár úrral, hogy valami áthidaló megoldást adjon, sajnos teljes elutasításba ütköztünk. Ezügyben beszéltünk Zoltai dékánhelyettes úrral is, ő is fájlalta, hogy nincs rendes elérhető jegyzet, és hogy a tárgy bevezetése sem teljesen szabályosan, zökkenőmentesen zajlott. Arató dékán úrhoz is fordultunk ezzel a problémával: ő igazából felvállalta azt a döntést, hogy ez a tárgy elindult, Szeberényi tanár úr viszi, és ő ebben gyakorlatilag szabad kezet adott neki. Tehát sajnos megint az egyetemi bürokráciába ütköztünk azért küzdve, hogy valami ez ügyben történjen. Amiben most nagyon reménykedünk, az az, hogy lesz jegyzet, ha csak elektronikus formában is, és jövő szeptembertől nyomtatott formában is megjelenik, a hallgatók kezébe lehet adni, egy sokkal erősebb segítséget adni nekik ezáltal.

–Mi a helyzet most a tárggyal?

–Poppe tanár úrral próbálunk egyezkedni, a Szeberényi tanár úrral történő egyeztetések sajnos zátonyra futottak, kicsit sarkosan fogalmazva nem hajlandó szóba állni velünk. Poppe tanár úrral még tudjuk a kapcsolatot tartani, ő ezt a jegyzetet készíti, bízunk benne, hogy ennek a minősége olyan lesz, hogy jövőre az elsőévesek kezébe lehet adni; a tárgy halad. Sajnos a következő féléves tananyag kialakításáról nem tudunk semmit. Egy kicsit megfeneklettek a tárgyalások: ez részint a HK-nak is betudható, de ha utánagondolunk, nem biztos, hogy a HK feladata az, hogy az egyetemi oktatókat munkára sarkallja. Akkor, amikor ilyen elutasításokba ütközünk, amilyeneket a tárgy bevezetésének kapcsán megtapasztaltunk (jeleztünk több szabályzati problémát, és gyakorlatilag egy legyintéssel lettünk elküldve), nem tudjuk megtenni, hogy az oktatók minőségi ellenőrzését is elvállaljuk. Valamint az oktatók elsősorban oktatni szeretnének, ám nagyon sok adminisztrációs feladattal is jár egy új tárgy bevezetése, és nem tisztázódott le bennük, hogy ez is az ő feladataik közé tartozik. Igazából a vezetőségtől lefele lehetne számon kérni, a HK-nak viszont nincsenek olyan erős eszközei, amivel ezt elérhetné. Körülbelül itt tart a dolog.

–A gólyák szemszögéből nézve milyen a váltás? Volt már ZH, lehet tudni számszerű eredményeket?

–Megvallom őszintén, nem tudom hogy megy nekik, nem írattak még zárthelyit a tárgyból. Problémát nem észleltünk ilyen szempontból, nem jöttek hozzánk elsőévesek, hogy mi is lesz ezzel az egésszel. De szándékunk szerint a Gólyatanács a közeljövőben fog foglalkozni a kérdéssel.

–A keresztféléveket mennyiben érinti a reform?

–A tárgy bevezetésekor igen sok probléma volt a keresztfélévekkel, nagyon sok tévinformáció került a rendszerbe, pedig ez is egy tárgy elindításához tartozik. A probléma magja onnan ered, hogy szabályzatilag ez úgy van irányítva, hogy olyan tárgy, melynek a tematikája több mint 25%-kal változik, már nem lehet azonos az előző tárggyal, tehát új tárgykóddal kell felvenni. Ez nem történt meg. Itt egyértelműen több mint 25%-ban változott meg a struktúra, mégsem vezettek be hozzá új tárgykódot. Az oktatók azt hangoztatták, hogy mivel teljesen más a tárgy, a ráépülő követelményeket sem lehet teljesíteni, ezért aki már megcsinálta a tárgyat, viszont a keresztfélévek miatt a következőt nem, tehát például a Programozás alapjai I. tárgya megvan és Programozás alapjai II.-ből keresztre kerül (ebben a félévben még a régi Programozás alapjai II. van), és ha most nem csinálja meg, akkor a következő félévben már nem fogadják el neki a Programozás alapjai I.-et sem. Ez így TVSZ-be ütközik, ezt így nem lehet csinálni. Egy olyan tárgyat, amit már elvégeztem, amiért megkaptam a kreditet, azt nem lehet utána törölni, abban benne van az én sikeres munkám, visszamenőleg azt nem lehet megsemmisíteni. Ezért kellett volna új tárgyat bevezetni, de ez nem történt meg. Ezt jeleztük annak idején az oktatók felé, de nem voltak hajlandóak vele foglalkozni. Ezek a problémák az év elején felmerültek, ezért is mentünk el Zoltai dékánhelyettes úrhoz, beszéltünk vele, megbeszéltük Arató dékán úrral is: a hivatalos álláspont az, hogy a megszerzett krediteket nem lehet megsemmisíteni, tehát aki a régi tematikában szerezte meg a Programozás I. jegyét, és a duplakereszt miatt új tematikában fogja tanulni a Programozás II.-t, az azt minden további nélkül felveheti. Az előtanulmányi rend nem változott meg, azaz aszerint az új Programozás alapjai I. teljesen megfelel a régi Programozás alapjai I.-nek, ebből következik, hogy aki a régit megcsinálta, az az új Programozás alapjai II.-t, ami az új Programozás alapjai I.-re épül, mindenképp felveheti.

–A tárgyat oktató tanárokkal milyen a viszonyotok, pl. Vitéz tanár úrral? A tavalyi infós gólyák közül sokakat meglepett a stílusa, mikor átvette a tárgyat...

–Vitéz tanár úrral sokrétű a viszonyunk J, főként attól függ, milyen problémáról van szó. Nagyon pozitív élményeink vannak a tanár úrral ennek a reformnak kapcsán, nagyon pozitívan állt hozzá a megbeszélésekhez, tényleg nyitott volt a mi álláspontunkra is, és próbált konstruktívan vitatkozni. Míg az a hozzáállás, amit a hallgatókkal az előadáson folytat, nem mindig nevezhető korrektnek. A TVSZ-t és egyéb szabályzatokat elég gyakran felrúgja, ami miatt a HK sokszor beszél vele, de többé-kevésbé sikerül dűlőre jutni – elég ambivalens a vele való kapcsolatunk. Szeberényi tanár úrról sajnos ez már nem mondható el, vele teljesen megszakadt a kapcsolatunk, nem tudunk vele konstruktív vitát folytatni. Aki még érintett a kérdésben, az Poppe tanár úr: azon túl, hogy nem készült el nyáron a jegyzet, tehát van egy be nem tartott ígérete, látszik rajta a jó szándék, vele lehet beszélni, nyitott minden kérdésünkre, tényleg próbál úgy hozzáállni a témához, hogy haladjon a dolog.

–Felsőbbévesektől, közvetlenebb gyakorlatvezetőktől lehetett olyasmit hallani, hogy ez a Pascal–C csere régi konfliktus volt Pongor és Vitéz tanár urak közt.

–Igen, egy nagyon erős tartópillére esett ki sajnos a rendszernek Pongor tanár úr személyével, aki a Pascal-programozás oktatását fogta össze. Ez megint egy kicsit hitvitának titulálható, már maga a tény, hogy C-t vagy Pascalt oktassanak kezdetben. Ha az a szempont, hogy gyakorlati tudást akarunk adni, akkor egyértelműen a C a győztes, mert az később használható, de mivel ez egy egyetem, nem főiskola, ahol gyakorlati szakembereket képeznek, inkább az elméleti síkon mozognak az itt végzettek, inkább kéne egy elméletibb oktatás, főleg az alapozásnál, mert utána erre kell építeni és ez alapján szakosodni, nem szabad gyakorlati sémákkal korlátozni a hallgatókat. Nem jönnek elő a Pascal hátrányai (holt nyelv, az iparban nem használják), ha nem Pascal-specifikus az oktatás, tehát nem a nyelv mélységeit akarják megmutatni, hanem azt az elméletrendszert, ami e mögött van, a strukturált programozás elméletrendszerét. Ez érzésünk szerint Pongor tanár úr tanításából se teljesen jött le, de azért nála nagyon sok olyan plusz dolog volt beépítve a tananyagba, ami ezt segítette elő.

–Mi a helyzet a villanyosokkal, ott lesz változás? Tavaly nagyon mondogatta Benkőné tanárnő, hogy nálu(n)k is átalakulnak a dolgok...

–Igen, eljutott hozzánk, hogy a tanárnő kihirdette, miszerint villanyon is változás lesz, de ezirányban gyakorlati lépések még nem történtek. A szándék valószínűleg megvan, de még konkrét tervről nem hallottunk. Az a probléma, hogy az oktatók és a HK közti együttműködés nem mindig a legfényesebb, nagyon sokszor történik olyan, hogy egy kisebb oktatói csoportban felmerül egy tantárgyreform-ötlet, és ezt megpróbálják a HK mellett elvinni, a HK-t nem vonják be. Valahogy hiányzik a hallgatók és az oktatók közti visszacsatolás, amit posztjából adódóan a HK-nak kéne betöltenie. Ezt kéne letisztázni az oktatók fejében, és akkor el lehetne kerülni az ilyen dolgokat, hogy egyszer csak bejelentik, hogy villanyon is Pascal helyett C van. Okulva azon, hogy infón milyen gondokat jelentett az átvezetés, a HK talán tudna segíteni abban, hogy tényleg a szabályzatnak és a hallgatók igényeinek megfelelően alakuljon át az oktatás.

–Egyébként tényleg mindenképp szükség van arra, hogy a villamosmérnöki szakon is változzon a programozás-képzés? Említetted, infón mennyi gond volt, előálltak hasonlók itt is?

–A villamos képzést annyira nem ismerem, de annak is vannak olyan ágai, ahol szükség van a programozásra. Körülbelül két területet tudnék itt elkülöníteni: az egyikben a programozást, mint segédeszközt használják, különböző rendszerek modellezésére például. Itt nem biztos, hogy egy Pascal vagy C szintű nyelvre lenne szükség, inkább egy erre specializálódott Matlab-ra vagy valami ehhez hasonló nyelvre, amihez szerintem nincsen szükség előtanulmányként az említett nyelvekre. A másik terület, amire én gondolni tudok, az a beágyazott területe a villamosmérnöki képzésnek. Itt viszont egy C jellegű nyelv kell, mert gyors, kicsi, rugalmas, és a legtöbb alkalmazás, ami ezekre a beágyazott rendszerekre készül, az C-ben íródik, vagy valamilyen hardver-specifikus nyelven (értem itt az assemblerek különböző fajtáit). Az Assemblyre épül egy picit a C, tehát ha az ember az Assembly gondolkodásával megbarátkozik, a C rengeteg területét könnyebben fogja megérteni. Ezért ezen a vonalon a C az, ami támogathatóbb lenne véleményem szerint. Így lehet, hogy villanyon is érdemes lenne áttérni, de ehhez előbb végig kéne gondolni az egész villanyos programozás-oktatás struktúráját, egyáltalán nem biztos, hogy hasonló tematikát kéne bevezetni, mint az infósoknál, teljesen más irányba ágazik el a kettő később.

–Köszönjük az interjút.

Barbi, gyp