Elsőéves informatikushallgatók algoritmizáló készségei Programming skills of the first year students of Informatics BIRÓ Piroska1, CSERNOCH Mária2 tanársegéd1, docens2 Debreceni Egyetem, Informatikai Kar, 4028 Debrecen, Kassai út 26. http://www.inf.unideb.hu, fax:+36 52 512 996
[email protected],
[email protected]
Abstract The programming skills of the first year students of Faculty of Informatics of the University of Debrecen, Hungary was tested after leaving high schools and starting their studies at the university. The assigned tasks were selected from a test meant for 10–14 years of children. With these simple tasks we wanted to test the students’ basic knowledge of logical operators and algorithmic skills. It was found that most of the students arriving to the Faculty of Informatics have serious problems solving the given problems. They have not reached even a basic level in programming skills in spite that they have been studying Informatics 6–8 years in schools. Összefoglaló A Debreceni Egyetem Informatikai Karán tanulmányaikat megkezdő elsőéves hallgatók informatikai ismereteit teszteltük. A tesztben a Nemes Tihamér informatikai verseny 5–8. osztályos tanulóinak kiírt feladatok közül választottuk. Ezekkel az egyszerű feladatokkal a hallgatók alapvető programozási és algoritmizálási készségeit kívántuk mérni. A felmérés eredményeinek ismeretében egyértelműen megállapíthatjuk, hogy a karunkra érkező hallgatók többsége alapvető programozási ismeretekkel sem rendelkezik, az általános és középiskolában informatika tanulással eltöltött 6–8 év nem volt elegendő ezen alapvető ismeretek megszerzésére sem. Kulcsszavak: programozás, algoritmizálás, informatika érettségi, tudásmérés
1. BEVEZETŐ 2011 és a 2012 szeptemberében a Debreceni Egyetem Informatikai Karára felvett Programtervező Informatikus (PTI) hallgatók informatikai tudását teszteltük egyetemi tanulmányaik megkezdésekor. A teszt feladatai között szerepelt kettő, amellyel a hallgatók algoritmizáló készségét kívántuk mérni. Az Informatikai Karra jelentkező hallgatók legfontosabb céljaik közé tartozik az informatika különböző területeinek megismerése, az algoritmizálás elsajátítása, mely alapja a magas szintű programozási nyelvek piacképes tudásának. A programozás oktatás, az algoritmizáló készség kialakulására kiemelkedő szerepet kellene fordítani. Ezért is tartjuk fontosnak minden tanév elején, hogy a beérkező első éves hallgatók programozói készségeit megismerjük illetve az eredményekre építve próbáljuk felzárkóztatni a lemaradókat. A hallgatók nagyon sokszor nincsenek tisztában az informatika fogalmával, az egyetemen elvárt követelményekkel. Az általunk végzett felmérésből kiderült, hogy van olyan hallgató, aki előzetes programozói tudás hiányában jelentkezik az Informatikai Karra a különböző gazdasági motiváltság, illetve a csábító fizetések következményeként. Több hallgató a Magas szintű programozói nyelvek I. oktatásánál döbben rá, hogy ez nem az ő világa, az algoritmizáló készség nehezen vagy egyáltalán nem alakul ki, ezért sok-sok nehézségbe ütközik az egyetemi évei alatt.
1
2. EREDMÉNYEK 2.1.
A vizsgált minta
A felmérést a 2011-es és 2012-es tanév elején végeztük a Debreceni Egyetem Informatikai Karára felvételiző első éves hallgatóival. A Programtervező Informatikus szakra jelentkező hallgatók közül a 2011-es tanévben 115 és a 2012-es tanévben 108 hallgató töltötte ki a tesztet. Egy átfogó felméréssel vizsgáltuk az első éves hallgatók alkalmazói és programozói tudását különböző típus feladatokkal. A felmérés továbbá egy attitűd vizsgálatra és további alapinformációkra kérdezett rá 2012-ben, a teszt kitöltése előtt egy önértékelési tesztkérdésre válaszoltak, melyben értékelhették a korábban szerzett informatikatudásukat. A dolgozatban a hallgatók programozói előismereteit szeretnénk bemutatni az adatfeldolgozás utáni eredményeket vizsgálva.
2.2.
Feladatok
A felméréshez kiválasztott feladatok a 2008/2009-es tanév Nemes Tihamér Országos Informatikai Verseny I. forduló, I. korcsoportos, azaz az 5-8. osztályosok számára kiírt feladatsorának feladatai [9]. Az egyik feladatban a logikai műveletek ismeretét teszteltük, míg a másik feladattal azt mértük, hogy hogyan tudják természetes nyelven megfogalmazni, hogy mit csinálnak a megadott programrészletek és mi lesz a kiválasztott változók értéke. Olyan feladatokat igyekeztünk választani, amelyek nyelvfüggetlenek, amelyekkel mérhető, hogy a hallgatók rendelkeznek-e alapvető az algoritmizáló készséggel, valamint az, hogy mennyire képesek egy mesterséges nyelven megfogalmazott szöveget lefordítani saját anyanyelvükre. Mindkét kiválasztott feladat eleget tesz az akkori – a feladat megjelenésének évében érvényes – és a jelenlegi kerettantervi elvárásoknak. Ezentúl, mindkét feladat bárki számára elérhető, tehát a hallgatók ismerhették a feladatokat, a feladattípusokat mindenképpen. A 2008-as kerettantervben [8] megfogalmazott elvárások alapján a gyerekek már ötödik osztálytól, esetenként korábban tanulnak algoritmizálást, programozást, tehát az ilyen és hasonló jellegű feladatok megoldása egy egyetem Informatikai Karára érkező hallgatóknak nem jelenthet gondot. Igaz azonban, hogy az Informatikai Karokra jelentkezésnek nem feltétele még egy középszintű informatikai érettségi sem, az emelt szintű érettségi, ahol már programozás és algoritmizálás is szerepel pedig egyáltalán nem elvárás. Az általunk vizsgált két évfolyamon a hallgatók 70 és 57%-a, valamint 30 és 43%-a tett közép-, illetve emelt szintű érettségi vizsgát. A PTI szakra jelentkező hallgatók többsége tehát legalább egyik szinten sikeres érettségi tett, míg a hallgatók 6, illetve 10%-a mindkét szinten érettségizett informatikából. Az érettségi eredményeket figyelembe véve a két kiválasztott feladat megoldása semmiféle nehézséget nem jelenthetett a hallgatóknak. Azoknak is meg lehetett oldani, aki nem tanultak egyetlen programozási nyelvet sem, mivel a megadott algoritmusok nyelvfüggetlenek voltak, tehát az az algoritmizáló készség, amely szükséges a középszintű érettségi sikeres letételéhez elegendő kellett legyen a feladatok megoldásához.
2.2.1. Logikai műveletek, kódfejtés 1. Feladat: Vércsoport Egy játékban két kártyát (X, Y) húzunk egy-egy pakliból. Mindkét pakliban találhatók A-betűt, Bbetűt és 0-s számjegyet tartalmazó kártyák. Add meg, hogy az alábbi algoritmus alapján milyen esetekben hány pontot kaphatunk: X Y A A A B V:=X=”A” vagy Y=”A” A 0 W:=X=”B” vagy Y=”B” B A Ha V és W akkor Pont:=3 különben Ha V akkor Pont:=2 B B különben Ha W akkor Pont:=1 B 0 különben Pont:=0 0 A 0 B 0 0 Megjegyzés: Ez az algoritmus az egyik legfontosabb emberi vércsoportrendszer öröklésmenetét mutatja be.
1. ábra. A Vércsoport nevű feladat 2
Pont
A logikai műveletek ismeretének tesztelésénél 0–2 pontot lehetett szerezni. 2 pont járt azoknak, akik hibátlanul megoldották a feladatot, 1 pont azoknak, akik legalább 5 helyes választ adtak, és 0 pont azoknak, akik még ettől is kevesebbet oldottak meg helyesen. A 2. ábra adatai egyértelműen mutatják, hogy a helyes megoldások száma a legmagasabb mindkét évben; 2011-ben 43%, 2012-ben 44%. Ezt követi az 1 pontot elért hallgatók száma; 33 és 41%, majd a 0 pontot elérők száma; 24 és 15%. Ezek az eredmények azt mutatják, hogy ezt az ötödik osztályos feladatot viszonylag elfogadható szinten tudták megoldani az elsőéves Programtervező informatikus hallgatók.
2. ábra. A Vércsoport (bal) és a kódfejtés (jobb) feladatok eredményei 2. Feladat: Hegy Egy hegymászó az útja során N helyen (N>2) feljegyezte, hogy milyen tengerszint feletti magasságban jár. Mit csinálnak az alábbi programrészletek? Fogalmazza meg általánosan is, hogy a DB és az M változó mit tartalmaz! N=50, a mért értékek: 500,500,500,500,500,600,600,650,700,750,82 0,880,930,1010,1050,980,930,830,780,720,72 0,710,700,750,770,790,820,880,880,820,760, 740,600,500,560,670,770,770,760,750,740,74 0, 730,720.
3. ábra. A kódfejtési feladat ábrája a) feladat DB:=0 Ciklus i=1-től N-ig Ha X(i)>800 akkor DB:=DB+1 Ciklus vége
A hallgatóktól azt vártuk el, hogy a megadott adatok alapján értelmezzék a kódot és írják le saját szavaikkal a DB változó értékét. A kiértékelés során a Helyes megoldás mellett különböző egyéb kategóriákat is értelmeztünk. A típushibákat figyelembe véve külön számoltuk azokat, akik csak a feltételt írták helyesen. Volt olyan hallgató, aki az adott kódrészletet szóról szóra értelmezte, leírta a ciklus lépéseit. További két kategóriába soroltuk azokat, akik megpróbálták a feladatot megoldani, és azokat, akik egyáltalán nem foglalkoztak a feladattal. 1. táblázat. A 2011 és 2012-es tanév hallgatói eredményei a 2. feladat a) kódrészletének értelmezésére Csak feltétel
Ciklus
Helyes
Próbálta
Nem próbálta
2011
1,74
42,61
21,74
9,57
24,35
2012
1,85
37,04
27,78
11,11
22,22
A 2. feladat a) pontjának helyes megoldása a 800-nál nagyobb értékek számának megadása lett volna. A 1. táblázat adatai alapján láthatjuk, hogy 40% körüli a helyes, tökéletesen megfogalmazott megoldások száma. A hallgatók 10%-a nem foglalkozott egyáltalán a feladattal.
3
b) feladat DB:=0 Ciklus i=2-től N-1-ig Ha X(i)<X(i-1) és X(i)<X(i+1) akkor DB:=DB+1 Ciklus vége
2. táblázat. A 2011 és 2012-es tanév hallgatói eredményei a 2. feladat b) kódrészletének értelmezésére Csak feltétel
Völgyek
Helyes
Ciklus
Próbálta
Nem próbálta
2011
3,48
2,61
23,48
16,52
16,52
37,39
2012
12,04
6,48
15,74
19,44
13,89
32,41
A helyes megoldás a völgyek száma vagy a szomszédjaiknál kisebbek száma vagy a helyi minimumok száma. A 2. táblázat adatai alapján megfigyelhetjük, hogy nőtt azon hallgatók száma, akik meg sem próbálták a feladatot értelmezni, megoldani, a helyes válaszok száma csökkent. Nagyon alacsony volt azon hallgatók száma, aki a feladat eredeti szövegkörnyezetet figyelembe véve, teljesen elszakadva a mesterséges nyelv szabályaitól fogalmazta meg válaszát, tehát, hogy a helyes a völgyek száma. c) feladat M:=0 Ciklus i=2-től N-ig Ha X(i)-X(i-1)>M akkor M:=X(i)-X(i-1) Ciklus vége
3. táblázat. A 2011 és 2012-es tanév hallgatói eredményei a 2. feladat c) kódrészletének értelmezésére Helyes
Legnagyobb
Ciklus
Próbálta
Nem próbálta
2011
10,43
26,96
13,91
6,09
42,61
2012
9,26
23,15
16,67
12,04
38,89
A c) feladat helyes megoldása a legnagyobb emelkedés. A három feladatot összehasonlítva a c) esetben volt a legalacsonyabb a helyes megoldások száma. A hallgatók 23–26%-a azt még felismerte, hogy a legnagyobb elem válogatása történik, de azt már csak közel 10%-a tudta, hogy pontosan milyen értékek közül választjuk ki a legnagyobbat.
2.2.2. Kódfejtési típusú feladatok összehasonlítása A kódfejtési típusú feladatok értékelésekor a hivatalos megoldó kulcs [10] alapján azt néztük meg, hogy hány helyes megoldás érkezett. A helyes megoldások százalékos arányait a 2–4. táblázatok Helyes oszlopa mutatja. A legegyszerűbb a) feladatra kapott helyes megoldások aránya 42 és 37% körüli érték, ezt követi b) feladat 23 és 15%-a, majd a leggyengébb eredményt a c) feladat megoldásánál kaptunk, ahol a megoldások mindösszesen 9 és 10% volt helyes. A három feladat együttes átlaga 19,13 és 15,51%. Magas azon hallgatók száma, aki „szószerinti” fordításnak gondolta a feladatokat és a ciklus tesztelését próbálták megoldásként adni. Ezen hallgatók kódfejtési stílusát leginkább egy fordítóprogram működéséhez lehetne hasonlítani, amely elvégzi a szószerinti fordítást, de nem tudja megmondani, hogy mit jelent a mondat. Hasonlóan a helyes eredményt adó hallgatók számához az a)tól a c) feladat felé haladva csökkent azok száma, akik próbálkoztak a feladat megoldásával. A nem próbálkozók száma emelkedett az a)-tól a c) feladat felé haladva. A próbálta, de helytelen eredményt adók száma között nem fedezhető fel hasonló tendencia, a három feladatra érkező hibás megoldások száma nem mutat lényeges eltérést, nincs összefüggés a feladatok nehézsége és a helytelen megoldások száma között. A hallgatói teljesítményeket összehasonlítottuk az emelt szintű informatika érettségi Algoritmizálás, adatmodellezés feladatára kapott országos eredményekkel. Mindenképpen érdemes azonban megjegyezni, hogy az érettségi feladatokban programírást végeznek a vizsgázók, addig a teszt feladatai egy egyszerűbb készséget, a már megírt program megfejtését kéri számon. További elemzések során megvizsgáltuk, hogy hány olyan hallgató volt, aki 0–3 helyes megoldást adott a három feladatra (2. ábra). A 2. ábra adataiból leolvasható, hogy mindkét évben 4
összesen két-két olyan hallgató volt, aki mindhárom feladatra hibátlanul tudott válaszolni. Nagyon magas azok száma, akik egyetlen helyes megoldást sem tudtak adni, és közel azonos azok száma, akik 1, illetve 2 helyes választ adtak. Már az érettségi eredmények is azt mutatják, hogy az Informatika Karon tanulmányaikat megkezdő hallgatók nem rendelkeznek megfelelő programozási és algoritmizálási készségekkel, de a papíralapú felmérésünk eredményei még inkább egyértelmű teszik, hogy a hallgatók nagy része egyszerű algoritmizálási problémák megoldására sem képes. Korábbi vizsgálataink azt mutatták, hogy a karunkra érkező hallgatók érettségi eredménye lényegesen meghaladja az országos átlagot. Ez tehát azt jelenti, hogy még nagyobb a rés az érettségin mért és a teszten kapott eredmények között. Ezen eredmények ismerete mindenképpen azt erősíti, hogy a hallgatók többségének felkészültsége, programozási készsége egyáltalán nem felel meg a kerettantervben megfogalmazottaknak [8, 9]. Az egyetemre érkezésükkor a hallgatók nincsenek felkészülve magasabb szintű programozási ismeretek elsajátítására. Ezek után megmagyarázhatatlannak tűnik a 2008-as kerettanterv szerinti – középiskolában 5,5 óra – informatika órák számának drasztikus csökkentésére született 2012-es döntés. Az egyetemi évek során tapasztalt lemorzsolódás, a végzés idejének kitolódásának egyik nyilvánvaló magyarázata, hogy a hallgatók nem megfelelő felkészültséggel hagyják el a középiskolát. Az egyetemen folyó programozásoktatást mindenképpen megnehezíti, esetenként ellehetetleníti az a tény, hogy a hallgatók nem megfelelő szintű algoritmizálási készséggel érkeznek és az egyetemi követelmények, elvárások mellett nincs idő ezen hiányosság pótlására, mivel az algoritmikus készség kialakításához időre van szükség, ami nem alakítható ki egy-két hét alatt. Ezen készség kialakítása lenne az általános és középiskolai informatikaoktatás elsődleges feladata. A kapott eredmények azonban egyértelműen mutatják, hogy az iskolarendszer jelen körülmények között nem képes ezt a készséget még a legjobb hallgatók esetében sem kifejleszteni.
2.2.3. Érettségi eredmények Az 4. táblázatból leolvashatjuk az utóbbi évek országos emelt szintű érettségi eredményeit [11]. A gyakorlati érettségi eredmények átlaga és az Algoritmizálás, adatmodellek feladatra kapott részpontszámok közötti különbségek már egyértelműen mutatják, hogy még azon hallgatók sem tudnak megfelelő szinten programozni, akik vállalják az emelt szintű érettségit. A felmérés eredményeként kapott programozás feladatok átlaga megközelíti az átlagokat. A 2. feladat c) pontjánál figyelhetünk meg szignifikáns eltérést. 4. táblázat. Az utóbbi évek országos emelt szintű érettségi eredményei [11] Év 2007. május
Algoritmizálás, adatmodellezés Gyakorlatok 16,00 57,23
2007. október
29,86
70,58
2008. május
17,43
56,00
2008. október
29,76
77,39
2009. május
21,38
47,51
2009. október
29,22
72,57
2010. május
20,84
59,51
2010. október
26,04
68,24
2011. május
19,90
57,91
2011. október
31,70
76,91
2012. május
20,97
63,19
2012. október
33,51
75,25
2013. május
23,51
65,79
5
2.2.4. Önértékelés A 2012-es tanévben a felmérés előtt egy önértékelői kérdőívet kellett kitölteniük a hallgatóknak, ahol a bejelölhették egy 6-os fokozatú Likert skálán az alkalmazói és programozói ismereteiket. A vizsgált hallgatók a programozásra átlagosan 42%-ot adtak. Ez az érték az 2. feladat a) pontjának eredményeit megközelíti, viszont a többi pontban sokkal alacsonyabba teljesítettek. Továbbra is fontos azonban hangsúlyozni, hogy nem program írása volt a feladat, hanem egy meglévő kód megfejtése, valamint azt nem szabad elfelejtenünk, hogy ötödik osztályos feladatot adtunk. A hallgatók tehát egyértelműen nincsenek tisztában programozási tudásukkal.
3. ÖSSZEFOGLALÓ A 2011 és 2012-es tanév eredményeit figyelembe véve megfigyelhető, hogy 2012-ben alacsonyabb szinten teljesítettek a hallgatók. Ez az eredmény tükröződik a programozói és a korábban vizsgált táblázatkezelési eredményekben [1,2,3,4]. Igaz továbbá, hogy a hallgatók önértékelése teljesen irreális. Sem a korábban vizsgált táblázatkezelő, sem a jelen cikkben bemutatott programozási ismereteknél nem tudták megítélni tudásukat lényegesen magasabb értéket jelöltek meg, mint a tesztben nyújtott teljesítményük. Ez a jelenség jól ismert, különösen olyan embereknél nagy a rés a valós tudás és az önértékelés között, akiknek nagyon alacsony a tudása [6]. A felmérésben szereplő mindkét típusú programozási feladatot 5–8. osztályos tanulóknak kiírt Nemes Tihamér feladatsorból választottuk. Ez azt jelenti, hogy viszonylag egyszerű feladatok, amelyek megoldása 6–8 év informatika tanulás után nem kellett volna gondot okozzon azoknak a hallgatóknak, akik a programozást választották szakmaként. Tovább könnyítette a feladatot, hogy nem programot kellett írni, hanem csak megfejteni. Mindezen körülményeket figyelembe véve a kód megfejtés típusú feladatokra kapott helyes válaszok száma rendkívül alacsony volt.
4. KÖSZÖNETNYILVÁNÍTÁS A publikáció elkészítését a TÁMOP-4.2.2.C-11/1/KONV-2012-001 számú projekt támogatta. A projekt az Európai Unió támogatásával, az Európai Szociális Alap társfinanszírozásával valósul meg.
IRODALOMJEGYZÉK [1.] Biró Piroska, Csernoch Mária (2013). Táblázatkezelés algoritmikus megközelítése. Kiss Árpád Emlékkonferencia Tanulmánykötete, Debrecen, 2013. Elfogadva. [2.] Csernoch Mária, Biró Piroska (2013a). Button-up technikák hatékonyságának vizsgálata informatika szakos hallgatók táblázatkezelés-oktatásában. Szerk: Kozma Tamás és Perjés István, Új kutatások a neveléstudományokban, ELTE Eötvös Kiadó, 2013. Elfogadva. [3.] Csernoch Mária, Biró Piroska (2013b). Teachers’ Assessment and Students’ Self-Assessment on The Students’ Spreadsheet Knowledge. EDULEARN13 Proceedings July 1st-3rd, 2013 — Barcelona, Spain. Publisher: IATED. ISBN: 978-84-616-3822-2. pp. 949–956. [4.] Csernoch Mária, Biró Piroska (2013c). Spreadsheet misconceptions, spreadsheet errors. Hungarian Conference on Educational Research, Debrecen, 2013. Elfogadva. [5.] Csíkos Csaba (2006). Metakogníció. A tudásra vonatkozó tudás pedagógiája. Műszaki Kiadó. Budapest. [6.] Justin Kruger, David Dunning (1999). Unskilled and Unaware of It: How Difficulties in Recognizing One’s Own Incompetence Lead to Inflated Self-Assessments. Journal of Personality and Social Psychology. Vol. 77, No. 6, 1121-1134. [7.] Kerettanterv 2013. http://kerettanterv.ofi.hu/index.html. Letöltés dátuma: 2013.08.30. [8.] Kerettanterv 2008. Magyar Közlöny, 20. szám II. kötet, 2008. február 8. [9.] Nemes Tihamér Országos Informatikai Verseny 2008-2009 I. forduló, I. korcsoport, 5-8. osztály. Feladatok. http://nemes.inf.elte.hu/2009/nt09-1f1.doc. Letöltés dátuma: 2013.08.30. [10.] Nemes Tihamér Országos Informatikai Verseny 2008-2009 I. forduló, I. korcsoport, 5-8. osztály. Megoldási és értékelési útmutató. http://nemes.inf.elte.hu/2009/nt09-1m1.doc. Letöltés dátuma: 2013.08.30. [11.] Érettségi eredmények 2007-2013. https://www.ketszintu.hu/publicstat.php. Letöltés dátuma: 2013.08.30.
6