novi pristopi pri pou Čevanju programiranjapefprints.pef.uni-lj.si/997/1/kkolar_diploma.pdf · ki...
TRANSCRIPT
UNIVERZA V LJUBLJANI PEDAGOŠKA FAKULTETA
Študijski program: Matematika in računalništvo
NOVI PRISTOPI PRI POUČEVANJU PROGRAMIRANJA
DIPLOMSKO DELO
Mentor: Kandidatka: prof. dr. Jože Rugelj Karmen Kolar
Ljubljana, junij 2012
TEMA DIPLOMSKEGA DELA V diplomskem delu na osnovi rezultatov raziskav, objavljenih v strokovni literaturi, identificirajte glavne probleme, s katerimi se srečujejo učenci pri učenju računalniškega programiranja. Raziščite, kako se učitelji v praksi spopadajo s temi problemi z obstoječimi didaktičnimi pristopi in kakšne spremembe za izboljšanje učinkovitosti poučevanja na tem področju v strokovni literaturi predlagajo strokovnjaki. Na osnovi rezultatov študije pripravite ustrezna didaktična priporočila in predlagajte primer scenarija za izvedbo učnih aktivnosti. dr. Jože Rugelj, izr.prof. Ljubljana, februar 2012
POVZETEK
Programiranje je eno od pomembnejših področij v računalništvu in številnim učencem se tematika zdi precej težka in dolgočasna. V diplomski nalogi poskušamo identificirati probleme, ki jih imajo programerji začetniki, in poiskati predloge za uspešno učenje, ki je lahko tudi zabavno. V prvem delu naloge smo na podlagi obstoječih raziskav predstavili težave, ki jih imajo učenci pri učenju programiranja. Opisali smo tudi nekatere pristope tradicionalnega poučevanja, ki niso primerni za učence, ki imajo težave pri učenju. Obstaja veliko dejavnikov, ki povzročajo težave pri učenju, kot je pomanjkanje sposobnosti problemskega reševanja, abstrakcije in motivacije. Na osnovi študija strokovne literature smo v drugem delu opisali nekatere nove konstruktivistične načine poučevanja programiranja s problemskim reševanjem in vizualizacijo. Številnim učencem se zdi težko in dolgočasno uporabljati programski jezik, zato smo v diplomski nalogi predstavili nekatera vizualizacijska orodja, ki podpirajo učenje. Predlagali smo učenje na osnovi igranja računalniških igric, ki ima nekatere karakteristike uspešnega učenja, vendar ni dokazano, da je učinkovito. Predlagani pristopi so novi na tem področju izobraževanja in zato zahtevajo še nadaljnje raziskave. Ključne besede: učenje in poučevanje programiranja, motivacija, mentalni model, problemsko reševanje, programer začetnik, vizualizacija, orodja za programiranje, didaktična računalniška igra. Klasifikacija ACM:
� K.3 Računalništvo in izobraževanje � K.3.1 Uporaba računalnikov v izobraževanju � K.3.2 Poučevanje računalništva in informatike
ABSTRACT
Programming is core subject in the Computer Science Education and many students find it very difficult and boring. In the thesis we are trying to identify the problems that novices are having and explore the solutions for effective learning, which can be fun as well. In the First section of the thesis we present, based on previous research, the problems students are faced with when they learn to program. We also describe some aspects of traditional way of teaching programming which are not suitable for students who have difficulties with learning. There are many factors that cause problems in learning such as lack of problem solving abilities, abstraction, and motivation. Based on literature study, we describe some new constructivist ways of teaching programming with problem solving and visualization in the second section. Many students find difficult and tedious to use programming languages, so in the thesis we present some visualization computer tools to support learning of programming. We have suggested game based learning, which has the characteristic for successful learning but is not proven to be effective. Suggested approaches are new in this area of education and they require further research. Key words: programming teaching and learning, motivation, mental model, problem solving, novice programmer, visualization, programming tools, didactic computer game. ACM Computing Classification System:
� K.3 Computers and education � K.3.1 Computer Uses in Education � K.3.2 Computer and Information Science Education
KAZALO VSEBINE
1 Uvod .................................................................................................................................... 1 1.1 Pregled vsebine ...................................................................................................................... 1
I. PREDSTAVITEV PROBLEMATIKE ....................................................................... 3
2 Težave pri učenju programiranja .................................................................................... 3 2.1 Obstoječe raziskave ................................................................................................................... 4 2.2 Poučevanje programiranja ....................................................................................................... 11 2.3 Dilema programskega jezika ................................................................................................... 13
3 Mentalni model................................................................................................................. 14 3.1 Karakteristike programerjev začetnikov .................................................................................. 15
4 Psihologija programiranja .............................................................................................. 17 4.1 Merjenje znanja ....................................................................................................................... 17
5 Abstrakcija ....................................................................................................................... 22
II. OBRAVNAVA REŠITEV .......................................................................................... 24
6 Problemsko reševanje ...................................................................................................... 24 6.1 Problemsko zasnovano učenje ................................................................................................. 25 6.2 Raziskava ................................................................................................................................. 26
7 Vizualizacija ..................................................................................................................... 28 7.1 Obstoječe raziskave ................................................................................................................. 29 7.2 Uporaba vizualizacije algoritma .............................................................................................. 31 7.3 Vizualizacijska orodja ............................................................................................................. 33
7.2.1 Microworlds ..................................................................................................................... 34 7.2.1.1 Primerjava programskih okolij Greenfoot, Alice in Scratch ........................................ 37 7.2.1.2 Raziskava ...................................................................................................................... 38
8 Učenje z računalniško igrico ........................................................................................... 39 8.1 Računalniška igrica BomberMan............................................................................................. 40
9 Predlogi za izboljšanje poučevanja ................................................................................ 42
10 Sklep ................................................................................................................................ 45
11 Literatura........................................................................................................................ 46
KAZALO SLIK
Slika 1: Ločevanje programskih jezikov ............................................................................................................. 13 Slika 2: Klasifikacijska shema ............................................................................................................................ 18 Slika 3: Faze pridobitve spretnosti ...................................................................................................................... 19 Slika 4: Klasifikacija matematičnih problemov .................................................................................................. 24 Slika 5: Učni model ............................................................................................................................................. 28 Slika 6: Želvji premiki......................................................................................................................................... 34 Slika 7: Greenfoot 'Wombat' scenarij .................................................................................................................. 35 Slika 8: Alice ....................................................................................................................................................... 36 Slika 9: Scratch ................................................................................................................................................... 37 Slika 10: Model didaktične računalniške igre ..................................................................................................... 40 Slika 11: Okno igrice BomberMan ..................................................................................................................... 40 Slika 12: Okvir petih korakov ............................................................................................................................. 43 Slika 13: Pot do uspešnega učenja ...................................................................................................................... 44
KAZALO GRAFOV Graf 1: Težavnost različnih konceptov v programiranju ....................................................................................... 5 Graf 2: Težavnost različnih vidikov v programiranju ........................................................................................... 6 Graf 3: Učinkoviti učni materiali .......................................................................................................................... 6 Graf 4: Področja učinkovitega učenja ................................................................................................................... 7 Graf 5: Težavnost tematik v programiranju .......................................................................................................... 8 Graf 6: Mentalni modeli nalog vrednostmi..........................................................................................................15 Graf 7: Mentalni modeli nalog z referencami ..................................................................................................... 15 Graf 8: Težave pri reševanju kompleksnih nalog ................................................................................................ 27 Graf 9: Kvalitete, ki oblikujejo programerja strokovnjaka .................................................................................. 27 Graf 10: Moč strinjanja (anketa index-card)........................................................................................................29 Graf 11: Moč strinjanja (anketa pre-conference) ................................................................................................ 29 Graf 12: Pogostost uporabe vizualizacije (anketa index-card) ............................................................................ 30 Graf 13: Uporaba vizualizacije (anketa pre-conference) ..................................................................................... 31 Graf 14: Povprečni rezultati kviza in testa .......................................................................................................... 38
KAZALO TABEL Tabela 1: Zbrane raziskave iz različnih virov ....................................................................................................... 4 Tabela 2: Rezultati po kriteriju GE ....................................................................................................................... 9 Tabela 3: Rezultati po kritetirju DoC .................................................................................................................. 10 Tabela 4: Primerjava različnih učnih metod ........................................................................................................ 12 Tabela 5: Avtorji o programerjih začetnikih ....................................................................................................... 16 Tabela 6: Merjenje pridobljenjega znanja ........................................................................................................... 21 Tabela 7: Avtorji o abstraktnosti ......................................................................................................................... 23 Tabela 8: Bloomova taksonomija za ugotavljanje učinkovitosti vizualizacije .................................................... 33 Tabela 9: Primerjava ........................................................................................................................................... 41
Karmen Kolar Novi pristopi pri poučevanju programiranja
1
1 UVOD
Programiranje je dandanes pomembno področje tako v industriji kot tudi v šolstvu, vendar za učence, ki se učijo začetnih konceptov, programiranje predstavlja tematiko, ki je lahko že v osnovni prezahtevna in dolgočasna. Takšni učenci se posledično ne odločajo za nadaljnji študij računalništva. Programiranja se ni enostavno naučiti, saj zahteva abstraktno razmišljanje, matematične sposobnosti, spretnosti problemskega reševanja ter znanje programskega jezika in programskih orodij. Ker programiranje vključuje toliko različnih aktivnosti, lahko v literaturi najdemo veliko študij, ki opisujejo številne težave, s katerimi se učenci soočajo pri učenju.
Ena izmed najstarejših je študija o programerjih začetnikih, zbirka raziskav različnih avtorjev, ki sta jih skupaj zbrala Soloway in Spohrer (1989). Raziskovalna skupina McCracken idr. (2001) je ugotovila, da imajo programerji začetniki slabe programerske sposobnosti po končanem predmetu uvod v programiranje. Obstajajo študije (Ma, Fergunson, Roper in Wood, 2007), v katerih so ugotovili, da imajo tudi neustrezne mentalne modele osnovnih programerskih konceptov. Največ raziskav o težavah pri učenju in poučevanju programiranja (Lahtinen, Ala-Mutka in Järvinen, 2005; Milne in Rowe, 2002) je predvsem s področja objektno-orientiranega programiranja in izbranih programskih jezikov, ki se uporabljajo v industriji, kot je na primer C++ ali Java. Zdi se, da tradicionalni pristop poučevanja programiranja ni najbolj učinkovit. Kot bodoče učitelje računalništva nas je zanimalo, kako poučevati programiranje, da bo zanimivo za učence in da bo hkrati učinkovito. Tudi splošno gledano so reforme pri poučevanju programiranja potrebne, če se dosedanje metode izkažejo za neučinkovite. Zato smo v diplomski nalogi ugotavljali, kaj je treba spremeniti, da bo učenje oz. poučevanje programiranja postalo učinkovitejše in hkrati zanimivo. Cilj diplomske naloge je obravnava vidikov, ki so pomembni za izboljšanje razumevanja konceptov programiranja. Vidike smo povezali v predlog za učenje programiranja z vizualnimi orodji, ki so lahko učinkovita in hkrati motivacijska, tudi s stališča ženskega spola. Nekateri avtorji so predlagali izboljšanje poučevanja z integracijo problemskega reševanja in vizualizacije. Raziskovalna skupina Naps idr. (2002) je ugotovila močno strinjanje glede koristnosti uporabe vizualizacije. V diplomski nalogi smo predstavili nekaj vizualizacijskih in didaktičnih orodij, ki bi lahko spremenila pristop do programiranja. Ker je uporaba teh orodij v šolah novost, je njihova učinkovitost v večini še neraziskana.
1.1 Pregled vsebine
Prvi del diplomskega dela z naslovom Predstavitev problematike smo razdelili na štiri poglavja. V drugem poglavju smo opisali težave pri učenju programiranja. Pri tem smo se oprli na obstoječe raziskave in problematiko poučevanja programiranja. Kakšne mentalne modele in karakteristike imajo programerji začetniki, smo predstavili v tretjem poglavju. Ker je programiranje kognitivni proces, smo v četrtem poglavju obravnavali psihologijo
Karmen Kolar Novi pristopi pri poučevanju programiranja
2
programiranja, pri čemer smo se osredotočili na učne rezultate. Pri programiranju morajo biti učenci sposobni abstraktnega razmišljanja, zato smo v petem poglavju predstavili vlogo abstrakcije.
V drugem delu, tj. Obravnava rešitev, smo raziskali možne rešitve predstavljenih problemov. Učenje s problemskim reševanjem smo obravnavali v šestem poglavju. Sledi obravnava vizualizacije, kjer smo opisali tudi nekaj najbolj znanih vizualizacijskih orodij za učenje programiranja. Novi pristop učenja programiranja z didaktično računalniško igrico smo predstavili v osmem poglavju. Nekaj predlogov in pristopov različnih avtorjev za boljše poučevanje smo zbrali v devetem poglavju. V desetem poglavju smo podali splošne zaključke.
Karmen Kolar Novi pristopi pri poučevanju programiranja
3
I. PREDSTAVITEV PROBLEMATIKE
2 TEŽAVE PRI UČENJU PROGRAMIRANJA
Katerim učencem je učenje programiranja oteženo? Morda tistim, ki nimajo sposobnosti problemskega reševanja in matematičnih sposobnosti? Ala-Mutka (2004, str. 4) meni, da je splošna inteligentnost in matematična sposobnost lahko povezana z uspešnostjo pri učenju programiranja. Jenkins (2002, str. 54) meni, da je lahko problem v odnosu do programiranja in da so študije pokazale, da programerske sposobnosti nimajo nobene povezave z matematičnimi sposobnostmi.
Du Boulay (1989, v Nuutila, Törma, Kinnunen in Malmi, 2008) klasificira pet področij oz. dimenzij učenja programiranja. To so tudi področja, kjer se pojavljajo težave (Nuutila, Törma, Kinnunen in Malmi, 2008, str. 51):
1. orientacija: kakšen je namen programov, tipi problemov ter programerske sposobnosti, ki so potrebne v določenih situacijah;
2. notacijski stroj: narava abstraktnega stroja; 3. notacija: sintaksa in semantika programskega jezika; 4. strukture: vzorci, načrti za doseg majhnih ciljev; 5. pragmatika: sposobnosti za specifikacijo, implementacijo, testiranje ter
razhroščevanje programov z uporabo ustreznih orodij.
Boothova (1992, str. 119) navede nekaj konceptov učenja programiranja: učenje programskega jezika, učenje pisanja programov v programskem jeziku ter učenje programiranja v paru. Namen predmeta uvod v programiranje je naučiti učence programiranja in ne določenega programskega jezika. Učencem je to težko razlikovati, saj ne zmorejo razmišljati o abstraktnih konceptih med učenjem novih konceptov programskega jezika. To je možno le takrat, ko ima programer opravka z več različnimi programskimi jeziki. Vendar se pri predmetu uvod v programiranje poučuje zgolj en programski jezik (Jenkins, 2002, str. 55–56). Tudi Robins, Rountreejeva in Rountree (2003) opazijo, da se vsebina predmeta in učbenikov osredotoča na določen programski jezik. Po Daviesu (1993, v Robins, Rountree in Rountree, 2003, str. 140), obstaja razlika med programerskim znanjem (npr. kako deluje zanka for) in programerskimi strategijami (npr. kako ustrezno uporabiti zanko for v programu). Težava je ravno v tem, da se pri takšnih predmetih usvoji le programersko znanje. Programerska sposobnost mora zajemati splošno znanje o računalnikih, programskih jezikih, programskih orodjih in metodah programiranja (prav tam, str. 140–147).
Jenkins (2002, str. 55) navaja, da programiranje ni ena sama sposobnost, temveč hierarhija sposobnosti. Učenec se mora najprej naučiti najnižje sposobnosti, kot je sintaksa, in nato napredovati na semantiko, strukturo in stil programiranja. Teh programerskih sposobnosti se ne da naučiti iz učbenikov, temveč le s konkretnim programiranjem.
Karmen Kolar Novi pristopi pri poučevanju programiranja
4
Če učitelji želijo učinkovito poučevati programiranje, morajo natančno razumeti, kaj je tisto, kar tako oteži učenje programiranja. Gomesova in Mendes (2007, str. 1) navajata različne vzroke:
� programiranje zahteva visoko stopnjo abstrakcije, � programiranje zahteva ustrezno stopnjo znanja in tehnike problemskega reševanja, � programiranje zahteva intenzivno praktično učenje, � poučevanje programiranja se težko individualizira, če je razred številčen, � programiranje je dinamično zgolj z uporabo statičnih učnih materialov, � učiteljeve metode pogosto ne vključujejo učenčevih učnih stilov, � večina programskih jezikov ima kompleksno sintakso brez pedagoških karakteristik,
saj so namenjeni za profesionalno uporabo.
Izkušnje kažejo, da ima veliko učencev težave pri razumevanju in uporabi določenih abstraktnih programerskih konceptov, ko rešujejo programerske probleme. Učenci so navajeni reševati majhne, zaprte probleme, ki jih učitelji vnaprej določijo in ki imajo navadno le eno pravilno rešitev. Tako ni nobene možnosti za preoblikovanje obstoječih rešitev v boljšo. Pri programiranju so problemi navadno odprto končni in imajo širok spekter rešitev. Nekatere rešitve so boljše, druge pa slabše (Nuutila idr., 2008, str. 51).
S katerimi ovirami se soočajo učenci pri učenju programiranja? Zakaj jim spodleti? Raziskati moramo, kje so težave, kakšen pristop imajo učenci do programiranja in kakšen je njihov odnos do učenja.
2.1 Obstoječe raziskave
Tabela 1: Zbrane raziskave iz različnih virov
Avtorji Leto Raziskovalno vprašanje Lahtinen, Ala-Mutka, Järvinen
2005 Kateri so težavni koncepti in vidiki pri učenju programiranja in kako izboljšati poučevanje?
Milne in Rowe 2002 Kateri so težavni koncepti pri učenju programiranja?
McCracken, Almstrum, Diaz, Guzdial, Hagan, Kolikant, Laxer, Thomas, Utting, Wilusz
2001 Ali imajo učenci po končanem predmetu uvod v programiranje ustrezne programerske sposobnosti?
Lahtinenova, Ala-Mutka in Järvinen (2005) so v raziskavi ugotavljali, kateri so težavni koncepti in vidiki pri učenju programiranja ter kako izboljšati poučevanje. Vprašalnik je izpolnilo 559 učencev in 34 učiteljev različnih univerz predmeta uvod v programiranje. Uporabljali so ocenjevalno lestvico od 1 do 5, kjer 1 pomeni najlažji in 5 najtežji koncept za učenje. Učenci so se učili osnov programiranja z različnimi programskimi jeziki, kot so:
Karmen Kolar Novi pristopi pri poučevanju programiranja
5
C++, Java, Pascal in drugo. Več kot polovica (58,6 %) jih je imelo predhodne izkušnje s programiranjem. Cilj raziskave je bil ugotoviti razlike v konceptih učencev in učiteljev. V nadaljevanju navajamo nekaj raziskanih področij.
� Katere programske koncepte ste se težko naučili?
Graf 1: Težavnost različnih konceptov v programiranju
Zgornji graf prikazuje, da se je učencem najtežje naučiti kazalce, reference, operiranje napak v programu ter rekurzijo. Učitelji so te koncepte po težavnosti prav tako uvrstili visoko. Mnenje učiteljev je bilo dokaj podobno učencem, vendar so jih po težavnosti ocenili višje kot učenci. Pokazale so se tudi razlike med programskimi jeziki, saj so različne univerze poučevale različne programske jezike. Programski jezik C++ se je izkazal za težjega kot Java pri konceptih, kot so tabele, kazalci, reference (Lahtinen idr., 2005, str. 17).
� Kateri vidiki so pri učenju programiranja težki?
1,0
1,5
2,0
2,5
3,0
3,5
4,0
4,5
5,0
Težavnost
Učenci
Učitelji
Karmen Kolar Novi pristopi pri poučevanju programiranja
6
Graf 2: Težavnost različnih vidikov v programiranju
Vidiki, ki so po mnenju učiteljev in učencev najtežji: oblikovati program, da reši določeno nalogo, razdelati funkcionalnost programa v procedure ter poiskati hrošče v programu. Učitelji so vse vidike ocenili višje kot učenci z izjemo učenja sintakse programskega jezika (graf 2).
� Kateri materiali so/bi pomagali pri učenju programiranja?
Graf 3: Učinkoviti učni materiali
Po mnenju učencev in učiteljev so primeri programov najbolj v pomoč pri učenju programiranja (graf 3). Učitelji so visoko uvrstili tudi interaktivne vizualizacije, medtem ko so učencem ostali materiali po uporabnosti skoraj enakovredni. Avtorji raziskave menijo, da je visoka ocena interaktivnih vizualizacij lahko tudi subjektivna, saj se anketiranci zanimajo za razvoj vizualizacij.
1,0
1,5
2,0
2,5
3,0
3,5
4,0
4,5
5,0
Uporaba
programa v
programskem
okolju
Razumevanje
programskih
struktur
Učenje
sintakse
programskega
jezika
Oblikovati
program, da
reši določeno
nalogo
Funkcionalnost
razdelati v
procedure
Poiskati hrošče
v programu
Težavnost
Učenci
Učitelji
1,0
1,5
2,0
2,5
3,0
3,5
4,0
4,5
5,0
Učbenik
predmeta
Zapiski
predavanj
Vprašanja in
odgovori
nalog
Primeri
programov
Slike
programskih
struktur
Interaktivne
vizualizacije
Ocena
Učenci
Učitelji
Karmen Kolar Novi pristopi pri poučevanju programiranja
7
� Kdaj je učenje programiranja najbolj učinkovito?
Graf 4: Področja učinkovitega učenja
Učenci so po rezultatih ankete sodeč precej samozavestni, saj so najviše uvrstili samostojno reševanje nalog in samostojno učenje (graf 4). Po mnenju učiteljev se učenci največ naučijo pri laboratorijskih vajah. Ocenjujejo tudi, da je samostojno reševanje nalog učinkovitejše kot pa v skupinah. Učitelji so v splošnem visoko ocenili področja, kjer lahko vodijo učence. Zdi se, da samo učitelji menijo, da učenci potrebujejo vodenje.
Sklep avtorjev raziskave je, da je največji problem programerjev začetnikov uporaba osnovnih programerskih konceptov in ne razumevanje. Rezultati so pokazali, da se učiteljem in učencem praktično učenje zdi učinkovitejše. Drugi problem, ki se je pokazal, pa je, da se učiteljem zdijo vsi koncepti težavnejši kot učencem. Ali učitelji precenjujejo težavnost ali pa se je učenci ne zavedajo dovolj? Učenec v tem primeru ne pozna prave globine konceptov tako kot učitelj in potemtakem ne premore pravega razumevanja. Avtorji raziskave svetujejo, da je učence treba postaviti v različne učne situacije (Lahtinen idr., 2005, str. 17).
Milne in Rowe (2002) sta izvedla raziskavo v obliki spletnih vprašalnikov, ki je ugotavljala koncepte in tematike, ki se zdijo učencem in učiteljem težavne pri predmetu uvod v programiranje. Za preučevanje sta imela skupino 40 učencev iz univerze v Veliki Britaniji ter skupino 26 učiteljev računalništva iz različnih univerz. Učenci so že imeli predznanje iz programiranja, in sicer eno leto iz proceduralnega programiranja v programskem jeziku C. Učenci so izpolnili vprašalnik šele po končanem predmetu programiranja iz objektnega programiranja C++. V raziskavi so ugotavljali težavnostne koncepte objektno-orientiranega kot tudi proceduralnega programiranja.
Učenci so podali oceno, kako težko se je bilo naučiti določeno temo iz programiranja. Učitelji so prav tako ocenjevali stopnjo težavnosti pri učenju, ki naj bi jo po njihovem mnenju imeli učenci. Uporabili so težavnostno lestvico od 1 do 7, kjer 1 predstavlja zelo enostavno in 7 zelo težavno za učenje. Teme so bile izbrane iz večine konceptov programskega jezika C in C++: operatorji in njihove prednosti, operacije z zankami (for, while …), pogojne operacije (if, else ...), tabele, nizi, deklaracije spremenljivk oz. funkcij,
1,0
1,5
2,0
2,5
3,0
3,5
4,0
4,5
5,0
Na
predavanjih
Laboratorijske
vaje
Reševanje
nalog v
skupinah
Samostojno
reševanje
nalog
Samostojno
učenje
Ocena
Učenci
Učitelji
Karmen Kolar Novi pristopi pri poučevanju programiranja
8
prenos po vrednosti ter referenci, klici funkcij, kazalci, rekurzija, strukture, druge podatkovne strukture (seznami, drevesa), operacije z datotekami, razredi in objekti. Rezultati so prikazani v grafu 5.
Graf 5: Težavnost tematik v programiranju
Teme, ki se zdijo učencem najbolj težavne za učenje, so kazalci, rekurzije ter druge podatkovne strukture. Tudi učitelji so bili enakega mnenja, vendar iz grafa 5 opazimo, da se učiteljem zdijo vse teme težavnejše kot učencem. Sklep te raziskave je, da učenci ne prepoznajo svojih primanjkljajev. Raziskavi (Lahtinen idr., 2005; Milne in Rowe, 2002) sta pokazali, da se težave pojavljajo predvsem pri razumevanju kazalcev in pri konceptih, ki se nanašajo na dinamično spreminjanje v pomnilniku. Milne in Rowe menita, da si učenci ne znajo predstavljati, kaj se dogaja v spominu programa, zato si ne morejo zgraditi ustreznega mentalnega modela izvedbe programa. Na primer rekurzije so kritične zato, ker imajo nelinearno strukturo in si je zato težje vizualizirati izvedbo programa. Zaradi potrebe po vizualizaciji se je pojavila težnja po oblikovanju vizualizacijskih orodij, ki povečujejo učenčevo razumevanje (Milne in Rowe, 2002, str. 63).
Obe raziskavi sta tudi pokazali, da je razumevanje konceptov odvisno od programskega jezika. Učenci so na primer razumeli kazalce v C++ šele potem, ko so jih obravnavali v programskem jeziku Java (prav tam, str. 60). Ali je izbira programskega jezika torej pomembna? Goodova, Brna in Cox (1996) so v študiji o razumevanju programa programerjev začetnikov in strokovnjakov ugotovili, da je izbira programskega jezika odločilna za programerje začetnike. Zanimivo je tudi dejstvo, da so učenci pri obeh raziskavah precej prepričani v svoje znanje, saj so bile ocene težavnosti programerskih
1,0
1,5
2,0
2,5
3,0
3,5
4,0
4,5
5,0
5,5
6,0
6,5
7,0
Težavnost
Učenci
Učitelji
Karmen Kolar Novi pristopi pri poučevanju programiranja
9
konceptov nižje od učiteljevih. To je lahko zavajajoče, saj učenci lahko mislijo, da so se temo naučili in da jo dobro razumejo, vendar prakse kažejo, da so velikokrat v zmoti (Lahtinen idr., 2005, str. 17).
Raziskovalna skupina McCracken, Almstrum, Diaz, Guzdial, Hagan, Kolikant, Laxer,
Thomas, Utting in Wilusz (2001) je ugotavljala programerske kompetence, ki jih imajo učenci po končanem predmetu uvod v programiranje. Želeli so odgovoriti na vprašanje: »Ali znajo učenci po končanem predmetu uvod v programiranje programirati na pričakovani stopnji sposobnosti?« Za ugotavljanje programerskih sposobnosti so sestavili tri med seboj podobne programerske naloge za reševanje (P1, P2, P3), ki so jih rešili učenci računalništva različnih univerz (z oznakami S, T, U, V) ob koncu prvega leta študija. Naloge so bile sestavljene tako, da se je težavnost stopnjevala, in sicer so morali sprogramirati kalkulator z osnovnimi operacijami (+,−,×,÷,ˆ):
1. naloga P1, težavnostna stopnja 1: kalkulator z obrnjenim poljskim zapisom, ki deluje kot sklad;
2. naloga P2, težavnostna stopnja 2: kalkulator v infiksni oz. vmesni obliki brez upoštevanja operatorjev po prednosti;
3. naloga P3, težavnostna stopnja 3: kalkulator v infiksni obliki z upoštevanjem operatorjev po prednosti.
Učenci so lahko rešili naloge v katerem koli programskem jeziku. Kasneje se je izkazalo, da so uporabili Javo in C++. Učitelji, ki so dali učencem naloge v reševanje, so naloge ocenjevali po dveh kriterijih:
1. GE tj. splošna evalvacija (angl. General Evaluation) v štirih komponentah, kjer je bilo možno doseči skupaj 110 točk: � izvedba (ali se program lahko izvede), � preverjanje (ali program deluje, če vanj vstavimo različne podatke), � potrjevanje (ali je kalkulator ustrezen), � stil (ali ustreza standardom).
2. DoC tj. stopnja približka (angl. Degree of Closeness), ki se nanaša na izvorno kodo, in sicer na določeni 5- stopenjski lestvici ocenjuje, kako blizu je program ustrezni rešitvi.
V tabeli 2 so prikazani rezultati po kriteriju splošne evalvacije, v tabeli 3 pa rezultati po kriteriju stopnje približka.
Tabela 2: Rezultati po kriteriju GE
Naloga Št. učencev Univerza Povprečni rezultat P1 117 S, T, V 21,0
P2 77 U, V 24,1
P3 23 V 31,0
Karmen Kolar Novi pristopi pri poučevanju programiranja
10
Tabela 3: Rezultati po kriteriju DoC
Naloga Št. učencev Univerza Povprečna ocena
P1 118 S, T, V 2,2
P2 77 U, V 2,4
P3 23 V 2,0
Na nekaterih univerzah je bilo reševanje nalog prostovoljno, na drugih pa obvezno. Avtorji raziskave sklepajo, da se šibkejši učenci verjetno niso in tudi ne bi odločili za programiranje in so tako sodelovali le boljši učenci. Rezultati v tabelah kažejo, da so se učenci, potemtakem boljši učenci, odrezali nepričakovano slabo. Ali je razlog v tem, da so bile sestavljene naloge pretežke, ali niso ustrezale interesom učencev in njihovemu znanju ali niso imeli dovolj časa za reševanje?
Avtorji raziskave raziščejo nekaj možnih razlogov (McCracken idr., 2001, str. 134):
� Učenci s slabimi programerskimi navadami. Učenci brez programerskega predznanja obravnavajo izvorno kodo kot enostaven tekst namesto kot izvršljiv računalniški program, ki rešuje specifično nalogo.
� Učenje modernih objektno-orientiranih jezikov (npr. Java). Nekatere obstoječe raziskave kažejo, da učenje objektno-orientiranega jezika zahteva več časa, da učenci usvojijo programsko okolje za reševanje problemov, in zato ni časa za poučevanje skladov, vrst in dreves. Na določeni univerzi so bili slabi rezultati pri nalogi P1, ker še niso obravnavali sklada. Naloge so bile oblikovane tako, da je bil zanje primeren proceduralni in ne objektno-orientiran pristop.
� Omejen laboratorijski čas za reševanje. Učenci so v vprašalniku o nalogah izjavili, da so imeli premalo časa za reševanje. Nekateri učenci so naloge celo prvič reševali za računalnikom.
Odgovor na prvotno vprašanje, ali znajo učenci po končanem predmetu uvod v programiranje programirati na pričakovani stopnji sposobnosti, je po izvedeni raziskavi negativen. Učenci v tej raziskavi nimajo usvojenih tehničnih sposobnosti, ki so potrebne za programiranje.
Učenci morajo med procesom učenja dobiti povratno informacijo, da bi se lahko zavedali težav in omejitev, ki jih imajo. Imajo tudi napačno predstavo o tem, da se pri predmetu uvod v programiranje učijo sintakso programskega jezika. Aktivnosti, ki so pomembne in ki bi se jih učenci morali zavedati, so: planiranje, oblikovanje in testiranje. Učenci pogosto kar preskočijo proces problemskega reševanja, ker se jim mogoče zdi prezahtevno ali nepomembno (prav tam, str. 133).
Karmen Kolar Novi pristopi pri poučevanju programiranja
11
2.2 Poučevanje programiranja
Tradicionalni pristop je učenje deklaracije določenega programskega jezika, ki zajema naslednje aktivnosti: učenje sintakse, načrtovanje in oblikovanje programa. Toda raziskave kažejo, da so pomembni tudi drugi vidiki, kot na primer spreminjanje in testiranje spremenljivk v programu. Poglavitni vir težav ni v sintaksi in razumevanju njenih problemov, ampak v osnovnem načrtovanju programa. Po Winslowu (v Ala-Mutka, 2004, str. 3–4), učenci poznajo sintakso in semantiko posameznih izjav v programu, ne vedo pa, kako sestaviti delujoč program.
Učenci se v šolah začnejo učiti programirati v jeziku, ki je že določen v kurikulumu, saj velja prepričanje, da je enostaven. Učenci se s postopnim pisanjem programov učijo lastnosti in sintakso programskega jezika. Znanje se nadgrajuje s kombiniranjem več ukazov skupaj. Na začetku je poudarek na sintaksi programskega jezika, šele nato se osredotočijo na semantiko (Booth, 1992, str. 16) Programiranje ni preprosta sposobnost, ampak je kombinacija povezanih sposobnosti, kot so analiza, specifikacija, oblikovanje algoritma in konstrukcija programske kode. Pri učnih urah predmeta uvod v programiranje se učitelji osredotočajo na konstrukcijo kode. Poučevanje programiranja se zato hitro spreobrne v osredotočanje na vidike sintakse programskega jezika (Thomsen, 2008, str. 70). Tudi učbeniki posvečajo svojo vsebino predstavitvi znanja določenega programskega jezika (Robins idr., 2003, str. 140–141). Učbeniki pomagajo učencem razumeti programski jezik in strukturo programov, vendar ne pokažejo, kako programirati, kakšen je programski proces (Bennedsen in Caspersen, 2008, str. 10).
Cilj programiranja je, da se učenci naučijo sistematičnega pristopa oblikovanja računalniških programov. Proces programiranja mora biti učencem predstavljen že na začetku. Tradicionalno poučevanje poteka skozi učne materiale, kot so učbeniki, zapiski, tabla, PowerPoint predstavitve in podobno (tabela 4). Vendar to ni dovolj dobro za predstavitev procesa programiranja. Tradicionalni učni materiali so uporabni za predstavitev izdelka, kot je dokončan program, vendar ne za predstavitev dinamičnega procesa, kot je ustvarjanje programa. Z njimi lahko predstavimo idealne rešitve, ki so rezultat nelinearnega razvojnega procesa. To je problematično, saj učenci dobijo vtis, da obstaja linearna in neposredna pot do rešitve. Rešitve oblikujejo na podoben način, in ko ugotovijo, da ne zmorejo oblikovati pravilne rešitve, obtožujejo sebe in se počutijo nesposobne. Posledično izgubijo samozavest in motivacijo za učenje programiranja (Bennedsen in Caspersen, 2008, str. 6–7).
Karmen Kolar Novi pristopi pri poučevanju programiranja
12
Tabela 4: Primerjava različnih učnih metod
Učna metoda Prednosti Slabosti Programiranje na tabli
- Učenci lahko sledijo. - Interakcija med učiteljem
in učencem.
- Na tablo lahko pišemo le majhne programe.
Dokončani programi na prosojnicah
- Predstavimo večje in kompleksnejše programe.
- Razlaga je lahko prehitra in učenec ne sodeluje v procesu nastajanja.
Programiranje v živo (z uporabo računalnika in projektorja)
- Programe lahko zaženemo in testiramo s pomočjo orodij.
- Omejen čas v razredu. - Ni shranjevanja in
predstavitve s tem izginejo.
Proces snemanja (z uporabo računalnika, mikrofona in programa za snemanje)
- Vzamemo si čas, ki ga potrebujemo, da predstavimo kompleksni problem.
- Predstavitev si lahko ogledamo neštetokrat, saj je shranjena na spletu.
- Ni prikazana uporaba različnih orodij.
- Razlage v posnetkih so navadno popolne in ne prikazujejo napak ter možnih rešitev.
Vir: Bennedsen in Caspersen, 2008, str. 10–11.
Problemi, s katerimi se učitelji programiranja spopadajo, so (Kölling in Barnes, 2008, str. 18):
� Pri učni uri ni enostavno videti, kako se učenci zanimajo za programiranje in kako rešujejo probleme.
� Težko je narediti povezavo med učno uro in nalogo. � Težko je učencem vzbuditi zanimanje in jih motivirati za programiranje. � Učenci imajo različne izkušnje, zaradi katerih je treba prilagoditi poučevanje. � Programska okolja so kompleksa, dolgočasna in ne omogočajo dobre podpore
poučevanju. Problem je v tem, da se programiranja ne zna poučevati. To se počne, že odkar obstaja ta disciplina. Kljub temu se pri poučevanju pojavljajo težave, o katerih poročajo na konferencah in delovnih skupinah pod LTSN1. Rešitev je prepoznavanje problema, ki je v praksi poučevanja. Če najdemo problem v poučevanju, se moramo najprej vprašati, kakšen je izvor problema in kaj lahko naredimo, da izboljšamo razumevanje. Pomembno je, da se učiteljevo delo odraža na učencih in da preizkuša različne tehnologije, ki bi lahko imele pomembno vlogo pri poučevanju (Boyle, 2004, str. 184–185).
1 LTSN – Learning and Teaching Support Network. Izobraževalna mreža v Veliki Britaniji, ki pospešuje kakovostno učenje in poučevanje z oblikovanjem boljših praks in disciplin.
Karmen Kolar
2.3 Dilema programskega jezika
Učitelji še vedno razpravljajoprogramiranja. Ali bi se moralObjektno-orientirani pristop zagovarjajo s tem, da je to naraven naresničnih problemov (Ala-Mo tem, ali je enostavnejši za umorajo učenci naučiti osnovnih struktur pro
Slika
Programski jezik Pascal je bil zasnovan leta 1970 predvsem v izobraževalne namene, saj je enostaven in dovolj zmogljiv za uporabo. Venajprimernejši za poučevanje programiranja (Lokar, 2001/2002, str. 24so pokazale, da so Java, C++ in C najbolj uporabljeni programski jeziki v izoprogramski jeziki pa niso bili oblikovani Pascal in Logo. Pri izbiri programskega jezika je smotrno razmisliti o pedagoških ovirah in prednostih, ki jih ima določen pMalmi, Mannila, Adams, Bennedsen, Devlin in Peterson, 2007, str. 207programski jezik zasnovan tako, da je dovolj enostaven in hkrati primeren za u
2 Paul Tymnn (2005); deRaadt idr. (2001,
Programski jeziki
Novi pristopi pri pouč
13
2.3 Dilema programskega jezika
itelji še vedno razpravljajo, kateri je najprimernejši programski jezik za poumoral najprej poučevati proceduralni ali objektni programski jezik?
ristop zagovarjajo s tem, da je to naraven način konceptualiziranja Mutka, 2004, str. 5). Tisti, ki uporabljajo ta pristopza učenje. Ne glede na to, kateri pristop bi moral biti prvi, se
iti osnovnih struktur programskega jezika (Lahtinen idr.
Slika 1: Ločevanje programskih jezikov
Programski jezik Pascal je bil zasnovan leta 1970 predvsem v izobraževalne namene, saj je enostaven in dovolj zmogljiv za uporabo. Večina učiteljev še danes smatra
evanje programiranja (Lokar, 2001/2002, str. 24–25)da so Java, C++ in C najbolj uporabljeni programski jeziki v izo
niso bili oblikovani za izobraževalne namene kot na primer Python, Pascal in Logo. Pri izbiri programskega jezika je smotrno razmisliti o pedagoških ovirah in
določen programski jezik. Po Schneiderju (1978, Malmi, Mannila, Adams, Bennedsen, Devlin in Peterson, 2007, str. 207–programski jezik zasnovan tako, da je dovolj enostaven in hkrati primeren za u
. (2001, 2003).
Nižji programski jeziki
Strojni jezik
Zbirni jezik
Višji programski jeziki
Delitev glede na
strukturo prevedenega
programa
Strukturirani (C, Java,
Nestrukturirani (Basic)
Delitev glede na
vsebino kodiranja
Postopkovni (C, Pascal,
Deklarativni (Prolog,
Delitev glede na
osnovni element
programiranja
Proceduralni (Pascal,
Objektni (Java, C++,
Novi pristopi pri poučevanju programiranja
programski jezik za poučevanje evati proceduralni ali objektni programski jezik?
čin konceptualiziranja Tisti, ki uporabljajo ta pristop, ne razmišljajo
kateri pristop bi moral biti prvi, se gramskega jezika (Lahtinen idr., 2005, str. 14).
Programski jezik Pascal je bil zasnovan leta 1970 predvsem v izobraževalne namene, saj je iteljev še danes smatra, da je Pascal
25). Toda raziskave2 da so Java, C++ in C najbolj uporabljeni programski jeziki v izobraževanju. Ti
izobraževalne namene kot na primer Python, Pascal in Logo. Pri izbiri programskega jezika je smotrno razmisliti o pedagoških ovirah in
1978, v Pears, Seidman, –208), bi moral biti
programski jezik zasnovan tako, da je dovolj enostaven in hkrati primeren za učenje osnov
Strukturirani (C, Java,
Pascal)
Nestrukturirani (Basic)
Postopkovni (C, Pascal,
Basic)
Deklarativni (Prolog,
Lisp)
Proceduralni (Pascal,
Basic, C)
Objektni (Java, C++,
Python)
Karmen Kolar Novi pristopi pri poučevanju programiranja
14
programiranja. Meni tudi, da mora biti cilj predmeta uvod v programiranje problemsko reševanje in oblikovanje algoritmov. Programske jezike, kot so Java, C++ in C, pa kritizira, češ da ne omogočajo dovolj algoritemskega razmišljanja, saj preveč vsiljujejo notacijo.
Howell (2003, v Chang in Chou, 2008, str. 222) trdi, da ni pomembno, kateri programski jezik se mora učiti kot prvi, temveč je pomemben pristop k učenju jezika.
3 MENTALNI MODEL
Mentalni model je prikaz uma, kognitivna struktura, ki podpira orazumljanje aktivnosti, kot je programiranje. Zdi se, da tradicionalni pristop poučevanja programiranja ni ravno idealen za konstrukcijo ustreznih mentalnih modelov konceptov programiranja (Ma, Ferguson, Roper, Ross in Wood, 2009, str. 166). To lahko sklepamo tudi iz raziskave, ki so jo opravili McCracken idr. (2001).
Mentalni modeli kontrole, podatkovnih struktur, prikaz podatkov, oblikovanja programa in problemske domene so zelo pomembni pri gradnji razumevanja. Pisanje programov vključuje vzdrževanje različnih oblik mentalnih modelov, kot so (Robins idr., 2003, str. 149, 158):
1. model znanja, 2. model razumevanja, 3. model problemskega reševanja, 4. abstraktni model računalnika (imenovan tudi notacijski stroj), 5. model oblikovanja.
Kakšne mentalne modele imajo programerji začetniki? Ma, Ferguson, Roper in Wood
(2007) so naredili raziskavo na tem področju. Ugotavljali so, kakšne mentalne modele osnovnih konceptov objektno-orientiranega programiranja imajo programerji začetniki. Preučevali so relacije mentalnih modelov in ugotavljali, kakšno zmožnost delovanja imajo mentalni modeli pri reševanju programerskih nalog. Po končanem predmetu uvod v programiranje na univerzi so izpeljali anketo med programerji začetniki in prostovoljno je sodelovalo 90 učencev. Vprašalnik je bil sestavljen iz odprtega dela in iz dela, kjer je bilo več možnih odgovorov. V odprtem delu so učenci opisali izvedbo manjšega programa, v drugem delu pa so predvideli rezultate manjšega programa. Naloge so bile sestavljene tako, da so odkrivale mentalne modele pri nalogah z vrednostmi in z referencami.
Karmen Kolar
Graf 6: Mentalni modeli nalog z vrednostmi
Učence so kategorizirali kot razdelili na konsistetno primerno
Učenci, ki imajo ustrezen mentalni model, so tistiUčenci, ki imajo neustrezenskupini, ki je konsistentno neprimerna. Uspogojema:
1) primerno: mora se ujemati z modelom2) konsistentno: vedno se mora ujemati
Raziskava je pokazala, da ima tretjina uvrednostmi (graf 6) in 17 % u(graf 7). Učenci z ustrezno zmožnimi mentalnimi modeli programirajo precej bolje kot tisti, ki imajo neustrezne mentalne modele. Izkazalo se je, da modele, so celo zmogli izvajati upoštevati, da šibkejši učenci niso sodelovali v raziskavi.
3.1 Karakteristike programerjev za
Programerjem začetnikom primanjkuje znanjMutka, 2004, str. 2). Avtorji imajo razlistrokovnjak. Po Winslowu (programiranja. Po H. Dreyfusprogramer začetnik, napredni zaobvlada programiranje, in strokovnjak. Programerji strokovnjaki so hitrejši, natanuporabljajo različne vire znanja in Raziskave in študije na temo programerjev zaSpohrer (1989) sta skupaj zbrala programerjev začetnikov v zbirki študije
23%
14%63%
Mentalni modeli nalog z
vrednostmi
inkonsistentno
konsistentno neprimerno
konsistentno primerno
Novi pristopi pri pouč
15
: Mentalni modeli nalog z vrednostmi Graf 7: Mentalni modeli nalog z referencami
ence so kategorizirali kot inkonsistentne in konsistentne. Konsistentno skupino so konsistetno primerno in neprimerno skupino (vsaj en ustrezni mentalni model).
mentalni model, so tisti, ki so v konsistentno primerni skupini. en mentalni model, so tisti, ki so v inkonsistentni skupini oz.
skupini, ki je konsistentno neprimerna. Ustrezni mentalni model je takrat,
: mora se ujemati z modelom, kako programski koncept dejansko deluje: vedno se mora ujemati z dejanskim modelom.
da ima tretjina učencev neustrezen mentalni model pri nalogah z % učencev ustrezen mentalni model pri nalogah z referencami
enci z ustrezno zmožnimi mentalnimi modeli programirajo precej bolje kot tisti, ki imajo neustrezne mentalne modele. Izkazalo se je, da čeprav imajo neustrezne mentalne
celo zmogli izvajati nekatere napredne programerske konceptečenci niso sodelovali v raziskavi.
Karakteristike programerjev začetnikov
etnikom primanjkuje znanja in veščin programerjev strokovnjakov (AlaMutka, 2004, str. 2). Avtorji imajo različna mnenja, kdaj programer zastrokovnjak. Po Winslowu (1996, v Robins idr., 2003, str. 139), je potrebnih 10 let
Dreyfusu in S. Dreyfusu (1986, prav tam), obstaja pet stopenj: etnik, napredni začetnik, programer s kompetencami, programer
in strokovnjak. Programerji strokovnjaki so hitrejši, natanne vire znanja in učinkovite strategije.
kave in študije na temo programerjev začetnikov so predvsem iz 80. skupaj zbrala različne poglede, karakteristike in skupna nerazumevanja
etnikov v zbirki študije Studying the Novice Programer.
23%
14%
Mentalni modeli nalog z
vrednostmi
konsistentno neprimerno
konsistentno primerno
41%
42%
17%
Mentalni modeli nalog z
referencami
inkonsistentno
konsistentno neprimerno
konsistentno primerno
Novi pristopi pri poučevanju programiranja
: Mentalni modeli nalog z referencami
. Konsistentno skupino so skupino (vsaj en ustrezni mentalni model).
ki so v konsistentno primerni skupini. sistentni skupini oz.
trezni mentalni model je takrat, ko ustreza obema
kako programski koncept dejansko deluje;
mentalni model pri nalogah z encev ustrezen mentalni model pri nalogah z referencami
enci z ustrezno zmožnimi mentalnimi modeli programirajo precej bolje kot tisti, eprav imajo neustrezne mentalne
nekatere napredne programerske koncepte, vendar moramo
in programerjev strokovnjakov (Ala-amer začetnik postane
je potrebnih 10 let obstaja pet stopenj:
etnik, programer s kompetencami, programer, ki že in strokovnjak. Programerji strokovnjaki so hitrejši, natančni,
80. let. Soloway in skupna nerazumevanja
.
41%
Mentalni modeli nalog z
referencami
inkonsistentno
konsistentno neprimerno
konsistentno primerno
Karmen Kolar Novi pristopi pri poučevanju programiranja
16
Tabela 5: Avtorji o programerjih začetnikih
Avtorji Skupne karakteristike Linn in Dalbey (1989)
- premalo časa namenijo za načrtovanje in testiranje programske kode,
- majhni lokalni popravki v programu namesto rekonstrukcije programa.
Kurland, Pea, Clement in Mawby (1989)
- znanje je bolj v kontekstu kot pa splošno.
Winslow (1996)
- omejeni so na površinsko znanje, - znanje je površinsko organizirano, - primanjkuje jim podrobnega mentalnega
modela, - spodleti jim uporabiti pomembno znanje, - za reševanje problemov uporabljajo splošne
problemske strategije namesto specifičnih programerskih strategij,
- programirajo vrstico za vrstico, - poznajo sintakso in semantiko posameznih
izjav, vendar jih niso sposobni sestaviti v delujoč program,
- težave imajo pri prenosu ročnih problemov v računalniški program.
Widowski in Eyferth (1986)
- naenkrat lahko vidijo le eno vrstico, - programerji strokovnjaki imajo
fleksibilnejše strategije in so bolj sposobni prepoznati in se odzvati na nove situacije.
Perkins, Hancock, Hobbs, Martin in Simmons (1989)
- slabo sledijo kodi.
Vir: Povzeto po Robinsu idr., 2003, str. 137–172.
V splošnem imajo začetniki težave zaradi primanjkovanja specifičnega znanja in strategij programiranja. Pomembni vprašanji, ki si ju moramo zastaviti, sta: Kako se začetniki učijo programiranja? Zakaj imajo težave pri učenju? Odgovor leži v različnih področjih oz. aktivnostih, kot so: kognitivna psihologija, prikaz znanja, problemsko reševanje, delovni spomin itd. (Robins idr., 2003, str. 147; Nuutila idr., 2008, str. 50).
Karmen Kolar Novi pristopi pri poučevanju programiranja
17
4 PSIHOLOGIJA PROGRAMIRANJA
Kognitivna psihologija je pomembna zaradi funkcij, na katere se osredotoča: mišljenje, spomin, učenje, razumevanje, problemsko reševanje oz. vse, kar spada pod človeško procesiranje informacij. Procesiranje informacij v umu postane pri programiranju analogno z računalnikom. S človeškim umom modeliramo računalniški program. Informacija je predstavljena kot podatek v računalniškem sistemu in kognitivne funkcije so nujne za procesiranje podatkov. Znanje je informacija, ki se procesira v spomin in je dveh vrst: proceduralno in deklarativno. Učenje je prenos informacije iz deklarativne v proceduralno obliko (Booth, 1992, str. 40–41). Zato pravimo, da je programiranje kognitivni proces. Področja, ki nas zanimajo, so: razumevanje programa, mentalni modeli, potrebno znanje in sposobnosti za programiranje (Robins idr., 2003, str. 139). Kognitivni faktor, ki ga je treba upoštevati, je tudi učni stil. Ena izmed poznanih klasifikacij učnih stilov deli učenje na površinsko in globoko (razumevanje). Globoko razumevanje se osredotoča na razumevanje teme, medtem ko je površinsko učenje na pamet. Najustreznejša strategija za programiranje leži med obema učnima stiloma, saj je površinsko učenje uporabno pri sintaksi, globinsko pa je potrebno za razvoj nadaljnjih kompetenc. Oba učna stila morata biti uporabljena istočasno, saj se moramo najprej naučiti pravil sintakse določenega programskega jezika in jih šele nato konkretno uporabiti. Učitelj mora upoštevati različne učne stile in uporabiti različne pristope poučevanja, ki so primerni za določen učni stil (Jenkins, 2002, str. 54). Splošno gledano obstajajo učenci, ki se učijo brez pretiranega truda (efektivni), in tisti, ki se ne učijo, če jih snov ne pritegne (neefektivni). Na uspeh pri učenju programiranja vpliva motivacija in strategije učenja. Strategije učenja zaznamujejo in oblikujejo učenca v efektivnega ali neefektivnega. Predhodno znanje je lahko tudi poglavitni vir napak, še posebej pri prenosu iz problemskega reševanja v naravnem jeziku v programiranje v programskem jeziku. Primer: nekateri učenci razumejo, da se pogoj v zanki while mora preverjati nenehno, namesto da se preveri le enkrat na iteracijo (Ala-Mutka, 2004, str. 3). Kako spreobrnemo neefektivnega učenca v efektivnega? Pomembni faktorji, ki jih moramo pri tem upoštevati, so: motivacija, splošno in specifično znanje, strategije in mentalni modeli (Robins idr., 2003, str. 165).
4.1 Merjenje znanja
Za dobro poučevanje se moramo vprašati, ali so cilji poučevanja doseženi. Vrednotenje izobraževanja je pomembna komponenta oblikovalno-izobraževalnega modela. Na žalost pa ni nobenega modela, s pomočjo katerega bi lahko evalvirali učenje. Kraiger, Ford in Salas (1993) domnevajo, da je rezultat učenja večdimenzionalen, tj. sprememba v kognitivni, čustveni in spretnostni sposobnosti. V svoji študiji predlagajo tri kategorije učenčevega pridobljenega znanja (slika 2) z upoštevanjem Bloomove (1956) in Gagnejeve (1984) taksonomije (Kraiger, Ford in Salas, 1993, str. 313–314):
Karmen Kolar Novi pristopi pri poučevanju programiranja
18
Slika 2: Klasifikacijska shema
1. Kognitivni izidi
Cilj kognitivnega znanja je izgradnja teoretičnega modela, kako človek funkcionira. Kognitivna perspektiva se osredotoča na statične in tudi na dinamične procese pridobljenega znanja. Za merjenje kognitivnih izidov so avtorji Kraiger idr. prilagodili Gagnejeve (1984) tri kategorije evalvacijskih merjenj (v Kraiger idr., 1993, str. 313-316):
a) Verbalno znanje
Gre predvsem za deklarativno znanje (informacija o čem). Razvoj verbalnega znanja je potreben (vendar ne zadosten) za oblikovanje sposobnosti na višjem nivoju.
b) Organizacija znanja
Mišljeno je predvsem proceduralno znanje (informacija kako). Bolj kot količina znanja je pomembna organizacija znanja v spominu, ki jo opišemo z mentalnim modelom. Ne organizirajo se samo obstoječe informacije, ampak tudi novopridobljeno znanje. S pomočjo mentalnega modela lahko odkrivamo razlike med programerji začetniki in strokovnjaki. Programerji strokovnjaki nove informacije shranjujejo v mentalnem modelu na način, kot je obstoječe znanje organizirano. Sposobni so hitro dostopati do strategij za reševanje problemov in tako hitreje reševati probleme.
c) Kognitivne strategije
Andersonova teorija (1982) pravi, da je razvijanje sposobnosti nadaljevalni proces. Bolj ko se znanje in procesi sestavijo, bolj elegantno se strategije prikazujejo. (v Kraiger idr., 1993, str. 315) Kognitivne strategije se nanašajo na strategije, ki pospešijo pridobivanje in aplikacijo znanja. Metakognitivne sposobnosti kot načrtovanje, opazovanje in pregled ciljev so pomemben člen pri oblikovanju kognitivnih sposobnosti in dobro kazalo učenja. Te
Karmen Kolar
sposobnosti so močnejše pri programerjih strokovnjakih. V nasprotju z zaimajo strokovnjaki mo
� opustijo problemsko reševanje, � dobro ocenijo težavnost novih problemov,� so bolj sposobni
opravljanju naloge.
2. Spretnosti
Ta kategorija se nanaša na razvijanje tehnirazvijanju sposobnosti v splošnem predpostavljajo tri definirane faze (318):
a) Začetna pridobitev sposobnosti
Prehod znanja iz deklarativnega v proceduralno. Na tej fazi so uokrnjene in delo zato poteka poda je ponavljajoča se vaja in urjenje ustrezna tehnika za uprogramskega jezika.
b) Kompilacija sposobnosti
Na tej stopnji je delo hitrejše in napak je manj. Uizvajati aktivnosti. Po kompilacija rezultat dveh medsebojnih procesov: proceduralizacije in kompozicije. V proceduralizaciji učenec oblikuje metodo, ki je specifina primer programer se naupri različnih tipih problemov. V kompilaciji pa je usposobnost je ustrezna v dolo
c) Avtomatičnost sposobnosti
Začetne sposobnosti postanejo prilagodljive v praksi. Navadučenci imajo na voljo veopazovanja. Na primer med vožnjo avtomobila je šofer sposoben spreminjati hitrost, menjati prestave, opazovati cesto, reagirati na okolico, se pogovarj317–318)
3. Čustveni izidi
a) Vedenjsko znanje
Začetna
pridobitev
sposobnosti
Novi pristopi pri pouč
19
čnejše pri programerjih strokovnjakih. V nasprotju z zaimajo strokovnjaki močnejše metakognitivne sposobnosti, saj:
pustijo problemsko reševanje, če se izkaže za neuspešno,dobro ocenijo težavnost novih problemov, so bolj sposobni oceniti število poskusov, ki bi jih morali izvršiti pri opravljanju naloge.
Ta kategorija se nanaša na razvijanje tehničnih ali mehaničnih sposobnosti. Teorije o razvijanju sposobnosti v splošnem predpostavljajo tri definirane faze (prav tam
Slika 3: Faze pridobitve spretnosti
etna pridobitev sposobnosti Prehod znanja iz deklarativnega v proceduralno. Na tej fazi so učenokrnjene in delo zato poteka počasneje. Parsons in Hadenova (2006, str. 1) menita,
ča se vaja in urjenje ustrezna tehnika za uprogramskega jezika.
Kompilacija sposobnosti Na tej stopnji je delo hitrejše in napak je manj. Učenec je sposoben vzporedno izvajati aktivnosti. Po Andersonu (1982, v Kraiger idr., 1993kompilacija rezultat dveh medsebojnih procesov: proceduralizacije in kompozicije. V
čenec oblikuje metodo, ki je specifična za produkcijo spretnosti na primer programer se nauči uporabljati določene metode za odstranjevanje napak
nih tipih problemov. V kompilaciji pa je učenec sposoben presoditi, katera sposobnost je ustrezna v določeni situaciji.
nost sposobnosti etne sposobnosti postanejo prilagodljive v praksi. Navade postanejo avtomati
enci imajo na voljo večje kognitivne vire. Naloge se izvedejo brez zavestnega opazovanja. Na primer med vožnjo avtomobila je šofer sposoben spreminjati hitrost, menjati prestave, opazovati cesto, reagirati na okolico, se pogovarj
pridobitev
sposobnostiKompilacija Avtomatičnost
Novi pristopi pri poučevanju programiranja
nejše pri programerjih strokovnjakih. V nasprotju z začetniki
e se izkaže za neuspešno,
oceniti število poskusov, ki bi jih morali izvršiti pri
nih sposobnosti. Teorije o prav tam, str. 316–
Prehod znanja iz deklarativnega v proceduralno. Na tej fazi so učenčeve sposobnosti (2006, str. 1) menita,
a se vaja in urjenje ustrezna tehnika za učenje sintakse
enec je sposoben vzporedno v Kraiger idr., 1993, str. 316), je
kompilacija rezultat dveh medsebojnih procesov: proceduralizacije in kompozicije. V na za produkcijo spretnosti –
ene metode za odstranjevanje napak enec sposoben presoditi, katera
e postanejo avtomatične, je kognitivne vire. Naloge se izvedejo brez zavestnega
opazovanja. Na primer med vožnjo avtomobila je šofer sposoben spreminjati hitrost, menjati prestave, opazovati cesto, reagirati na okolico, se pogovarjati. (prav tam, str.
Avtomatičnost
Karmen Kolar Novi pristopi pri poučevanju programiranja
20
Po Gagneju (1984, v Kraiger idr., 1993, str. 318), je vedenje znanje, ki ga pridobimo, in notranje stanje, ki vpliva na odločitve posameznikovih dejanj. Na vedenje posameznika lahko vplivamo na primer z oglaševanjem. To je dokaz, da je vedenje lahko spremenljivo. Raziskava teorije vedenjskega modela razkriva, da morajo biti sposobnosti najprej razvite z opazovanjem, vajo, nato okrepitvijo. Vedenjski rezultati, ki bi lahko bili pridobljeni s poučevanjem, so: individualnost, kreativnost, organiziranost in ločevanje, kar je pomembno za učenje, tolerantnost za raznolikost, notranja rast, samozavedanje itd. (prav tam). Po Perkinsu (1989, v Ala-Mutka idr., 2004, str. 3), obstajata dva vedenjska tipa pri soočanju problemskih situacij. Prvi, stopper, se v problemski situaciji ustavi in izgubi vse upe za reševanje problema. Drugi, mover, pa z rekonstrukcijo kode poskuša rešiti problem in napake obravnava kot povratno informacijo. Ekstremni mover, tinkerer, ne zmore slediti svojemu programu ter na slepo dela spremembe v programski kodi.
b) Motivacija
Imamo več vrst motivacije, kot je na primer notranja, zunanja in socialna motivacija. V splošnem so programerji motivirani, da uspejo napisati delujoč program in ne spodletijo namerno (Jenkins, 2002, str. 54). Po Gagnejevi klasifikaciji (1984, v Kraiger idr., 1993, str. 318), je motivacija notranje stanje, ki vpliva na posameznikove navade. Motivacijska sprememba je rezultat poučevanja, kar pomeni, da so rezultati pričakovani. Avtorji Kraiger, Ford in Salas so se v članku osredotočili na tri motivacijske rezultate, ki so sekundarni objekti izobraževanja (1993, str. 320–321):
� Motivacijska dispozicija
Raziskava kognitivnega razvoja pri otrocih je pripeljala do spoznanja, da obstajata dve motivacijski dispoziciji: orientacija oblasti in delovna orientacija. Prva povečuje tekmovalnost, ki se nanaša na nalogo. Druga pa se nanaša na to, da naredimo nekaj dobro. Bolj zmogljivi učenci so sposobni obvladovati motivacijsko nagnjenje, tj. privzeti orientacijo, ki je primerna za določeno situacijo.
� Samoučinkovitost
Nanaša se na posameznikovo zaznavanje delovnih zmožnosti v določeni aktivnosti, tj. napor, ki ga porabi v aktivnosti, vztrajnost in učinek, ki ga pridobi iz aktivnosti. Spremembe v učenčevi samoučinkovitosti bi lahko bile indikator učenja in razvijanja sposobnosti med procesom izobraževanja.
� Postavljanje ciljev
Določanje ciljev je pomemben dejavnik, ki vpliva na prenos naučenih navad za delo. Pri postavljanju ciljev se kažejo razlike med začetniki in strokovnjaki. Slednji si namreč postavijo težje, hierarhično strukturirane cilje in so predani uresničitvi cilja. Začetniki določajo cilje na podlagi že poznanih metod. Ne oblikujejo svojih metod, ki bi morebiti bile primernejše za reševanje problema.
V tabeli 6 so predstavljeni načini, kako lahko merimo posamezne kategorije učenčevega pridobljenega znanja.
Karmen Kolar Novi pristopi pri poučevanju programiranja
21
Tabela 6: Merjenje pridobljenega znanja
Kategorija Konstrukti učenja
Merjenje
Kognitivni izidi
Verbalno znanje
Deklarativno znanje
Testi, s katerimi merimo znanje: - test moči, ki ugotavlja točnost, - test hitrosti, ki ugotavlja, kako
hiter je dostop do znanja.
Organizacija znanja
Mentalni modeli V tej kategoriji se preverja razumevanje znanja.
Kognitivne strategije
Metakognitivne sposobnosti
Učenci opišejo in predstavijo, kaj naredijo na vsakem koraku. Koraki razkrivajo, ali so učenci testirali vse hipoteze, delovali pod določenimi cilji in razumeli, ali je bil kakšen napredek k rešitvi.
Spretnosti Kompilacija Kompozicija Proceduralizacija
Slediti je treba učenčevem oblikovanju sposobnosti. To vključuje opazovanje in opisovanje določenih navad posameznikov: na kaj se učenci osredotočajo, kako rešijo nalogo. Učenec lahko demonstrira, kako je reševal določeno nalogo.
Avtomatičnost Avtomatično procesiranje
Več možnosti: - učenec paralelno rešuje dve
nalogi, - učenec rešuje nalogo, ki vsebuje
napačne objekte, katere naj bi avtomatično prepoznal.
Čustveni izidi
Vedenje Vedenjska moč Primer: uporaba samoporočil, s katerimi se ugotovi, kakšna prepričanja in poglede imajo ter kako pogosto razmišljajo o določenem vidiku.
Motivacija Motivacijska dispozicija Samoučinkovitost Postavljanje ciljev
Ena od tehnik: učencem se pokažejo naloge, ki se razlikujejo po zahtevnosti. Sami izberejo naloge, za katere menijo, da jih znajo rešiti.
Vir: Kraiger idr., 1993, str. 323.
Karmen Kolar Novi pristopi pri poučevanju programiranja
22
5 ABSTRAKCIJA
Programiranje zahteva specifičen tip razmišljanja, ki ga začetniki ne obvladajo. Premisliti je treba vse možne situacije, objekte, s katerimi se mora program ukvarjati. Zato morajo biti programski mehanizmi dobro razumljeni, da so lahko uporabljeni pri pisanju programa. Vendar ti mehanizmi niso nekaj, kar bi učenci razumeli že vnaprej. Veliko je novih, abstraktnih konceptov, ki se jih morajo začetniki naučiti in razumeti (Nuutila idr., 2008, str. 50–51).
Pri programiranju se od učencev zahteva, da so sposobni izvajati problemske naloge, abstraktno razmišljati, oblikovati vzorce in analizirati. Veliko učencev ni sposobnih kompleksnega razmišljanja in izdelovanja modelov, saj jim je identifikacija problema v algoritmu pretežka. Moramo se vprašati: V čem je problem? Česa jim primanjkuje? Ali je kriva nižja inteligenca? Kramer (2007, str. 36) meni, da je ključ v abstraktnosti, in sicer v sposobnosti za izvajanje abstraktnega mišljenja in kazanju abstraktnih sposobnosti. S tem se strinja tudi Blackwell (2002, v Nuutila idr., 2008, str. 50), ki pravi, da težave izhajajo iz potrebe po abstrakciji računalniškega programiranja. Torej je abstraktnost poglavitna sposobnost za izvajanje matematike in programiranja (Kramer, 2007, str. 36). Toda ali je učenca sploh možno naučiti abstraktnosti?
V stopnji formalno logičnega mišljenja (teorija kognitivnega razvoja po Piagetu3), ki traja od 12. leta do odraslosti, se razvijejo sposobnosti za abstraktno, sistematično in hipotetično mišljenje. Uporabljajo se simboli, ki predstavljajo abstraktne koncepte, na primer v matematiki in računalništvu. Na tej stopnji so posamezniki lahko sposobni abstraktnega in znanstvenega mišljenja. Da bi lahko učence naučili abstraktnega mišljenja in spretnosti, Huitt in Hummel (2003, v Kramer, 2007, str. 41) predlagata uporabo različnih tehnik pri poučevanju. Učencem moramo dati možnost, da raziščejo hipotetična vprašanja in da razložijo, kako rešiti problem. Ala-Mutka (2004) meni, da je pri učenju abstraktnosti koristna uporaba vizualizacije.
Čeprav je matematika poglavitni predmet za učenje abstraktnega mišljenja, se mora abstraktnost poučevati tudi preko drugih tem. V računalništvu učenci niso le sposobni obvladovanja simbolike, ampak so sposobni narediti tudi prevod neformalnega resničnega sveta v poenostavljen abstraktni model. Učitelji morajo poskrbeti, da bo poučevanje programiranja učinkovito. Sami morajo imeti ustrezne abstraktne sposobnosti. Učenčeve abstraktne sposobnosti pa lahko izmerimo tako, da pogledamo ocene glede na prejšnja leta, ocene skupinskega dela, laboratorijskega dela in testov. S pomočjo teh podatkov lahko prilagodimo tehnike poučevanja glede na učenčeve sposobnosti (Kramer, 2007, 42–44).
Kaj pravijo različni avtorji o abstraktnosti (povzeto po Kramer, 2007; Nuutila idr., 2008), je prikazano v tabeli 11.
3 Jean Piaget (1896-1980), švicarski psiholog in filozof.
Karmen Kolar Novi pristopi pri poučevanju programiranja
23
Tabela 7: Avtorji o abstraktnosti
Avtorji
Devlin »Ko se enkrat zavedamo, da je računalništvo pravzaprav konstrukt, manipulacija in razumevanje abstraktnosti, nam postane jasno, da je to predpogoj za dobro pisanje računalniških programov, ki je pravzaprav sposobnost za obvladovanje abstraktnosti.«
Wing »Abstraktnost je v računalniškem mišljenju pomembna, tj. treba je misliti na več ravneh abstrakcije.«
Ghezzi, Jazayeri, Mandrioli
»Abstrakcija je temeljno načelo za obvladovanje kompleksnosti pri razvoju programske opreme.«
Blackwell
»Oblikovanje programa zahteva definicijo novih abstrakcij, kar zahteva posebno kognitivno delovanje.«
Karmen Kolar Novi pristopi pri poučevanju programiranja
24
II. OBRAVNAVA REŠITEV
6 PROBLEMSKO REŠEVANJE
Več avtorjev (Ala-Mutka, Gomes in Mendes, Kölling in Barnes, Schneider) se strinja, da je cilj predmeta uvod v programiranje razviti sposobnosti problemskega reševanja. Programski jezik je lahko sredstvo za reševanje problemov (Gomes in Mendes, 2007, str. 1). Linnova in Dalbey (1989, str. 78) trdita: »Programiranje je lahko bogat vir izkušenj problemskega reševanja.«
V programiranju imamo odprtokončne probleme. Rešitev ni posamezna, vendar je več možnih, ki so bodisi boljše ali slabše. Obstoječo rešitev lahko na različne načine tudi izboljšamo, s tem ko jo naredimo podrobnejšo, učinkovitejšo, elegantnejšo, razumljivejšo in podobno (Nuutila idr., 2008, str. 62).
Slika 4: Klasifikacija matematičnih problemov
Vir: Frobisher, 1994.
Linnova in Dalbey (1989, str. 58–62) navajata idealno verigo kognitivnih dosežkov: v prvem členu se programerji začetniki začnejo učiti posamezne konstrukte programskega jezika. V drugem členu se oblikujejo sposobnosti postopnega načrtovanja, testiranja in preoblikovanja kode. Nato napredujejo tako, da usvojene sposobnosti uporabijo za reševanje določenega programskega problema. Znanje in strategije, pridobljene iz poučevanega programskega jezika, se lahko prenesejo v druge programske jezike in situacije.
Karmen Kolar Novi pristopi pri poučevanju programiranja
25
6.1 Problemsko zasnovano učenje
Kaj je problemsko zasnovano učenje t. i. PBL (angl. Problem Based Learning) (Nuutila idr., 2008, str. 47)?
� Po Schmidtu (1983, prav tam): »Učenje, ki je simulirano z opisi resnično življenjskih
problemov.« Potrebna je pojasnitev določenega primera, ki ga je treba razumeti, da ga lahko rešimo. Bistvo je v pridobivanju znanja, da problem razumemo brez neposrednega reševanja.
� Učenje z ustvarjanjem rešitev resnično življenjskih problemov
Rešitve predstavljajo računalniški programi. Učenci delajo v skupinah in oblikujejo rešitve za probleme, ki imajo več možnih rešitev. Namen je razvijati sposobnosti za reševanje problemov.
� Učenje z delovanjem na kompleksnih, resnično življenjskih nalogah
Učenje na osnovi problema zajema različne faze: analiza, sinteza, implementacija, predstavitev.
Problem mora biti zasnovan tako, da spodbuja razvoj metakognitivnih sposobnosti (Barg, Fekete, Greening, Hollands, Kay, Kingston in Kathryn, 1999, str. 6). Resničnost problema ima kar nekaj prednosti. Po Haflerjevi (1998, v Nuutila idr., 2008, str. 60–61), vsebuje element presenečenja, ki opisuje nekaj, kar je v nasprotju s pričakovanjem učencev. Če je problem izmišljen, ne spodbudi učenčeve radovednosti. Resničnost pomaga zagotoviti pomembnost problema in posledično pomaga učencem prenesti učni material v določeno situacijo. Aktivira se prejšnje znanje iz primerov, kjer se je bilo treba naučiti abstraktnih konceptov. Haflerjeva (1998, prav tam) pravi tudi, da potreba po resničnosti vodi k pedagoškemu in učinkovitejšemu problemu. Resničnost vsebuje protislovja, ki prisili učence, da razmišljajo bolj poglobljeno in odprtokončno.
Problemsko zasnovano učenje predstavlja problem, vprašanje ali uganko, ki jo učenci želijo rešiti. Je odprtokončni problem, ki vodi k učenju. Učenje je samostojno ali v skupini. Vloga učitelja je, da spodbuja učence pri delu. Problem predstavlja naloga, začetna aktivnost, ki se osredotoča na določen vidik v snovi. Učenci uporabljajo učni material, s pomočjo katerega preučijo problem, ki je (če je mogoče) predstavljen v resnično življenjskem kontekstu. Učenec je lahko dodeljen v majhno problemsko skupino, ki nato interaktivno sodeluje z učenci in učiteljem. Med sabo si izmenjujejo znanje in razpravljajo o različnih pristopih za razrešitev problema (povzeto po Barg idr., 1999, str. 4–6). V skupini učenec išče, razpravlja in upošteva možne rešitve ne glede na programski jezik. Šele nato, ko je algoritemska rešitev oblikovana, se jo predstavi s sintakso programskega jezika (Deek, Kimmel in McHugh, 1998, str. 314). Problemsko zasnovano učenje po metodi 7 korakov (Nuutila idr., 2008, str. 54–57):
1. Pregled problema: učenci se spoznajo s materialom določenega problema. 2. Identifikacija problema.
Karmen Kolar Novi pristopi pri poučevanju programiranja
26
3. Viharjenje (angl. Brainstorming): asociacije, ideje, ki jih imajo učenci o problemu. S tem se aktivira prejšnje znanje o temi. Viharjenje je divergentna4 aktivnost.
4. Skica opisanega modela: zbrano znanje učenci sestavijo v model, ki pojasnjuje, kaj se dogaja v problemu. Skiciranje modela je konvergentna5 aktivnost, saj učenci sistematizirajo material, ki so ga generirali z viharjenjem, v povezano celoto. Pri skiciranju modela oz. pri zbiranju idej se vzpostavijo nove abstrakcije in relacije.
5. Vzpostavitev učnih ciljev: vzpostavijo se učni cilji, ki so zasnovani v modelu. 6. Individualno učenje: vsak učenec se individualno uči, da doseže vse učne cilje. 7. Izdelava: razlaga konceptov, analiza materiala, evalvacija.
Učitelj je pasivni opazovalec in ne sme biti preveč aktiven. Ne sme biti odgovoren za učenčevo učenje, vendar je njegova prisotnost pomembna pri premagovanju ovir in preprečevanju razpada skupine. Svetuje učencem, kaj je treba izboljšati, česa primanjkuje, katere ideje privedejo do rešitve. Učenci so tisti, ki morajo imeti nadzor od začetka do konca (Nuutila idr., 2008, str. 62).
Problemsko zasnovano učenje stremi k naslednjim ciljem (Barg idr., 1999, str. 21–22):
� samostojnost in iniciativa učenca, � kritično mišljenje in sposobnost problemskega reševanja, � sposobnost dela v skupini, � komunikacijske sposobnosti, � sposobnost planiranja.
Problemi, s katerimi se učenci soočajo (Nuutila idr., 2008, str. 64):
� novi abstraktni koncepti in mehanizmi, � nenehno reševanje problema in sprotno oblikovanje, � stroga sintaksa in semantika programskega jezika, � programsko orodje in delovne navade.
6.2 Raziskava
Zanimiva je raziskava, ki jo je izvedel Rolandsson (2009) v obliki vprašalnikov. Zanimalo ga je predvsem, kako učitelji reflektirajo svoje poučevanje, kakšno mnenje imajo o problemskem reševanju in kakšne sposobnosti imajo učenci pri učenju programiranja. Vprašalnik je izpolnilo 104 učiteljev različnih srednjih šol na Švedskem. Avtor je zasnoval vprašanja po modelu kognitivne verige dosežkov (Linn in Dalbey, 1989) in sicer tako, da je izbiro odgovorov razdelil na tri stopnje (Rolandsson, str. 366–367):
1. Stopnja: osnovni konstrukti programskega jezika. 2. Stopnja: sposobnosti oblikovanja in postopnega načrtovanja. 3. Stopnja: Sposobnosti problemskega reševanja.
4 Divergentna aktivnost – aktivnost, ki rešuje problem na več možnih načinov. Rešitev je neskončno. 5 Konvergentna aktivnost – aktivnost, ki je usmerjena k iskanju rešitve problema z eno samo možno rešitvijo.
Karmen Kolar
Poglejmo si dve vprašanji:
� Kaj je glavni razlog, da u
Graf 8
Učitelji so mnenja (59%), da in/ali strukturiranega razmišabstraktnem, matematičnem ali problemskem razmiodstotek učiteljev meni, da je tevprašati tudi, kako si učitelji interpretirajo
� Katere znanja so potrebna
Graf 9: Znanja
Iz zgornjega grafa lahko razberemo, da je problemskega reševanja oblikujejo programerja v strokovnjaka. Veučiteljev pa je mnenja, da so klju(stopnja 2). Avtor raziskave meni, da je razlog
19%
13%
33%
Novi pristopi pri pouč
27
mo si dve vprašanji:
je glavni razlog, da učenci niso sposobni reševati kompleksnih nalog
8: Težave pri reševanju kompleksnih nalog
, da največji problem leži v sposobnosti analitišljanja (stopnja 2). Le 19% učiteljev je mnenja, da je te
nem ali problemskem razmišljanju (stopnja 3). Zakaj tako nizek iteljev meni, da je težava v sposobnosti problemskega reševanja
itelji interpretirajo problemsko reševanje?
Katere znanja so potrebna, da programer postane strokovnjak?
Znanja, ki oblikujejo programerja strokovnjaka
Iz zgornjega grafa lahko razberemo, da je 33% učiteljev mnenja, da sposobnosti evanja oblikujejo programerja v strokovnjaka. Več kot polovica (
so ključne sposobnosti oblikovanja in postopnega . Avtor raziskave meni, da je razlog za tako visok odstotek dejstvo
9%
59%
13%
Osnovni konstrukti
programskega jezika
Sposobnosti oblikovanja in
postopnega načrtovanja
Sposobnosti problemskega
reševanja
Drugo mnenje
9%
56%
2%Osnovni konstrukti
programskega jezika
Sposobnosti oblikovanja in
postopnega načrtovanja
Sposobnosti problemskega
reševanja
Drugo mnenje
Novi pristopi pri poučevanju programiranja
iso sposobni reševati kompleksnih nalog?
i v sposobnosti analitičnega, logičnega iteljev je mnenja, da je težava v
ljanju (stopnja 3). Zakaj tako nizek evanja? Smiselno se je
, ki oblikujejo programerja strokovnjaka
iteljev mnenja, da sposobnosti kot polovica (56%)
sposobnosti oblikovanja in postopnega načrtovanja za tako visok odstotek dejstvo, da ima vsak
Sposobnosti oblikovanja in
postopnega načrtovanja
Sposobnosti problemskega
Sposobnosti oblikovanja in
postopnega načrtovanja
Sposobnosti problemskega
Karmen Kolar
drugi učitelj sposobnosti analiti(Ronaldsson, str. 367). Zanimivo bi bilo raziskatiučitelji za doseganje učenčevega
7 VIZUALIZACIJA
Pomembnost uporabe vizualizacije so opazili razli2001; Pears, 2010). Tudi Milne in Rowe (2005) razumevanju osnovnih konceptov programiranja. CodeWitzvizualizacijskih orodij pri pou Shu (1988, v Cooper, Dann indelovati obe polovici možganov, saj se in s tem deluje tudi umetniška polovica možganov. računalniški program rešuje problem. Vendar veliko uizvedbe programa in zato posldeluje. Najpogostejša metoda za ugotavljanje napak je sled programa, vendar lahko predstavlja še večjo zmešnjavo. Po 109), je največja težava progkonstrukte uporabiti in kako z njimi upravljati. Animacija izvedbe programa lahko pomaga učencem »postaviti te koščke skupaj Veliko programerjev začetnikov ni sposobnih vzdrževati mentalnih modelov osnovnih konceptov programiranja, kar lahko omejuje razvoj programerskih sposobnosti. To odkritje predlaga bolj konstruktiven pristop k pouAvtorji Ma idr. (2009, str. 166) predlagajo začetnikom oblikovati ustrezen mentalni model.
Ta učni model integrira strategijo kognitivnega konflikta in programa Kognitivni konflikt se uporablja, ko u
6 CodeWitz projekt – mednarodni projekt za boljše programerske sposobnosti (http://www.codewitz.net/)
kognitivni
konflikt
Novi pristopi pri pouč
28
itelj sposobnosti analitičnega, logičnega in strukturiranegaZanimivo bi bilo raziskati, kakšne didaktične pristope učevega globljega učenja.
Pomembnost uporabe vizualizacije so opazili različni avtorji (Ala-Mutka, 2004; BenMilne in Rowe (2005) menita, da je vizualizacija pomembna
razumevanju osnovnih konceptov programiranja. CodeWitz6 projekt predlaga uporabo vizualizacijskih orodij pri poučevanju.
Cooper, Dann in Pausch, 2000, str. 110) smatra, da morata delovati obe polovici možganov, saj se morajo pri procesu programiranja vklju
udi umetniška polovica možganov. Učenci se naučijounalniški program rešuje problem. Vendar veliko učencev ne zmore vizualizirati korak
izvedbe programa in zato posledično ne morejo ugotoviti, kaj je narobejša metoda za ugotavljanje napak je sled programa, vendar lahko
jo zmešnjavo. Po Solowayu (1986, v Cooper, Dann in Pausch, 2000ja težava programerjev začetnikov »sestavljanje kosov«, tj.
orabiti in kako z njimi upravljati. Animacija izvedbe programa lahko pomaga čke skupaj«.
četnikov ni sposobnih vzdrževati mentalnih modelov osnovnih konceptov programiranja, kar lahko omejuje razvoj programerskih sposobnosti. To odkritje predlaga bolj konstruktiven pristop k poučevanju programiranja, ki vključAvtorji Ma idr. (2009, str. 166) predlagajo model poučevanja, ki pomaga programerjem
etnikom oblikovati ustrezen mentalni model.
Slika 5: Učni model
ni model integrira strategijo kognitivnega konflikta in programa Kognitivni konflikt se uporablja, ko učenci napačno razumejo določen koncept. U
mednarodni projekt za boljše programerske sposobnosti (http://www.codewitz.net/)
program
vizualizacije Mentalni model
Novi pristopi pri poučevanju programiranja
strukturiranega razmišljanja ne pristope uporabljajo ti
Mutka, 2004; Ben-Ari, , da je vizualizacija pomembna pri
projekt predlaga uporabo
morata za programiranje morajo pri procesu programiranja vključiti tudi slike
enci se naučijo, zakaj in kako encev ne zmore vizualizirati korakov
kaj je narobe, da program ne jša metoda za ugotavljanje napak je sled programa, vendar lahko
Cooper, Dann in Pausch, 2000, str. , tj. ugotoviti, katere
orabiti in kako z njimi upravljati. Animacija izvedbe programa lahko pomaga
etnikov ni sposobnih vzdrževati mentalnih modelov osnovnih konceptov programiranja, kar lahko omejuje razvoj programerskih sposobnosti. To odkritje
evanju programiranja, ki vključuje vizualizacijo. , ki pomaga programerjem
ni model integrira strategijo kognitivnega konflikta in programa vizualizacije. čen koncept. Učitelj
mednarodni projekt za boljše programerske sposobnosti (http://www.codewitz.net/).
Karmen Kolar
izzove njihovo razumevanje (z nasprotujorazumevanja. Učenci morajo imeti ustrezno podporo za pravilno konstrukcijomodela (Ma, 2009, str. 167). Benpredlaganem modelu (prav tam
1. Predhodna faza: raziščneustrezni.
2. Faza kognitivnega konflikt
3. Faza konstrukcije modela
vizualizacije. 4. Faza aplikacije: u
novokonstruiranega modela.
7.1 Obstoječe raziskave
Raziskovalna skupina Naps, Rößling, Almstrum, Dann, Fleischer, Hundhausen, Korhonen,
Malmi, McNally, Rodger, Velázquez
računalništvu s triletno anketo (2000anketi, in sicer t. i. pre-conference
card anketo (junij 2000) med u
Nekaj ugotovitev ankete:
� Vizualizacija pripomore k boljšemu u
Graf 10: Moč strinjanja (anketa index card)
Anketa je ugotavljala moč strinjanja. odgovorilo 67 anketirancev, pri izrazilo nestrinjanja, temveč so bili nevtralanketo, ki je pokazala 100računalništva ni nihče oporekalkoncepte.
43%
49%
8%
Novi pristopi pri pouč
29
izzove njihovo razumevanje (z nasprotujočimi podatki) in povzročenci morajo imeti ustrezno podporo za pravilno konstrukcijo
(Ma, 2009, str. 167). Ben-Ari (2001, prav tam) za to predlaga vizualizacijo. prav tam):
: raziščemo modele, ki jih imajo učenci, in identificiramo, kateri so
Faza kognitivnega konflikta: ustvarimo kognitivni konflikt. Faza konstrukcije modela: učenci konstruirajo ustrezen model s pomo
: učenci rešujejo programerski problem z uporabo novokonstruiranega modela.
e
Naps, Rößling, Almstrum, Dann, Fleischer, Hundhausen, Korhonen,
Velázquez-Iturbide (2002) je preučevala uporabo vizualizacije v unalništvu s triletno anketo (2000–2002) in obširno študijo literature. Izvedli
conference online anketo (april–junij 2000) in unij 2000) med učenci in učitelji računalništva.
Vizualizacija pripomore k boljšemu učenju računalniških konceptov
strinjanja (anketa index card) Graf 11: Moč strinjanja (anketa pre
č strinjanja. Graf 8 velja za index card anketo, na katero je odgovorilo 67 anketirancev, pri čemer se jih kar 92 % strinja s trditvijo. Od tegaizrazilo nestrinjanja, temveč so bili nevtralni oz. brez mnenja. Graf 9 velja za anketo, ki je pokazala 100 % strinjanje med 29 anketiranci. Od vseh 96 u
e oporekal, da vizualizacija pomaga učencem razumeti ra
Močno
strinjanje
Strinjanje
Nevtralnost
59%
41%
Novi pristopi pri poučevanju programiranja
imi podatki) in povzroči rekonstrukcijo enci morajo imeti ustrezno podporo za pravilno konstrukcijo mentalnega
) za to predlaga vizualizacijo. Faze v
enci, in identificiramo, kateri so
enci konstruirajo ustrezen model s pomočjo
enci rešujejo programerski problem z uporabo
Naps, Rößling, Almstrum, Dann, Fleischer, Hundhausen, Korhonen,
evala uporabo vizualizacije v 2002) in obširno študijo literature. Izvedli so dve
t. i. informal index
unalniških konceptov
strinjanja (anketa pre-conference)
anketo, na katero je . Od tega jih 8 % ni
velja za pre-conference 29 anketiranci. Od vseh 96 učiteljev
encem razumeti računalniške
Močno
strinjanje
Strinjanje
Karmen Kolar
Čeprav ne obstajajo raziskave, ki bi podprle ukoristnost njene uporabe (McCracken idr., 2002, str. 140).
� Pogostost uporabe vizualizacije algoritmov pri pou
Graf 12: Pogostost uporabe vizualizacije (anketa index
Graf 10 ponazarja anketo index card
računalništva, ki sodelujejo v ITiCSEpogosto, čeprav verjamejo v njeno koristnost, so ovire vizualizacijske tehnologije. Slabosti, katere je pokazala anketa pre
kot je inštalacija programov za delovanje, integracija v proces učne ure. ne bo tako pedagoško učinkovita. vredno uporabiti. »Ne glede na to, kako dobro je vizualizacijska tesestavljena, ima majhno poučidr., 2002, str. 131).
� Uporaba (dinamične) vizualizacije
7 ITiCSE – SIGCSE konferenca o pou
28%
Novi pristopi pri pouč
30
eprav ne obstajajo raziskave, ki bi podprle učinkovitost vizualizacije, uč(McCracken idr., 2002, str. 140).
Pogostost uporabe vizualizacije algoritmov pri poučevanju
: Pogostost uporabe vizualizacije (anketa index-card)
index card, na katero je odgovorilo 64 anketirancev, uunalništva, ki sodelujejo v ITiCSE7. Razlogi, zakaj vizualizacije ne uporabljajo tako
eprav verjamejo v njeno koristnost, so ovire vizualizacijske tehnologije. Slabosti, pre-conference, je čas, ki ga porabijo pri izgradnji vizualizacije,
kot je inštalacija programov za delovanje, čas, da se naučijo uporabljati programne ure. Z učenčevega vidika pa vizualizacijska tehnologija lahko da činkovita. Z učiteljskega vidika je z njo preveč dela
vredno uporabiti. »Ne glede na to, kako dobro je vizualizacijska tehnologija na, ima majhno poučno vrednost, če učencev ne zaposli v aktivno
ne) vizualizacije
konferenca o poučevanju računalništva, ki se izvaja od leta 1996 v razli
3%
24%
45%
Skoraj vsak teden
Vsak drugi teden
Enkrat do dvakrat v
ocenjevalnem obdobju
Nikoli
Novi pristopi pri poučevanju programiranja
inkovitost vizualizacije, učitelji verjamejo v
card)
na katero je odgovorilo 64 anketirancev, učiteljev zakaj vizualizacije ne uporabljajo tako
eprav verjamejo v njeno koristnost, so ovire vizualizacijske tehnologije. Slabosti, as, ki ga porabijo pri izgradnji vizualizacije,
ijo uporabljati program, ter evega vidika pa vizualizacijska tehnologija lahko da
preveč dela, da bi jo bilo hnologija načrtovana in
ne zaposli v aktivno učenje« (Naps
unalništva, ki se izvaja od leta 1996 v različnih državah.
Karmen Kolar
Graf 13: Uporaba vizualizacije (anketa pre
Graf 11 ponazarja anketo pre
računalništva. Največkrat (31podatkovne strukture modificirane s podanim algoritmom. primere uporabe vizualizacije:
� algoritmi za sortiranj� uporaba diagramov za prikaz algoritmov, � uporaba podatkovnih modelov, � algoritmi v obliki diagrama poteka, relacijskih shem ali diagrama entitetnih
relacij. � uporaba animacij v PowerPointu
Smiselno se je vprašati, koliko so uRaziskava Lahtinenove, Järvinen
ki nimajo težav pri učenju programiranja, niso potrebovali vizualizacije. Prav tako uporabljali vizualizacije tisti, ki so imeli veliko težav, saj predstavlja dodatno oviro pri imajo nekaj znanja o tem, kako programi delujejovizualizacije mora biti skrbno na
7.2 Uporaba vizualizacije algoritma
Za boljše sodelovanje učencev pri uporabi vizualizacdefinirajo taksonomijo učenčmenijo, da ima velik učinek na razvoj animacijskih orodij in uporabo v praksi. Taksonomija ima šest korakov zaposlitve (Naps idr.,
1. Ni ogleda, kjer se vizualizacija ne uporablja.2. Ogled, kjer se vizualizacija uporabi
21%
14%
Novi pristopi pri pouč
31
: Uporaba vizualizacije (anketa pre-conference)
pre-conference, v kateri je sodelovalo 29 anketirancev, ukrat (31 %) učenec sam konstruira vizualizacijo, da prikaže, kako so
podatkovne strukture modificirane s podanim algoritmom. Anketiranci so navedli tudi uporabe vizualizacije:
lgoritmi za sortiranje, predstavljeni s skodelicami kopic ter z Java appleti,uporaba diagramov za prikaz algoritmov,
podatkovnih modelov, algoritmi v obliki diagrama poteka, relacijskih shem ali diagrama entitetnih
uporaba animacij v PowerPointu in flash filmčkov.
Smiselno se je vprašati, koliko so učenci motivirani, da sami naredijo vizualizacijo. , Järvinena in Melakoski-Vistbackove (2007) je pokazala, da uenju programiranja, niso potrebovali vizualizacije. Prav tako
tisti, ki so imeli veliko težav, saj uporaba dodatnih orodij vlja dodatno oviro pri učenju. Vizualizacijski materiali so dobri za u
imajo nekaj znanja o tem, kako programi delujejo, in si želijo raziskati veskrbno načrtovana, da bo za učence učinkovita.
vizualizacije algoritma
čencev pri uporabi vizualizacije algoritma Naps idr.čenčeve zaposlitve z vizualizacijsko tehnologijo. Pears idr. (2007)
inek na razvoj animacijskih orodij in uporabo v praksi. Taksonomija ima šest korakov zaposlitve (Naps idr., 2002, str. 142–143):
, kjer se vizualizacija ne uporablja. kjer se vizualizacija uporabi (npr. animacija).
10%
31%
24%
14%
Učenec ne uporablja
vizualizacijo direktno
Učenec mora konstruirati
vizualizacijo
Učenec ima na voljo
vizualizacijska orodja za
konstrukcijo vizualizacije
Učitelj spodbudi učence da
ustvarijo vizualizacijo
Ostalo
Novi pristopi pri poučevanju programiranja
conference)
29 anketirancev, učiteljev enec sam konstruira vizualizacijo, da prikaže, kako so
Anketiranci so navedli tudi
i kopic ter z Java appleti,
algoritmi v obliki diagrama poteka, relacijskih shem ali diagrama entitetnih
enci motivirani, da sami naredijo vizualizacijo. je pokazala, da učenci,
enju programiranja, niso potrebovali vizualizacije. Prav tako niso uporaba dodatnih orodij
enju. Vizualizacijski materiali so dobri za učence, ki že in si želijo raziskati več. Uporaba
ije algoritma Naps idr. (2002) cijsko tehnologijo. Pears idr. (2007)
inek na razvoj animacijskih orodij in uporabo v praksi. Taksonomija
Učenec mora konstruirati
vizualizacijska orodja za
konstrukcijo vizualizacije
Učitelj spodbudi učence da
Karmen Kolar Novi pristopi pri poučevanju programiranja
32
3. Odziv zajema odgovarjanje na vprašanja, ki se tičejo vizualizacije. Primer, postavimo vprašanje: »Katera izvorna koda predstavlja to vizualizacijo?«
4. Spreminjanje. Učencu zastavimo nalogo, da spremeni obnašanje vizualizacije. Primer: učenec naj vnese različne podatke, ki spremenijo delovanje algoritma, ki se prikaže v animaciji.
5. Konstrukcija. Učenec sam naredi vizualizacijo algoritma. Primer: učenec sam naredi vizualizacijo algoritma, lahko uporablja program za urejanje animacije ali kakšen drug program. Lahko skonstruira algoritem na papir. V tej kategoriji je pomembna vizualizacija algoritma in ne kodiranje algoritma, še posebej pri ročni (na papir) vizualizaciji.
6. Predstavitev. Učenec predstavi lastno vizualizacijo razredu. Pomembno vlogo ima razprava in povratna informacija sošolcev in učitelja.
Sama vizualizacija ni tako pomembna kot pa naloge, ki se nanašajo na njo. Naloge proizvajajo znanje. Vloga vizualizacije je, da si učenci bolje predstavljajo, kaj koda v programu naredi. Učence je laže pridobiti za reševanje nalog skozi vizualizacijske naloge, kot so animacije. Veliko ljudi je oblikovalo orodja za vizualizacijo in/ali animacijo. Slabosti, ki so se pojavile, so, da so oblikovalci pozabili, kakšno vlogo ima orodje (prav tam, 2002, str. 141). Pri ugotavljanju učinkovitosti vizualizacije za definiranje učenčevega razumevanja Naps idr. (2002, str. 143–144) predlagajo Bloomovo8 taksonomijo znanja, ki strukturira globino učenčevega razumevanja in linearno napredovanje v šestih stopnjah:
1. Poznavanje: kaže se kot priklic brez razumevanja, kaj je v ozadju. 2. Razumevanje: učenec razume, kaj je v ozadju, in dojema smisel. 3. Uporaba: uporaba naučenega znanja tudi v novih situacijah. 4. Analiza: učenec je sposoben identificirati posamezne dele kompleksnega problema in
ga razčleniti. 5. Sinteza: učenec je iz naučenega sposoben posplošiti in sestaviti nove zaključke. 6. Vrednotenje – evalvacija: učenec je sposoben različne ideje in metode primerjati in
razlikovati med seboj. Računalniški algoritem v Bloomovi taksonomiji:
8 Bloomova taksonomija klasificira učne cilje v izobraževanju.
Karmen Kolar Novi pristopi pri poučevanju programiranja
33
Tabela 8: Bloomova taksonomija za ugotavljanje učinkovitosti vizualizacije
Stopnja v Bloomovi taksonomiji
Učenec
Poznavanje - Prepozna in definira specifične elemente algoritma.
Razumevanje - Razume vlogo algoritma. - Prepozna lastnosti algoritma. - Razume ključne koncepte v algoritmu. - Implementira algoritem v programskem jeziku. - Razume obnašanje algoritma v najboljšem in
najslabšem primeru. - Sposoben je slediti in ponoviti najboljšo in najslabšo
analizo primera v algoritmu.
Uporaba - Prilagodi prejšnje študije algoritma za določene aplikacije, okolja ali predstavitve podatka.
- Konstruira najboljši in najslabši primer analize osnovnega algoritma.
Analiza - Razume povezavo algoritma z drugimi algoritmi, ki rešujejo enak ali podoben problem.
- Razume invariacije v kodi algoritma. - Zagovarja oz. dokaže popravke algoritma. - Analizira kompleksen problem in ga razčleni na
manjše kose.
Sinteza - Oblikuje rešitve za kompleksen problem, kjer so potrebne različne podatkovne in tehnične strukture.
- Analizira učinkovitost kompleksnih kombiniranih struktur.
- Določi kriterij za primerjavo različnih rešitev.
Razumevanje - Argumentira, kako in zakaj bi določeni algoritmi bili modificirani ali kombinirani z drugimi.
- Razpravlja o prednostih in slabostih različnih algoritmov, ki rešujejo enak ali podoben problem.
- Naredi evalvacijo analize. Vir: Naps idr., 2002, str. 145–146.
7.3 Vizualizacijska orodja
Omenjena raziskava raziskovalne skupine Naps idr. (2002) je pokazala, da se učenci, če so v aktivnosti zaposleni z vizualizacijsko tehnologijo, učijo bolje.
Programerji morajo, ne glede na izkušnje, programirati v okolju, ki omogoča dostop do orodij, s katerimi lahko dokončajo nalogo z izvedbo programa. Integrirano razvojno okolje, t. i. IDE (angl. Integrated Development Enviroment), ima napredne lastnosti, kot sta samodejno obarvanje kode in integracija z dodatnimi orodji. Toda takšno programsko okolje
Karmen Kolar Novi pristopi pri poučevanju programiranja
34
ni primerno za programerje začetnike. Za slednje so razvita dodatna orodja, posebej oblikovana za učenje posebnih programskih konceptov, kot je npr. BlueJ
9 za učenje
programskega jezika Java (Pears idr., 2007, str. 210). Vizualizacijska orodja so bila oblikovana posebej za potrebe programerjev začetnikov. Orodji, ki grafično prikažeta strukturo in izvedbo kode, je na primer Jeliot
10 (za učenje programskega jezika Java) in Vince (za učenje programskega jezika C) (prav tam, str. 209). Prvi poskusi vizualizacije so bili tako grafični paketi oz. knjižnice, ki delujejo v programskem okolju. Slabost je bila ravno v tem, da so se nanašale na določen programski jezik, ki ga morajo učenci obvladati (Cooper idr., 2000, str. 110).
7.2.1 Microworlds
Pojem mikrosvet (angl. Microworld) je skovala skupina Media Lab na Tehnološkem inštitutu Massachusettsa oz. MIT. Predstavlja majhen svet, katerega lahko učenec raziskuje in o njem razmišlja, kot da je resničen (Microworlds, 2011). Ta majhen svet je vizualizacija resničnega sveta na računalniškem zaslonu. Razlikujejo se po programskem jeziku, metaforah in stopnji programske podpore, ki jo omogoča (Pears idr., 2007, str. 211). Logo
Logo je programski jezik za poučevanje, ustvarjen 1967. Je adaptacija programskega jezika Lisp (angl. List Processing Language) in je znan predvsem po želvji grafiki. Želvja grafika je glavna lastnost programskega jezika Logo, ki jo je dodal Seymour Papert (What is Logo?, 2011). Vsi ukazi temeljijo na premikanju želve, ki se riše po zaslonu. Pri tem so vidne transformacije pri spremembi stanja programa (Ala-Mutka, 2004, str. 4).
Slika 6: Želvji premiki
Logo učencem omogoča, da razvijejo koncepte v matematiki oz. geometriji, saj se želva pomika po polarnem koordinatnem sistemu. Logo ni namenjen samo za enostavno risanje geometrijskih oblik, lahko se uporabi tudi za kompleksne grafične objekte, probleme in algebro. Obstaja veliko Logo implementacij, ki so otrokom tudi grafično privlačnejše. Kurzor na zaslonu je dandanes nadomestila dejanska želva in tako omogočila uporabo barv (Logo Lessons, 2011).
9 http://www.bluej.org/index.html. 10 http://cs.joensuu.fi/jeliot/.
Karmen Kolar Novi pristopi pri poučevanju programiranja
35
Greenfoot Greenfoot je prostodostopno objektno orientirano programsko okolje za učenje programskega jezika Java. Vizualizacija in interakcija sta vgrajeni v okolje. Z razredi kot sta svet (angl. world) in igralec (angl. actor) lahko ustvarimo igrice, simulacije in druge grafične programe. Igralci so programirani v Java kodi, da delajo določeno stvar (npr. vombat poje list). Imamo lahko različne igralce oz. objekte: mravlje, vombate, želve, rake idr. s svojimi scenariji. Nad temi objekti izvajamo ukaze. Spodnja slika prikazuje scenarij z vombati, ki v svojem svetu jedo liste (About Greenfoot, 2011).
Slika 7: Greenfoot 'Wombat' scenarij
Greenfoot je primeren za starostno skupino 14+ let. Za mlajše od tega leta ni primeren zato, ker je sintaksa za njih preveč abstraktna. Greenfoot ima namreč objektni model Jave, kjer lahko programiramo večje računalniške probleme (Utting, Cooper, Kölling, Maloney in Resnick, 2010, str. 2). Alice
Alice je 3-D prosto dostopno programsko okolje, ki učence uči računalniškega programiranja kot uvod v objektno orientirano programiranje (Java, C++, C#). Omogoča enostavno ustvarjanje animacij, igric ali videoposnetkov. 3D-objekti (ljudje, živali, motorna vozila idr.) ustvarijo virtualni mikrosvet in učenci ustvarijo program, ki animira te objekte. Omogoča takojšnje razumevanje odnosa med programskimi izjavami in obnašanjem objekta v animaciji (What is Alice?, 2011). Cilj projekta Alice je bil oblikovati zanimivo 3-D okolje za programerje začetnike, saj lahko takoj vidijo, kako deluje njihov animiran program. Slabost je lahko ravno v tem, da so nekatere stvari lažje v 2-D kot pa v 3-D. Omogoča takojšnjo povratno informacijo in učenci lahko povežejo koščke programa z akcijami animacije. To vodi k delovanju različnih programskih konstruktov, kot so: akcije, funkcije, rekurzije, zanke, dogodki itd. Učenci
Karmen Kolar Novi pristopi pri poučevanju programiranja
36
lahko takoj vidijo, kaj je šlo narobe, in enostavno popravijo napake. Prednosti, ki jih ima Alice, sta, da se učenci dobro spoznajo s 3-D koordinatnim sistemom in da jim ni treba razmišljati o spremenljivkah, ki se v programu ne uporabljajo (Cooper idr., 2000, str. 111–116).
Slika 8: Alice
Scratch
Scratch je vizualni programski jezik, ki omogoča ustvarjanje animacij, interaktivnih zgodb in iger. Preko ustvarjanja se učenci spoznajo z osnovami programiranja. Deluje na principu »povleci in spusti« (angl. drag and drop) grafičnih ploščic, ki ustvarjajo program in nastavljajo akcije objektom, kot so ljudje, živali, vozila itd. (About Scratch, 2011).
Scratch je primeren za starostno skupino od 8. do 16. leta ter tudi za otroke, ki se že zgodaj želijo začeti učiti programiranja. Scratch je vizualno privlačen in omogoča kreativnost in aktivno učenje. Slabost, ki jo ustvarjalci Scratcha vidijo, je v tem, da ni razredov in tako ne poskuša učiti objektno orientiranega programiranja. Malloney in Resnick (2010, str. 2) menita: »Učenje programiranja je kot učenje pisanja.« Otroci bi se morali začeti učiti programiranja kot tudi pisanja, takoj ko pokažejo zanimanje za to (Utting idr., 2010).
Karmen Kolar Novi pristopi pri poučevanju programiranja
37
Slika 9: Scratch
7.2.1.1 Primerjava programskih okolij Greenfoot, Alice in Scratch
Razprava avtorjev programskih okolij Greenfoot, Alice in Scratch (povzeto po Utting idr.,
2010, str. 1–11)
Če si pogledamo vse tri sisteme, imajo vsi skupno lastnost, da zaposlijo uporabnika tako, da mu omogočajo pisanje programov, ki so povezani z njegovimi interesi (zgodbe, igre, simulacije itd.). Učenec je oblikovalec, avtor in ne pasivni opazovalec učiteljeve animacije. Lahko oblikuje nekaj svojega na podlagi tega, kar mu program ponuja. Vsi se osredotočajo na ročno reševanje problemov in vsi so primerni za uvod v programiranje. Spodbudijo lahko tudi učence, ki navadno niso zainteresirani za predmet poučevanja. Vsi omogočajo takojšnjo povratno informacijo, saj so rezultati vidni takoj. Možno je dobiti takojšen vpogled v delovanje objektov v programu. Izvedba programa se pokaže v poziciji, velikosti, rotaciji in drugih vidnih stanjih objekta. To je moč vizualizacije. V Alice in Scratch se izognemo napakam v sintaksi, kar ima lahko tudi slabo plat. Učencem ni treba razmišljati o morebitnih napakah, zaradi katerih program ne bi deloval. Greenfoot ima večjo vlogo učitelja, saj pripravi učenca, da naredi nekaj poučnega, česar sam običajno ne bi. Vodilo, ki ga predlagajo avtorji v razpravi: »Pusti jim, da najprej igrajo, omogoči jim, da dosežejo nekaj, omogoči kreativnost in nato zahtevaj razlago o tem, kaj se dogaja, medtem ko delajo na sistemu.«
Učenje programiranja preko animacij predstavlja aktivno učenje, ki je vizualno privlačno, in z ustvarjanjem le-teh se izraža lastna kreativnost. Takšen način pisanja programov se poveže z interesi učenca in ima moč abstrakcije, saj je učenec oblikovalec z nadzorom in ne pasivni opazovalec. Nudi takojšnjo ter razumljivo povratno informacijo. V animaciji je moč vizualizacije, saj so rezultati takoj vidni. V primeru, če animacija ne dela, se lahko takoj razbere, kje v kodi je napaka.
Karmen Kolar
7.2.1.2 Raziskava
Garlick in Cankaya (2010)
tradicionalnim pristopom. Želela sta ugotoviti, ali se uali jih motivira, da sami raziskujejo tematiko. Raziskavo sta izvedla v štirih razredihfakulteti pri programerskih predkonceptov programiranja potekalo preko tradicionalne psevdokode, medtem kdveh (82 učencev) uporabljali Alice. Obdobje primerjave je obsegalo prva dva tedna predmeta. V vseh razredih spogojni stavki, funkcije ter prehod na programski jezik Java)reševanje skupni kviz, ki je preverjal znanje o zankah in pogojnih stavkih. Nato so morali narediti program, ki se je nanašal na kviz. Po 2test za reševanje. Kvize in naloge, ki so bile vredne najveučitelj, ne da bi vedel, kateri skupini uda so se učenci v tradicionalnih skupinah odrezali bolje:
Graf
Vir:
Učenci so imeli težave pri prehodu z Alice na Javo, kar želijo ustvarjalci programa popraviti tako, da bi bil bolj osredotoanimacij. Nekateri učenci so videli Alice kot nepravo programiranje in so mnenjaAlice oblikovan bolj za mlajšo starostno skupino. Avtorjaverjetno le pričakujejo bolj konvencionalno metodo uin da zato nisi bili tako navdušeni nad Alice (Garlick in Cankaya, 2010, str
0
20
40
60
80
100
Novi pristopi pri pouč
38
(2010) sta ugotavljala, kakšen učinek ima Alice v primerjavi s tradicionalnim pristopom. Želela sta ugotoviti, ali se učenci več naučijo z uporabo Alice in
da sami raziskujejo tematiko. Raziskavo sta izvedla v štirih razredihfakulteti pri programerskih predmetih. V dveh razredih (72 učencev) je poukonceptov programiranja potekalo preko tradicionalne psevdokode, medtem k
uporabljali Alice. Obdobje primerjave je obsegalo prva dva tedna . V vseh razredih so bile obravnavane enake tematike (spremenljivke, zanke,
pogojni stavki, funkcije ter prehod na programski jezik Java). Vse skupine so dobile reševanje skupni kviz, ki je preverjal znanje o zankah in pogojnih stavkih. Nato so morali
se je nanašal na kviz. Po 2–3 tednih predmeta so učtest za reševanje. Kvize in naloge, ki so bile vredne največ 100 točk, je ocenil samo en
kateri skupini učenec pripada. Rezultati v spodnjem grafu prikazujejo, enci v tradicionalnih skupinah odrezali bolje:
Graf 14: Povprečni rezultati kviza in testa
Vir: Garlick in Cankaya, 2010, str. 167.
enci so imeli težave pri prehodu z Alice na Javo, kar želijo ustvarjalci programa bolj osredotočen na logično programiranje in manj na ustvarjanj
enci so videli Alice kot nepravo programiranje in so mnenjaAlice oblikovan bolj za mlajšo starostno skupino. Avtorja raziskave
jo bolj konvencionalno metodo učenja programiranja skozi psevdokodo in da zato nisi bili tako navdušeni nad Alice (Garlick in Cankaya, 2010, str
kviz
test
75,5670,3
81,6976,5
Alice Tradicionalno
Novi pristopi pri poučevanju programiranja
inek ima Alice v primerjavi s čijo z uporabo Alice in
da sami raziskujejo tematiko. Raziskavo sta izvedla v štirih razredih na encev) je poučevanje osnovnih
konceptov programiranja potekalo preko tradicionalne psevdokode, medtem ko so v drugih uporabljali Alice. Obdobje primerjave je obsegalo prva dva tedna
enake tematike (spremenljivke, zanke, Vse skupine so dobile v
reševanje skupni kviz, ki je preverjal znanje o zankah in pogojnih stavkih. Nato so morali 3 tednih predmeta so učenci dobili skupen
čk, je ocenil samo en enec pripada. Rezultati v spodnjem grafu prikazujejo,
enci so imeli težave pri prehodu z Alice na Javo, kar želijo ustvarjalci programa Alice no programiranje in manj na ustvarjanje
enci so videli Alice kot nepravo programiranje in so mnenja, da je menita, da učenci
enja programiranja skozi psevdokodo in da zato nisi bili tako navdušeni nad Alice (Garlick in Cankaya, 2010, str. 165–168).
Karmen Kolar Novi pristopi pri poučevanju programiranja
39
8 UČENJE Z RAČUNALNIŠKO IGRICO
Didaktične računalniške igrice predstavljajo didaktičen model, usmerjen v učenca, ki ima aktivno vlogo (Garris, Ahlers in Driskell, 2002, str. 441). Programiranje je samo po sebi dolgočasno. Naloge so večinoma sestavljene iz matematičnih problemov, športnih statistik, bančnih računov, delnic itd. Jenkins (2002, str. 56) navaja, da naj bo programiranje kreativno, v užitek in naj učence navdihne. Nekateri učenci potrebujejo motivacijo za programiranje in dinamično učno okolje, kot je lahko orodje, ki je narejeno samo za poučevanje oz. učenje. Učenci, ki niso motivirani, ne bodo uspeli (prav tam, str. 54–55). Razlog, zakaj uporabiti računalniške igrice pri učenju, leži v motivaciji. Učenci, ki so motivirani, se učijo učinkoviteje, saj motivacija vodi do večje pozornosti in večjega obstanka znanja. Elementi notranje motivacije so izziv, radovednost in domišljija, vse, kar lahko uporabimo pri oblikovanju računalniških iger (Garris idr., 2002, str. 443–445). Pomembni elementi, ki motivirajo učenca, so logika, spomin, vizualizacija in problemsko reševanje (Chang in Chou, 2008, str. 221).
Chang in Chou (2008, str. 221) poimenujeta učenje z računalniško igrico Game-based
digital learning t. i. GBL. Računalniške igrice omogočajo učiteljem poživiti učno okolje, ki je za učence hkrati tudi tekmovalno (prav tam). Lahtinenova idr. (2007, str. 260) navajajo, da so učenci v vizualizacijskem sistemu najbolj zaposleni preko interakcije. Učenci se dandanes bolj odzivajo na interaktivno učenje.
Cilj je narediti računalniško igro, ki je posvečena učenju. Največja slabost je, da lahko ustvarimo igrico, ki ni niti didaktična niti ne zaposli učencev. Lahko je dolgočasna ali pa ne vključuje izobraževalnih elementov. Didaktična računalniška igrica povezuje dva med sabo izključujoča se pojma: igranje in učenje. Igranje igre je prostovoljno, neproduktivno in se ločuje od resničnega življenja. Učenje pa je tipično neprostovoljno (Garris idr., 2002, str. 441–442, 459). Pomembno je, da združimo izobraževalno vsebino z določeno lastnostjo računalniške igrice, ki zaposli učence, in s tem doseže izobraževalne cilje. Po Garrisovi, Ahlersu in Driskellu (2002, str. 445), mora model didaktičnih računalniških iger vključevati:
� izobraževalno vlogo in karakteristike računalniške igre (domišljija, pravila, izziv, skrivnost, čutni dražljaj, nadzor);
� cikel igre (z uporabniško presojo, obnašanjem in povratno informacijo dosežemo zaposlitev uporabnika);
� tipe znanja, ki jih lahko dosežemo.
Karmen Kolar
Slika
8.1 Računalniška igrica
Chan in Chou (2008) sta oblikovala didaktiv programskem jeziku C na osnovi že obstojeoblikovala v izobraževalno orodje, ki poverazmišljanja in programiranja. Pri oblikovanju sta upoštevalaprogramskega jezika le majhni deli programiranja in dadane probleme.
Slika 11 je okno izobraževalnega komponentami (Chang in Chou, 2008, str. 223
Novi pristopi pri pouč
40
Slika 10: Model didaktične računalniške igre
Vir: Garris idr., 2002, str. 445.
unalniška igrica BomberMan
Chan in Chou (2008) sta oblikovala didaktično računalniško igrico za učv programskem jeziku C na osnovi že obstoječe računalniške igrice Bomberman. Igrico sta oblikovala v izobraževalno orodje, ki povečuje spretnosti problemskega reševanja, logirazmišljanja in programiranja. Pri oblikovanju sta upoštevala, da so sintaksa in konstrukti
le majhni deli programiranja in da je pomembno oblikovati rešitve
Slika 11: Okno igrice BomberMan
evalnega orodja BomberMan. Na levi strani okna so opcije s šestimi komponentami (Chang in Chou, 2008, str. 223–229):
Novi pristopi pri poučevanju programiranja
unalniško igrico za učenje programiranja unalniške igrice Bomberman. Igrico sta
uje spretnosti problemskega reševanja, logičnega , da so sintaksa in konstrukti
oblikovati rešitve za
strani okna so opcije s šestimi
Karmen Kolar Novi pristopi pri poučevanju programiranja
41
1. »Road map«: načrt poučevanja določenih poglavij iz učbenika. Vsak grad predstavlja učni material poglavja, primere za raziskovanje, naloge za vajo in teste. Učenec lahko napreduje na naslednjo stopnjo igre oz. učnega poglavja, ko uspešno konča na prejšnji stopnji.
2. »Presentation«: predstavitev učnih materijalov preko diaprojekcij. 3. »Example«: primeri demonstracij igre BomberMan, kjer se lahko raziskujejo
osnovne programerske paradigme. Učenci berejo kodo, ki je predstavljena v igri kot majhen del, ki nadzoruje premike škrata BomberMana.
4. »Exercise«: naloge v strukturiranem laboratorijskem delu, da učenci vadijo osnovne programerske paradigme, medtem ko igrajo igro. Učenci pišejo kodo in tako sami upravljajo s škratom.
5. »Test«: preverjanje učnih rezultatov s problemskim reševanjem. Učenci testirajo ideje in koncepte na podlagi prejšnjega znanja in izkušenj komponent 1–4. Merjen je čas reševanja. Učenci so postavljeni v novo situacijo, kjer rešujejo različne probleme, kot npr. škrat BomberMan se lahko premika le do spodnjega desnega kota. Na poti lahko poje nešteto sadežev, vendar se ne sme dotakniti bomb.
6. »Progress Evaluation«: poročilo o učenčevem dosežku, ki določa, kakšni so bili učinki testov. Rezultati se lahko primerjajo z drugimi člani skupine.
Avtorja sta primerjala orodje s programskim okoljem Scratch ter s tradicionalnimi razvojnimi programskimi okolji (IDE), kot so Turbo C, Dev C++, Visual C++ in C++ Builder. Razvojna programska okolja so pokazala enake rezultate, zato naj bodo združena v skupino, imenovano IDE C/C+ (tabela 9).
Tabela 9: Primerjava
BomberMan Scratch IDE C/C++ Interaktivnost Visoka Visoka Nizka Zabava, užitek Visoka Visoka Nizka Enostaven za uporabo Visoka Visoka Nizka
Uporaba formalnega programskega jezika
���� ���� ����
Kombiniranje z učnimi materiali
���� ���� ����
Učenje »korak za korakom«
���� ���� ����
Analiza ���� ���� ����
Zgodba ���� ���� ���� Vir: Chang in Chou, 2008, str. 230.
Pri vizualnem programskem okolju Scratch smo predvsem pogrešali integrirane učne materiale. Poleg tega mora učitelj sam oblikovati postopno učenje. Učenec sam oblikuje
Karmen Kolar Novi pristopi pri poučevanju programiranja
42
zgodbo, ki jo želi, pri igrici BomberMan pa je zgodba že vnaprej določena, tako da BomberMan ne omogoča tolikšne kreativnosti kot Scratch.
Razvojna programska okolja (IDE) so namenjena za profesionalno uporabo in zato nimajo pedagoških karakteristik (Chang in Chou, 2008, str. 229). S tega vidika je zato za nas zanimiva le primerjava med programoma Scratch in BomberMan.
Veliko je že raziskav o tem, kako poučevati programiranje s pomočjo vizualnih orodij, ki zaposlijo učenca v obliki računalniških igric. Manj je dokazov o tem, ali imajo ti načini učinek na učenje. Učenci uživajo v igranju, učne ure jim bodo zanimive, vendar to še ne pomeni, da so se kaj naučili (Jenkins, 2002, str. 53).
9 PREDLOGI ZA IZBOLJŠANJE POUČEVANJA
Nekaj karakteristik, ki jih mora imeti okolje za učenje programiranja (Gomes in Mendes, 2007, str. 3–4; Jenkins, 2002, str. 54):
� pri izbiri aktivnosti se morajo upoštevati učenčevi učni stili, � uporaba različnih pristopov poučevanja, � uporaba programerskih ugank
11, s pomočjo katerih učenci utrdijo sposobnosti logičnega in problemskega reševanja,
� vključitev didaktičnih iger, ki lahko izboljšajo sposobnosti problemskega reševanja skozi atraktivne in stimulativne aktivnosti.
Projekt, imenovan CodeWitz, oblikuje rešitve, ki bi bile v korist za poučevanje in učenje programiranja. Projekt stremi k izboljšanju učenja osnovnih konceptov programiranja in struktur programskih jezikov, kot so spremenljivke, zanke in pogojni stavki (Lahtinen idr., 2005, str. 14). Ala-Mutka (2004, str. 8–9) predlaga:
� učitelj naj učne pristope izbere skrbno (z upoštevanjem morebitnih napak, ki jih delajo programerji začetniki),
� uporaba pristopov, kot je problemsko reševanje, � skrbna izbira dinamičnega vizualnega učnega gradiva.
Tudi Kölling in Barnes (2008, str. 20) trdita, da naj bo pristop poučevanja voden problemsko. Najprej se naj predstavi praktičen programerski problem in nato pregledajo možne rešitve. Učno uro mora voditi problem v nalogi in ne programski jezik. Parsons in Hadenova (2006, str. 1) pa menita, da je poudarek na sintaksi in mehaničnem učenju, ker programov ne moremo pisati brez znanja sintaktičnih pravil programskega jezika. Trdita, da je učenje programiranja na nek način enako učenju novega jezika. V obeh primerih se mora obvladati sintaksa. Tradicionalen pristop, kjer programski jezik vodi kurikulum, je po mnenju več avtorjev (Ala-Mutka, 2004; Kölling in Barnes, 2008; Robins idr., 2003; Thomsen, 2008), neustrezen.
11 Najbolj uporabljene spletne strani s programerskimi ugankami (po Six Revision): http://sixrevisions.com/resources/10-puzzle-websites-to-sharpen-your-programming-skills/.
Karmen Kolar Novi pristopi pri poučevanju programiranja
43
Raziskovalna skupina McCracken idr. (2001, str. 126) je iz raziskave zaključila, da bi za uspešno učenje programerskih učnih objektov učenci morali slediti petim korakom:
Slika 12: Okvir petih korakov
Učenje programiranja bi moralo zajemati učenje pisanja programa kot tudi zmožnost branja programa. Učenci bi morali znati slediti programski kodi, da si lahko zgradijo mentalni model programa in s tem predvidijo vedenje programa. To bi se moralo razviti že pri stopnji razumevanja programiranja, na primer »najdi in odstrani napake v programu« (Ala-Mutka, 2004, str. 5). Učence je treba naučiti razvoja programov ter prikazati, kakšen je razvojni proces (prav tam, str. 7):
� pri programiranju je potrebnih veliko majhnih korakov, � rezultat vsakega koraka mora biti testiran, � predhodne odločitve je morda treba razveljaviti in kodo preoblikovati, � tudi programerji strokovnjaki delajo napake, � napake prevajalnika so lahko zavajajoče ali napačne, � obstaja sistematična nelinearna pot razvijanja rešitev.
Raziskava Lahtinenove idr. (2005) je pokazala, da so učencem primeri programov najbolj v pomoč pri učenju programiranja. Učencem moramo pokazati primere dobrega programiranja, tj. dobre kode, in jim omogočiti širok dostop do teh virov. Z uporabo vizualizacijskih orodij naj učenci raziskujejo obnašanje programa. V reševanje jim moramo dati naloge, kjer lahko raziskujejo kodo. Vadenje ima veliko vlogo, tako da je treba učence zaposliti z dodatnimi nalogami (Pears, 2010, str. 2). Kölling in Barnes (2008, str. 7) prav tako označujeta pomembnost branja kode. Pristop, ki ga predlagata, obsega:
1. branje kode, 2. modificiranje kode, 3. učenci naj sami nekaj ustvarijo.
Tegauejeva (2009) je ugotavljala, kakšen pristop imajo učenci do programiranja. Na podlagi razgovorov s štirimi naključno izbranimi učenci je ugotovila, da je ravnovesje med odnosom do programiranja, samozavestjo in odločnostjo ključ do uspešnega učenja programiranja. Samozavest je pomemben dejavnik za uspešne učne rezultate, vendar ne napoveduje uspeha.
Iz opisa oblikuj problem
Ustvari pod-probleme
Pod-problemom določi rešitve
Rešitve sestavi v delujoč program
Testiraj
Karmen Kolar
Odločnost za dosego cilja, za katerega je uuspehu na kateri koli stopnji odnosa. Predlagaučnimi stili oblikovali taksonomijo kot pedagoško orodje za poulahko povečamo samozavest in motivacijov paru. Za učence ima kar nekaj pedagoških koristi, kot je aktivno uprogrami (Tegaue, 2009, str. 177
Novi pristopi pri pouč
44
nost za dosego cilja, za katerega je učenec motiviran, igra pomembno vlogo koli stopnji odnosa. Predlaga, da bi samozavest in odlo
aksonomijo kot pedagoško orodje za poučevanje. Pristop, s katerim amo samozavest in motivacijo, je sodelovalno učenje, natančence ima kar nekaj pedagoških koristi, kot je aktivno učenje in bolj
(Tegaue, 2009, str. 177–178).
Slika 13: Pot do uspešnega učenja
odločnost
odnos
samozavest
Novi pristopi pri poučevanju programiranja
enec motiviran, igra pomembno vlogo pri odločnost skupaj z
evanje. Pristop, s katerim enje, natančneje programiranje
čenje in bolj kakovostni
Karmen Kolar Novi pristopi pri poučevanju programiranja
45
10 SKLEP
Raziskovalni problem je bil ugotoviti, katere so rešitve za izboljšanje razumevanja programiranja in pritegnitev tematike. Avtorji, ki obravnavajo to tematiko, se strinjajo v tem, da:
� predmeti, kot je uvod v programiranje, ne smejo temeljiti na poučevanju določenega programskega jezika, ampak na problemskemu reševanju;
� namen teh predmetov je pridobivanje spretnosti problemskega reševanja, ki je osnova za usvojitev veščine programiranja;
� poučevanje naj bo konstruktivistično, pri čemer je pomemben dejavnik motivacije in refleksije na učenje. Učne ure morajo biti skrbno načrtovane, oblikovane za različne učne stile in morajo odkrivati neustrezne mentalne modele;
� učitelj mora poznati karakteristike programerjev začetnikov in jih znati prepoznati. Učencem mora nuditi različne učne materiale, kot so primeri dobrih programov ter vizualizacija programerskih konceptov.
Programiranje morajo poučevati učitelji, ki znajo poučevati programirati, in ne učitelji, ki znajo le programirati.
Razlike v obravnavani literaturi se kažejo predvsem pri izbiri programskega jezika. Kateri jezik je najbolj primeren za učenje, objektno orientirani ali proceduralni? Avtorji se strinjajo, da izbira programskega jezika ne sme temeljiti na tem, kar se uporablja v industriji. Obstajajo vizualizacijska orodja, ki so bila oblikovana prav za učenje programiranja. Za uvod v programiranje predlagamo, da bi učence lahko motivirali z izobraževalnimi vizualnimi orodji, kot je Scratch (izbira je odvisna od skupine učencev), šele nato bi lahko napredovali na programski jezik. Študija literature je pokazala, da imajo vizualizacijska orodja lastnosti, ki izboljšajo učenje programiranja, in sicer: spodbudijo kognitivni konflikt, vsebujejo vizualizacijo, učenec je avtor, ki rešuje določen problem, in v osnovi ne poučujejo določenega programskega jezika. Kljub temu da veliko učiteljev verjame v njihove pozitivne učinke, raziskava o Alice (Garlick in Cankaya, 2010) kaže ravno nasprotno. Toda rezultatov te raziskave ne moremo posplošiti na vsa vizualizacijska orodja.
Učenje programiranja z igranjem računalniških igric bi lahko bila rešitev za uspešno učenje, saj vsebujejo vse potrebne karakteristike za uspešno učenje, kot je: zaposlitev, izziv, problemsko reševanje, motivacija, pridobivanje samozavesti, odločnosti, povratna informacija, popravljanje napak. Vendar zagotovo ne moremo zatrditi, da so učinkovite. To področje še ni dovolj raziskano, ker je računalniških igric za učenje programiranja zelo malo. Ideja predstavlja premik v izobraževalnem polju, saj pritegne učenčevo zanimanje, ga zaposli v aktivno vlogo in hkrati dosega izobraževalne cilje. Verjamemo, da bodo v bodoče oblikovane nove didaktične igrice za učenje programiranja, ki bodo izhodišče za nadaljnje raziskave.
Karmen Kolar Novi pristopi pri poučevanju programiranja
46
11 LITERATURA
Ala-Mutka, K. (2004). Problems in Learning and Teaching Programming – a literature
study for Developing Visualizations in the Codewitz-Minerva project. Pridobljeno 12. 9. 2011 s spletne strani http://www.cs.tut.fi/~edge/.
Barg, M., Fekete, A., Greening, T., Hollands, O., Kay, J., Kingston, J. H., Crawford, K.
(2000). Problem-Based Learning for Foundation Computer Science Courses. Computer
Science Education, 10 (2), 109–128. Bennedsen, J., Caspersen, M. (2008). Exposing the Programming process. V J. Bennedsen,
M. E. Caspersen, M. Kölling (Ur.), Reflections on the Teaching of Programming.
Methods and Implementations (str. 6–16). Berlin: Springer. Booth, S. B. Sc. (1992). Learning to program, a phenomenographic perspective. Göteborg:
Studies in Educational Sciences 89. Boyle, T. (2004). Technology and the reflective practitioner. V A. Irons, S. Alexander (Ur.),
Effective Learning and Teaching in Computing (str. 184–185). New York: RoutledgeFalmer Taylor & Francis Group.
Chang, W. C., Chou, Y. M. (2008) Introductory C Programming Language with Game-
Based Digital Learning. ICWL '08 Proceedings of the 7th international conference on
Advances in Web Based Learning (str. 221–231). Heidelberg: Springer-Verlag Berlin. Cooper, S., Dann, W., Pausch, R. (2000). Alice: A 3-D Tool for Introductory Programming.
V CCSC '00 Proceedings of the fifth anual CCSC Northeastern Conference on The
journal of Computing in Small Colleges, 15 (5), 108–117. Deek, F. P., Kimmel, H., McHugh, J. A. (1998) Pedagogical changes in the delivery of the
first-course in computer science: Problem solving, then programming. Journal of
Engineering Education, 87 (3), 313–320. Frobisher, L. (1994). Problems, Invesigations and an Investigative Approach. V A. Orton,
G. Wain (Ur.), Issues in Teaching Mathematics (poglavje 10). New York: Cassell Education.
Garlick, R., Cankaya, E. C. (2010). Using Alice in CS1 – A Quantitative Experiment.
ITiCSE '10 Proceedings of the fifteenth annual conference on Innovation and Technology
in Computer Science Eduaction (str. 165–168). New York: ACM.
Karmen Kolar Novi pristopi pri poučevanju programiranja
47
Garris, M., Ahlers, R., Driskell, J. (2002). Games, Motivation, and Learning: A Research and Practice Model. Simulation & Gaming, 33 (4), 441–467.
Gomes, A., Mendes, A. J. (2007). An Environment to Improve Programming Education.
CompSysTech '07 Proceedings of the 2007 International Conference on Computer
Systems and Technologies, št. 88. New York: ACM. Good, J., Brna, P., Cox, R. (1997). Novices and Program Comprehension: Does Language
make a difference? V P. Langley, M.G. Shafto (Ur.), Proceedings of 19th Annual
Conference of the Cognitive Science Society (str. 936). New Jersey: Stanford University. Jenkins, T. (2002). On the Difficulty of Learning to Program. Pridobljeno 28. 10. 2011 s
spletne strani http://www.ics.heacademy.ac.uk/Events/conf2002/menu.html. Kölling, M. (2008). Using BlueJ to introduce Programming. V J. Bennedsen, M .E.
Caspersen, M. Kölling (Ur.), Reflections on the Teaching of Programming. Methods and
Implementations (str. 98–115). Berlin: Springer. Kölling, M., Barnes, D. (2008). Apprentice – Based Learning Via Integrated Lectures and
Assignments. V J. Bennedsen, M. E. Caspersen, M. Kölling (Ur.), Reflections on the
Teaching of Programming. Methods and Implementations (str. 17–29). Berlin: Springer. Kraiger, K., Ford, J. K., Salas, E. (1993). Application of Cognitive, Skill-Based, and
Affectiove Theories of Learning Outcomes to New Methods of Training Evaluations. Jurnal of Applied Psychology, 78 (2), 311–328.
Kramer, J. (2007). Is Abstraction Key to Computing? Communication of the ACM, 50 (4),
36–42. Lahtinen, E., Ala-Mutka, K., Järvinen, H.-M. (2005). A Study of the Difficulties of Novice
Programmers. ITiCSE '05 Proceedings of the 10th
annual SIGCSE conference on
Innovation and technology in Computer Science Education (str. 14–18). New York: ACM.
Lahtinen, E., Järvinen, H.M., Melakoski-Vistbacka, S. (2007). Targeting Program
Visualizations. ITiCSE '07 Proceedings of the 12th annual SIGCSE conference on
Innovation and Technology in Computer Science Education (str. 256–260). New York: ACM.
Linn, M. C., Dalbey, J. (1989). Cognitive consequences of programming instructions. V E.
Soloway, J. C Spohrer (Ur.), Studying the novice programmer (str. 57–81). Hillsdale, NJ: Lawrence Erlbaum.
Lokar, M. (2001). Programski jezik Pascal. Presek, 29 (1), 24–27.
Karmen Kolar Novi pristopi pri poučevanju programiranja
48
Ma, L., Ferguson, J., Roper, M., Ross, I., Wood, M. (2009). Improving the Mental Models
Held by Novice Programmers Using Cognitive Conflict and Jeliot Visualisations. ITiCSE
'09 Proceedings of the 14th annual ACM SIGCSE conference on Innovation and
Technology in Computer Science Education (str. 166–170). New York: ACM. Ma, L., Ferguson, J., Roper, M., Wood, M. (2007). Investigating the Viability of Mental
Models Held by novice Programmers. SIGCSE '07 Proceedings of the 38th SIGCSE
technical Symposium on Computer Science Education (str. 499–503). New York: ACM. McCracken, M., Almstrum, V., Diaz, D., Guzdial, M., Hagan, D., Kolikant, Y. B. D., Laxer,
C., Thomas, L., Utting, I., Wilusz, T. (2001). A multi-national, multi-instutional study of assessment of programming skills of first-year CS students. ITiCSE-WGR '01 Working
Group Reports from ITiCSE on Innovation and Technology in Computer Science
Education (str. 125–140). New York: ACM.
Milne, I., Rowe, G. (2002). Difficulties in Learning and Teaching Programming – Views of Students and Tutors. Education and Information Technologies, 7 (1), 55–66.
Naps, T. L., Rößling, G., Almstrum, V., Dann, W., Fleischer, R., Hundhausen, C.,
Korhonen, A., Malmi, L., McNally, M., Rodger, S., Velázquez-Iturbide, J. Á. (2002). Exploring the Role of Vizualization and Engagement in Computer Science Education. Proceeding ITiCSE-WGR '02 Working Group Reports from ITiCSE on Innovation and
Technology in Computer Science Education (str. 131–152). New York: ACM. Nuutila, E., Törma, S., Kinnunen, P., Malmi, L. (2008). Learning Programming with the
PBL Method – Experiences on PBL Cases and tutoring. V J. Bennedsen, M. E. Caspersen, M. Kölling (Ur.), Reflections on the Teaching of Programming. Methods and
Implementations (str. 47–67). Berlin: Springer. Parsons, D., Haden, P. (2006). Parson's Programming Puzzles: A Fun and Effective
Learning Tool for First Programming Course. ACE '06 Proceedings of the 8th Australian
Conference on Computing Education – Volume 52 (str. 157–163). Australia: Australian Computer Society.
Pears, A.N. (2010). Enchancing Student Engagement in a Introductory Programming
Course. Proceedings of the 40th
ASEE/IEEE Frontiers in Education Conference (str. F1E-1-F1E-2). Piscataway, NJ: IEEE.
Pears, A., Seidman, S., Malmi, L., Mannila, L., Adams, E., Bennedsen, J., Devlin, M.,
Paterson, J. (2007). A Survey of Literature on the Teaching of Introductory Programming. ITiCSE-WGR '07 Working group reports on ITiCSE on Innovation and
Technology in Computer Science Education (str. 204–223). New York: ACM.
Karmen Kolar Novi pristopi pri poučevanju programiranja
49
Robins, A., Rountree, J., Rountree, N. (2003). Learning and Teaching Programming: A Review and Discussion. Computer Science Education, 13 (2), 137–172.
Rolandsson, L. (2009). Teachers′ perceptions about learning programming. Pridobljeno 19. 5. 2012 s spletne strani http://www.iteea.org/Conference/PATT/PATT22/Rolandsson.pdf.
Teague, D. (2009). A People-First Approach to Programming. ACE '09 Proceedings of the
Eleventh Australian Conference on Computing Education – Volume 95 (str. 171–180). Australia: Australian Computer Society.
Thomsen, B. (2008). Using On - LineTutorials in Introductory IT courses. V J. Bennedsen,
M.E. Caspersen, M. Kölling (Ur.), Reflections on the Teaching of Programming. Methods
and Implementations (str. 68). Berlin: Springer. Utting, I., Cooper, S., Kölling, M., Maloney, J. & Resnick, M. (2010). Alice, Greenfoot, and
Scratch - A Discussion. ACM Transactions on Computing Education, 10 (4), 1–11. Internetni viri:
� Logo Lessons (b. d.). Pridobljeno 10. 9. 2011 s spletne strani http://www.rationa l american.com/rp.org/archives/LOGOlessons.html.
� About Greenfoot (b. d.). Pridobljeno 10. 9. 2011 s spletne strani http://www. green foot.org/overview.
� About Scratch (b. d.). Pridobljeno 13. 10. 2011 s spletne strani http://info. scratch. mit.edu/About_Scratch.
� What is Alice? (b. d.). Pridobljeno 13. 10. 2011 s spletne strani http://www. alice. org/index.php?page=what_is_alice/what_is_alice.
� Microworlds (b. d.). Pridobljeno 25. 11. 2011 s spletne strani http://www.umcs. maine. edu/~larry/microworlds/microworld.html.
� What is Logo? (b. d.). Pridobljeno 10. 9. 2011 s spletne strani http://el.media.mit. edu/ logo-foundation/logo/index.html.
Slikovni viri: � Scratch. Pridobljeno 2. 11. 2011 s spletne strani http://onedublin.files. wordpress.
Com /2010/01/scratch-computer-programming-example.jpg. � Alice. Pridobljeno 2. 11. 2011 s spletne strani http://jesstern.com/wp-content/
uploads/ 2011/08/alice-2-screenshot.jpeg. � BomberMan. Chang W.C., Chou Y.M. (2008) Introductory C Programming
Language with Game-Based Digital Learning. � Greenfoot. Pridobljeno 2. 11. 2011 s spletne strani http://www. greenfoot. org/
overview. � Logo. Pridobljeno 4. 11. 2011 s spletne strani http://www.thesmartbean.com/wp-
content/uploads/2010/08/logo_mit.png.