10.07.2015 Views

Materjali fail

Materjali fail

Materjali fail

SHOW MORE
SHOW LESS
  • No tags were found...

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Sissejuhatus"Õpetamisega ametis olevates inimestes kipub sõna ‘haridus’ esile kutsuma sõna‘õpetamine,’ iseäranis veel klassiruumis õpetamine. Seetõttu kipub haridusalane uurimustöökeskenduma klassiruumis õpetamise parandamisele. Kui [...] eduka õppimise mudelinavaadelda, kuidas laps õpib rääkima (protsess, mis leiab aset ilma tahtliku ja organiseerimataõpetuseta), on hariduse eesmärk hoopis teistsugune," kirjutab Seymour Papert oma raamatusMindstorms [Papert].Programmeerimine on saavutamas üha tähtsamat positsiooni meie kiiresti arenevas maailmasning muutunud pea asendamatuks oskuseks paljude erialaspetsialistide hulgas.Programmeerimise algõpetus tõstatab mitmeid huvitavaid küsimusi hariduse, õpetamise,õppimise ja motivatsiooni kohta ning on seega põnev uurimisvaldkond.Käesolev magistriõppe lõputöö vaatleb programmeerimise algõpet Tartu Ülikoolimatemaatika-informaatikateaduskonna näitel, võttes arvesse viimaste aastate tulemusi jatudengitelt kogutud tagasisidet kursusele ning analüüsib mõningaid probleemeprogrammeerima õppimisel.Tudengitelt tagasiside kogumiseks on kasutatud lõputöö tarbeks loodud küsimustikku.Õpetamise tulemusena vaadatakse viimase viie aasta hindeid õppeaines Programmeeriminening 2010/2011 õpeaasta hinnete kujunemist semestri jooksul. Töös on ära toodud tulemustevaatlemiseks püstitatud hüpoteesid ja tulemuste analüüs. Leitud probleemidele püütakse töösleida põhjuseid või selgitusi. Lisaks vaadatakse programmeerimisele läbi erinevatepedagoogika ja psühholoogia teooriate, tuginedes sellistele klassikutele nagu Bloom,Anderson, Dweck, Papert ja teised.Selle töö eesmärgid on:● selgitada programmeerimiskeele Python sobivust algõpetuseks;● analüüsida programmeerimise õpetamise tulemusi ja õppijatelt kogutud tagasisidet;● uurida programmeerimise õppimisel tekkivaid probleeme ja raskusi ning nendepõhjuseid;● ühendada terviklikku pilti tulemused, probleemid ja põhjused, kasutades teoreetilisikonstrukte ja teemakohast kirjandust;● luua eelnevat arvesse võttes raamistik ja esialgsed ülesanded programmeerimisealgõpetust toetavate robootika praktikumide väljatöötamiseks.2


Töö struktuur:Esimeses peatükis käsitletakse programmeerimise algõpetuseks kasutatavaprogrammeerimiskeele valikut, selgitades Pythoni sobivust esimeseksprogrammeerimiskeeleks. Tuuakse välja mõningaid algõpetuse seisukohalt olulisi Pythoniomadusi ja selle võimalikke puudujääke.Teises peatükis tulevad arutlusele programmeerimise õpetamise ja õppimisega kaasnevadprobleemid ja raskused.Kolmandas ja ühtlasi viimases peatükis pakutakse välja kohvripraktikumide idee toetamaksprogrammeerimise algõpetust ning esialgne komplekt praktikumiülesandeid.Tööl on 3 lisa: tarkvara paigaldamise juhend, küsimustik ja andmestik vastustega.Proklamatsioon: lõputöö jooksul kasutatakse vaheldumisi sõnu tudeng, õpilane ja õppijaeelkõige teksti ladusamaks muutmiseks ja liigsete sõnakorduste vältimiseks. Sisuliselt onkõikjal mõeldud siiski ühte hüpoteetilist inimgruppi – nendeks võivad olla mingi ülikoolitudengid, üldhariduskooli õpilased või näiteks täienduskoolituses olevad suvalisesvanusegrupis õppivad inimesed. Erandiks on ainult lõigud, kus räägitakse konkreetsetestandmetest, sest need on kogutud inimestelt, kes vähemalt andmete tekkimise hetkel olid TartuÜlikoolis tudengi staatuses.3


1 Python esimese programmeerimiskeelenaÕppimine on alati püüdlemine muutuse poole. Samal ajal on õppimine mõnes mõttes omavõimetuse tunnistamine ja võib kaasa tuua oma võimekuse piiride tunnetamise. Niisugusedtunnetused on kindlasti tugevalt seotud emotsioonidega. Esimesel kokkupuutel uue, allestundmatu tegevusega, on võime tekitada avastusrõõmu ja õppimisentusiasmi, aga samuti kafrustratsiooni või pettumust. Esimene või väga emotsionaalne kogemus võib sageli osutudamääravaks edasiste sammude tegemisel. Esimesel programmeerimiskeelel on seega õppijajaoks oluline tähendus.Nii nagu esimene klassijuhataja või esimene armastus kujundab hoiakuid ja käitumist koolivõi romantika suhtes, saab esimene programmeerimiskogemus mõjutada seda tegevustarmastama või pigem vältima.Esimene peatükk tutvustab programmeerimiskeele Python põhilisi omadusi ning arutleb,milline peaks olema programmeerimise algõpetuseks kasutatav keel ning kas ja mille pooleston Python selleks kõige sobilikum.1.1 Pythoni sobivusest esimeseks programmeerimiskeeleksJärgmistes alapunktides vaatleme ja selgitame põhilisi omadusi, mis teevad Pythonist heaprogrammeerimiskeele algõpetuseks. Need omadused on: selge süntaks, programmitekstiloetavus, kohustuslik taanete kasutamine, interpreteeritavus ja multiparadigmaatilisus. Nagukirjutab Donaldson oma artiklis [Donaldson]: Python on teistelt keeltelt noppinud paljuparimaid omadusi ja kombineerinud need selgel ja sünergilisel moel.1.1.1 Selge süntaksIlmestamaks Pythoni programmiteksti selgust ja lihtsust, vaatleme Tartu Ülikoolis õpetatudprogrammeerimiskeelte koodinäiteid. Võrdluseks on toodud programmeerimiskeeled C, C++,Java, Python, Pascal ja Perl. Programmiks on nendes näidetes kõikide keelte puhul HelloWorld -- programm, mis kuvab ekraanile sõnad “Hello World!” (Tere, maailm - ingl)[Wikipedia - Hello World].4


C#include int main(void){printf("Hello world!\n");return 0;}C++#include int main(){std::cout


on isegi nii lihtsa ülesande nagu ekraanile sõnade “Hello World!” kuvamisel tähtsusetud.Niisugune teadmatus ja lõpuni mitte aru saamine mõjub vaevalt innustavalt. Seega onPythoni puhul ülesande raskusaste meeldivas vastavuses lahenduse teostuse raskusastmega:lihtsaid asju ei ole tarvis keeruliselt teha.On leitud, et õpitulemused programmeerimise tundides sõltuvad suures osas tegelikuleprogrammeerimisele kuluvast ajast. Seega selleks, et suurendada programmeerimise aega,võiks vältida aja raiskamist tähtsusetute keele konstruktide ja süntaksi vigade üle arutlemisele[Grandell].1.1.2 Loetav programmitekstÖeldakse, et Pythoni disaini filosoofia rõhutab koodi loetavust [Python: Summary]. Pealevaadates näeb Pythoni programmitekst välja nagu märksõnadega ümberjutustus programmistoimuvast. See on omadus, mis on väga iseloomulik skriptimiskeelele.Siinkohal lühidalt selgitus skriptimiskeeltest. Sageli on tarvis, et arvuti sooritaks mingitlihtsat, samas väga spetsiifilist ülesannet - näiteks loeks teksti<strong>fail</strong>ist välja kõik e-mailiaadressid või käivitaks teist programmi ettenähtud parameetritega. Sellistel puhkudeleelistatakse programmeerimise “asemel” skriptimist (script - käsikiri, stsenaarium, kiri,kirjasüsteem ingl).Skriptimiskeeli iseloomustab kergesti õpitavus ja lihtsad intuitiivsed märksõnad ning skriptikirjutamine võtab oluliselt vähem aega, kui universaalses programmeerimiskeeles programmikirjutamine. Skriptimiskeeled on näiteks Perl, Lua ja Io. Neist esimest õpetatakse ka TartuÜlikoolis.Siit Pythoni üks parimaid omadusi - see näeb välja nagu skriptimiskeel, aga on tegelikultoluliselt rohkemate võimaluste ja rakendustega universaalne programmeerimiskeel.Järgnevalt vaatame mõningaid näiteid Pythoni programmitekstist ning selle loetavusest. Kõiknäidisprogrammid töötavad ja on varustatud kommentaaridega.Näide Pythoni programmitekstist: tsükkel ehk ringprotsess# defineerime sõnedest koosneva järjendisemud = [‘Anna’, ‘Brita’, ‘Chris’, ‘Denis’, ‘Elise’, ‘Fred’, ‘Grete’, ‘Hanna’,‘Iti’]# tsükkel üle järjendi elementidefor semu in semud:print semu + “ on minu sõber.”6


Sama tulemuse võib saavutada ka traditsioonilisemal moel# defineerime sõnedest koosneva järjendisemud = [‘Anna’, ‘Brita’, ‘Chris’, ‘Denis’, ‘Elise’, ‘Fred’, ‘Grete’, ‘Hanna’,‘Iti’]# tsükkel üle järjendi elementide. range - ulatus, vahemik. len e length - pikkusingl kfor i in range (len(semud)):print semud[i] + “ on minu sõber.”Tähelepanuväärne on siin Pythoni paindlikkus, võimaldamaks nii keelelähedastprogrammiteksti, nagu näeme viimase näite esimeses pooles. Samas võimaldab ta kaprogrammeerimisele traditsioonilist programmiteksti nagu näite teises pooles. Niisuguneinimkeele lähedus ja vabadus teha sama asja mitmel erineval moel, teeb Pythoni õppimisestmeeldiva kogemuse.Näide Pythoni programmitekstist: arvamismängArvamismängu näol on tegemist programmiga, mis valib suvalise arvu ning suhtlebkasutajaga, kes püüab seda ära arvata. Programm annab töö käigus kasutajale vihjeid, võtabvastu pakkumisi ja võrdleb neid oma arvuga. Programmitekst on varustatudkommentaaridega märksõnade tähenduse ja programmis toimuva kohta (vt joonis 1.1)Programmi kasutamisel tekkiv dialoog on näha joonisel 1.2.Joonis 1.1 Arvamismängu programmitekst7


Paneme tähele, et kõik tsükli sees toimuv on taandega tsükli jätkamistingimusest (whilepakkumiste_arv < 6:). Taanete kasutamisest tuleb lähemalt juttu järgmises punktis.Joonis 1.2 Arvamismängu väljund. Sinises kirjas on programmi poolt edastatud tekst, mustas kirjaskasutaja sisestatud tekst ja arvud.Näeme, et Pythoni programmitekst on lihtne, kergesti loetav ja mugavalt loodav ning nõuabtoimimiseks väga vähe spetsiaalseid mitteloomulikke kirjavahemärke ja sümboleid ningsarnaneb programmeerimiskeele kohta suhteliselt palju inimkeelele.Näide Pythoni programmitekstist: alamprogrammAlamprogrammiks ehk funktsiooniks nimetatakse programmilõiku, mis sooritab mingitkonkreetset tegevust, annab väljundi ja võib selle käigus kasutada käivitamisel ette antudparameetrit või parameetreid. Mõned funktsioonid on osa programmeerimiskeele disainistning programmeerija saab soovi korral funktsioone juurde luua.Näiteks on joonisel 1.1 toodud programmitekstis str(pakkumiste_arv) funktsiooni strkasutamine parameetriga, milleks on pakkumiste arv sel hetkel, tulemusena saadakse arvustsõne. Funktsiooni loomine ehk defineerimine toimub näiteks järgnevalt:def ruut(n):m = n * nreturn mFunktsioonil võib olla ka rohkem kui üks argument:from math import sqrt #toome sisse ruutjuure tehteks vajaliku mooduli# see funktsioon saab argumendiks ruutvõrrandi kordajad ja tagastab lahenditejärjendidef ruutvorrand(a,b,c):d = b*b-4.0*a*c8


if d >= 0: # tehakse mittenegatiivse diskriminandi puhul. if - juhul kui inglx1 = (-b+sqrt(d))/(2*a) #sqrt e square root - ruutjuur ingl kx2 = (-b-sqrt(d))/(2*a)lahendid = [x1, x2]return lahendid #return - tagastama ingl kelse: # ehk negatiivse diskriminandi puhul. else - muidu ingl kreturn “Reaalarvulised lahendid puuduvad.”print ruutvorrand(1,-3,1)Tulemusena kuvatakse ekraanile [2.6180339887498949, 0.3819660112501051].Nagu näha, on Pythoni programmitekst kergesti loetav, sisaldades minimaalselt selliseidmärksõnu ja sümboleid, mis võiksid olla algaja jaoks arusaamatud, üleliigsed või segadusseajavad. Suur osa programmitekstist on peaaegu sama arusaadav, kui oleksid vastavadingliskeelsed laused.1.1.3 Kohustuslik taanete kasutamineEelmises punktis oli juba lühidalt ära mainitud taanete kasutamist, selles punktis kirjeldametaandamist täpsemalt.Taanded programmitekstis täidavad enamjaolt sama ülesannet nagu loomuliku keele tekstis -hõlbustavad lugemist, tõstavad esile üksikuid tervik-ideid ning kiirendavad tekstist vajalikuleidmist. Taanete kasutamine programmeerimises on praktiline ja näitab head stiili. Headkasutust leidnud taanded on praktilised nii programmeerija enda kui ka nende jaoks, kes temaloodud programmiteksti mõista tahavad.Enamikus programmeerimiskeeltes ei ole taanete kasutamine kohustuslik. Programmitekstisisulise struktuuri määravad nendes programmeerimiskeeltes märksõnad ja sulud. Samas, osaprogrammeerimiskeeli, täiteks Python, kasutavadki sulgude ja märksõnade asemel struktuurimääramiseks just taandeid. Taandeid mittekasutava programmeerimiskeele puhul taandavadprogrammeerijad ise oma programmitekste, et programmi struktuuri loetavamaks teha.Õpetades programmeerimiskeelt, mis oma disaini poolest ei nõua toimimiseks taanetekasutamist, julgustatakse õppijaid näidete ja hea eeskuju abil ning korrapäraselt meeldetuletades siiski taandeid kasutama. Kuna esimesed programmid, mida õppides kirjutatakse,on suhteliselt lihtsad ja nende lugejaskonda kuulub ainult väike hulk inimesi (kui sedagi), eitunne õppijad sageli vajadust taanete järgi, lähtudes mõttest: “Kui programm ilma nendetatöötab, siis milleks mulle see?”.Siiski on oluline, et algaja programmeerija õpiks kohe alguses oma programmitekstiloetavaks vormistama. Samal põhjusel, miks on tähtis, et algaja viiuldaja hoiaks oma rannetõigesti. Ükskõik kui triviaalne talle tema tegevus võib tunduda, on oluline, et algaja9


programmeerija taandaks oma programmitekste korrektselt. Tegemist on õpetamiseelementaarse põhimõttega ja inimesele nii omase harjumuse jõuga arvestamisega.Programmeerimist Pythoni abil õpetades kaob ära terve hulk probleeme, kuidas õppijateletaanete olulisust arusaadavaks teha. Kui programmitekst pole õigete taanete ja reavahetustegavarustatud, siis programm lihtsalt ei tööta soovitud viisil (või ei tööta üldse). Mittetöötavadprogrammid on üsna tugev motivaator taanete kasutamine ära õppida. Tulemuseks on, etalgajad programmeerijad harjuvad kiiresti oma programme loetavaks vormistama ningsaavutavad selle käigus ka ise parema visuaalse ettekujutuse (oma) programmiteksti osadest.1.1.4 Python on interpreteeritav programmeerimiskeelProgrammeerimiskeeled võib tinglikult jaotada kaheks: kompileeritavad ja interpreteeritavadkeeled. Kompilaator on spetsiaalne programm, mis töötleb kindlas programmeerimiskeeleskirjutatud käske ja tõlgib need masinkoodiks, mida kasutab arvuti protsessor. Interpreteerijaaga tõlgib programmiteksti ühe rea kaupa, käivitades rea, kui see on tõlgitud. Interpreteerijaloob küll masinkoodi, kuid see kood pole kunagi kompileeritud üheks programmi ühikuks:programmiteksti interpreteeritakse programmi igal käivitamisel. [Bookrags]Python kuulub interpreteeritavate programmeerimiskeelte hulka. Kompileeritavad jainterpreteeritavad keeled erinevad algaja programmeerija jaoks kõige enam selle poolest,kuidas leiab aset programmi kirjutamise ja katsetamise protsess. Võrdlemakskompileeritavaid programmeerimiskeeli interpreteeritavatega, on David Bolton mõlemaljuhul toonud välja programmi loomise etapid.Kompileeritavat keelt kasutades sisaldab programmi kirjutamine järgmisi samme [Bolton]:1. programmi teksti redigeerimine;2. programmi kompileerimine masinkoodi <strong>fail</strong>ideks;3. masinkoodi <strong>fail</strong>ide linkimine käivitatavaks programmiks (näiteks .exe formaatMicrosoft Windowsi operatsioonisüsteemis);4. programmi silumine või käivitamine.Silumiseks nimetatakse arvutiprogrammist või elektroonika riistvarast vigade ja defektideleidmist ning nende parandamist, et panna see soovikohaselt toimima.Sel ajal, kui programmikood kompileerub, programmeerija ootab (vt joonis 1.3).Kompileerimise ajal kuvab arvuti erinevaid teateid protsessi kulgemisest ja võimalikestvigadest või märkustest.10


Joonis 1.3 Kompileerimine [xkcd]TõlgePealkiri: Programmeerijate esimene vabandus logelemiseks: "Mu kood kompileerib."Ülemus (ukse tagant): Hei! Tagasi tööle!1. programmeerija: Kompileerib!Ülemus: Ah, selge. Jätkake.Interpreteeritavat keelt kasutades toimub programmi kirjutamine järgnevalt [Bolton]:1. programmi teksti redigeerimine;2. programmi silumine või käivitamine .Rääkides programmeerimise algõpetuseks keele valimistest, toob Zelle oma artiklis Pythonas a first language (Python esimese keelena) välja kompileeritavate keelte kohta:“Kompileerimine on tudengitele demoraliseeriv. Selleks, et üldse mingeid tulemusi saada,peab programm olema süntaktiliselt veatu. Programmi kompileerimine ja ekraanitäieetteheitvate teadete vaatamine on tüütu ja ärritav tegevus. Pythoni puhul juhtub vähemaltmidagi, programm esitab vähemalt osa väljundist enne vigade tõttu peatumist. Tudeng näebprogrammi (osalist) toimimist ja tal on parandamiseks üks viga korraga. Iga parandus viibedasi ja olukord on palju julgustavam.” [Zelle]Kompileerimine on üks paljudest asjadest, millega algaja programmeerija ei soovi ja eipeakski tegelema. Seega kui valida programmeerimise algõpetuseks keelt, mis ei sisaldaksüleliigseid, algajale õppijale ebaolulisi ja arusaamatuid ideid, on interpreteeritav keel ilmseltparem valik.11


1.1.5 Python võimaldab mitmeid programmeerimisparadigmasidparadigma -- KEEL sõna muutevormistik; teadusloos: püsiv jaüldtunnustatud mõistete, seaduste ja meetodite süsteem, millelrajaneb uurimine ja õpetamine ▪. Paradigmaatiline [ÕS]Python toetab mitmeid programmeerimisparadigmasid, sealhulgas objektorienteeritust,imperatiivsust ja mõningal määral funktsionaalprogrammeerimise stiile.Objektorienteeritud programmeerimine on programmeerimisparadigma, mis kasutab‘objekte’- andmestruktuure, mis sisaldavad andmevälju ja meetodeid koos nendevahelisetoimega. Aine Objektorienteeritud programmeerimine (MTAT.03.13, 6 EAP) on TartuÜlikooli matemaatika-informaatikateaduskonnas otsene järg programmeerimise algkursuselening mõlemad ained on kohustuslikud kõikidele selle teaduskonna tudengitele.Objektorienteeritud programmeerimist õpetatakse praegu kasutades programmeerimiskeeltJava.Imperatiivseks nimetatakse niisugust programmeerimist, kus kirjeldatud lausungid muudavadprogrammi seisundit. Nagu käskiv kõneviis loomulikes keeltes väljendab käsketegutsemiseks, defineerivad imperatiivsed programmid käskude järjendi arvutile täitmiseks.Funktsionaalprogrammeerimises koheldakse arvutusi kui matemaatilisi funktsioone,välditakse seisundeid ja muudetavaid andmeid.Mitmete programmeerimisparadigmade võimaldamine teeb Pythonist hea esimeseprogrammeerimiskeele, sest see võimaldab õppijal hiljem üle minna mingile teisele keelele.Lai silmaring ja sage juurde- või ümberõppimine on loomulik igal alal ningprogrammeerimiskeel, mis seda soodustab, on igati oodatav valik. Mitmeti kasutatav keelteeb õppijale mugavaks ja turvaliseks esimesed tutvused uute paradigmadega, kasutades jubatuttavat programmeerimiskeelt. Näiteks võib Pythoniga alustanud algaja programmeerijasaada ettekujutuse objektidest ja nende kasutusest ilma programmeerimiseks kasutatavat keeltvahetamata.Pythoni võimekusest annavad tunnistust ka edulood Pythoni kodulehel [Python: Success],kus on valdkondade kaupa ära toodud rohkelt lugusid edukatest rakendustest Pythonile -valdkondade hulgas näiteks tarkvaraarendus, haridus, teadus, tehnika ja palju muud.Nagu näeme, tõestab Python end mitmel moel suurepärase programmeerimiskeelena, midaprogrammeerimise algõpetuseks kasutada. Samale tulemusele on jõutud ka kogemusega -näiteks Grandelli jt juhtumiuuring [Grandell] vaatles kahes koolis nelja gruppi Soome12


keskkooli õpilasi, kellele õpetati programmeerimist Pythoni abil. Eesmärgiks oli uurida,kuidas saab programmeerimist keskkooli tasemel õpetada ja kui hästi Python selleks sobib.Leiti, et Pythoni paljud omadused, nagu lihtne ja paindlik süntaks, kohene tagasiside, lihtsastikasutatavad moodulid ja ranged nõuded taanete kohasele kasutamisele, aitavad kaasa niiõpetamisele kui õppimisele.1.2 Argumendid Pythoni vastuPython on suhteliselt uus programmeerimiskeel (loodud aastal 1991), mis läheneb paljudeleasjadele innovaatilisel moel. On loomulik, et iga tavalisest erinev nähtus põhjustab aruteluning vastaseid. Käesolevas punktis tulevad arutlusele mõned rohkem või vähem tõsisedvastuargumendid seoses Pythoniga.Python on ebaefektiivneOluline näitaja programmeerimiskeele juures on programmide toimimise kiirus, mis oninterpreteeritavatel keeltel võrreldes kompileeritavate keeltega loomulikult madalam.Kompileeritavate keelte puhul pärast programmi lõplikku valmimist ja kompileerimisttekkivad käivitatavad <strong>fail</strong>id teevad programmi töö ära kiiremini kui interpreteerijate puhulsama programmi käivitamiseks programmiteksti uuesti interpreteerimine. Seega peetaksemõnikord Pythoni nõrgaks küljeks selle ebaefektiivset toimimiskiirust [Zelle].Tegelikkuses ei ole algajate programmeerijate treenimisel programmide toimimise kiirusväga oluline. Palju olulisem on aeg, mis kulub programmiteksti loomisest võimodifitseerimesest toimiva tulemuse saamiseni ning see on interpreteeritava keele puhullühem.Algõpetuses loodavad programmid on väikese arvutitöö mahuga ning nende eesmärk ei oleginiivõrd programmi enda efektiivsus, kuivõrd õppijatele programmeerimise põhiideedetutvustamine ja lühikese perioodi jooksul arusaadavaks tegemine.Õpetamist peaks alustama madalama taseme keelestTõenäoliselt kõige levinum vastuväide kõigi nö kõrgema taseme keelte kohta väidab, etprogrammeerimist peab alustama madalamalt tasemelt [Zelle]. Niisugune veendumus tugineboletusele, et kui õppija alustab madalama taseme keelest, tekib tal kohe alguses selgeettekujutus arvuti tööst ning see säästab hiljem palju õppimis- ja ümberõppimisvaeva. Samutivõib juhtuda, et madalama taseme programmeerimiskeelt valdav inimene õpib kerge vaevaga13


ära mõned kõrgema taseme programmeerimiskeeled, samas kui kõrgemal tasemelprogrammeerimist õppinu madala taseme omi nii kergesti enam ei omanda.Kuigi arusaadav ja põhjendatud mure, ei pruugi need väited alati tõele vastata. Nagu varemgirõhutatud, on esimesed programmeerimise kursused pigem programmeerimisest üldiselt kuikindlast keelest. Selleks, et saada ettekujutust programmeerimisest ja võimalustest arvutigasuhtlemiseks, on Python igati kohane vahend. Madalama taseme keeled võivad küll ajajooksul anda õppijale ettekujutuse arvuti tööst, kuid tõenäoliselt mitte niisugust eduelamust jakiiret tulemust, mida värskelt alustanu hinnata oskaks.Taanetest tekib rohkem segadust kui kasuPython kasutab taandeid eraldamaks programmitekstis blokke - näiteks tsükli sisu järgnebtaandega selle jätkamistingimusele ja funktsiooni sisu selle definitsioonile. Taandedprogrammitekstis näevad teatavasti välja nagu tühjad kohad, nagu ka tühikud ja reavahetused(inglise keeles kasutatakse nende kohta ühisnimetajat - whitespace ehk valge ruum, tühemik).Taanete kasutamisega seotud vastuargumendid võib jagada funktsionaalsuse ja stiiligaküsimusteks.Programmitekstis reavahetused ja tühikud märksõnade või sümbolite vahel tavaliselt mingitfunktsionaalset tähendust ei oma, enamustes programmeerimiskeeltes ei oma tähendust kataanded. Seega võib algajal programmeerijal kergesti juhtuda, et oma programmitekstikoostades saavad taanded (kui näiliselt tähtsusetu tühemik) paigutatud valesti ja programm eitööta soovitud viisil. Mark Lutz [Lutz], kes on õpetanud Pythonit rohkem kui tuhandeletudengile, kirjutab, et tegemist on algajate seas sageli esineva veaga.Samuti võib vaielda, et Pythoni taanete kasutamine ei ole programmeerimise ‘hea stiil’ vaidlihtsalt ‘Pythoni stiil’, mis ei pruugi tingimata aidata õppijal programmiteksti mõista.Esimene - taanete funktsionaalsuse argument on kergesti kõrvaldatav piisava praktika jajuhendamisega, mis Pythoni kerget õpitavust ja loomuliku keele lähedust arvestades võtabeeldatavasti väga vähe aega.Teine - stiili küsimus on loomulikult vaieldav ja maitse asi ning selle kohta ainuõiget tõdeleida ei ole kindlasti lihtne ega vajalik.1.2.4 Python ei ole piisavalt populaarneVõttes arvesse Pythoni disaini õpiotstarbelist loomust ja interpreteeritava keele suhteliseltaeglast toimimist, võiks arvata, et Python ei leia kasutust suurtes tarkvarafirmades või -14


projektides. Niisugused kahtlused võivad kergesti viia arvamuseni, et õpetama peaksniisugust programmeerimiskeelt, mis selle õppijale tulevikus tööd ja leiba annab.Loomulik on, et arvutiteaduse eriala inimesed omandavad oma õpingute ja töö käigus rohkemkui ühe programmeerimiskeele, kuid see ei pea seadma piiranguid esimese keele valikule.Lisaks, nagu võime lugeda juba varem viidatud Pythoni kodulehel olevatest edulugudest[Python: Successs], on teada, et Python leiab mitmekülgset kasutust üle terve maailmaerinevates valdkondades. Suurte projektide puhul ei ole sageli küsimus valikusinterpreteeritava ja kompileeritava keele vahel, sest kasutatakse mõlemat - need onkomplementaarsed [Zelle].Pythoni populaarsusele annab kinnitust ka see, et vaadates programmeerimiskeelteedetabeleid [Tiobe] [Doublecloud], mida koostatakse selle põhjal, kui palju nendeprogrammeerimiskeeltega seonduvaid materjale Internetis, sh blogides ja videosaitidel leidub,paneme tähele, et Python on edetabeli esiotsas koos teiste laialt kasutatavate keeltega naguC++ ja Javaga.Kokkuvõtteks võib öelda, et Python leiab mitmel põhjusel kasutust hea esimeseprogrammeerimiskeelena. Argumendid Pythoni õpetamise vastu on sageli ennatlikud või õigejuhendamise juures kergesti kõrvaldatavad.Järgmises peatükis vaatleme programmeerimise algõpetuses tekkivaid probleeme, mis ei oletavaliselt ennetatavad õige programmeerimiskeele valikuga.15


2 Raskused programmeerima õppimiselKuigi Python on suurepärane algõpetuse keel ja esimese programmeerimiskeele läbimõeldudvalimine kõrvaldab palju programmeerimise algõpetuses tekkivaid probleeme, osutubprogrammeerimine siiski raskeks ülesandeks paljudele õppijatele. See peatükk vaatleb TartuÜlikooli tudengite edukust aines Programmeerimine viimase viie aasta jooksul, täpsemathinnete kujunemist 2010/2011 õppeaasta sügissemestril ja aines osalenud tudengitelt kogutudtagasisidet ning arutleb saadud tulemuste võimalike põhjuste üle.2.1 Programmeerimise algõpetus Tartu ÜlikoolisProgrammeerimist on Tartu Ülikoolis õpetatud juba alates eelmise sajandi keskpaigast -aastast 1958. Sellest ajast alates on muutunud nii õpetamine kui ka õpetajad, arvutid kui kaprogrammeerimiskeeled. Programmeerimisoskuse olulisus ja kasulikkus igapäevaelus või tööleidmisel on aegade jooksul ainult kasvanud.Järgnevalt vaatame andmeid Tartu Ülikooli tudengite edukusest programmeerimise kursusel.2.1.1 Viimase viie aasta hindedMatemaatika-informaatikateaduskonna programmeerimiskursuse viimase viie aasta hindedon esitatud joonisel 2.1. Nagu jooniselt näha, on mittepositiivse tulemusega tudengite hulkvõrdlemisi suur.Joonis 2.1 Hinded aines Programmeerimine õppeaastatel 2006/2007 - 2010/201116


Niisugune hinnete jaotus lubab oletada, et programmeerimise kursuse tudengid jagunevadkaheks - suur hulk heade ja väga heade tulemustega kursuse lõpetajaid ning teine suur hulkhalvema või negatiivse tulemusega. Seejuures ei maksa arvata, et juba positiivse hindesaanud tudengid on olnud küllaldaselt edukad. Tartu Ülikooli õppekorralduseeskiri sätestabhinde E järgnevalt:hinne E ehk kasin – minimaalselt lubataval tasemel olulisemate õpiväljundite saavutamine,mida iseloomustab teadmiste ja oskuste kasutamine tüüpolukordades piiratud viisil,erandlikes olukordades avalduvad märgatavad puudujäägid ning ebakindlus; [TÜ õke]Minimaalsel tasemel õpiväljundid ja ainult piiratud viisil oskuste kasutamine ei ole kindlastiprogrammeerimisoskus. Loomulikult ei saa me oodata, et kõikide tudengite hinded jääksidvahemikkuu A...C, kuid nii suur hinnete D ja E hulk äratab samuti tähelepanu ning tõstatabküsimusi.Järgnevalt vaatleme lähemalt programmeerimise kursuses tekkivaid probleeme 2010/2011õppeaasta sügissemestril programmeerimise ainekursusel osalenud tudengite näitel.2.1.2 Programmeerimine 2010/2011 õppeaasta sügissemestril2011. aasta aprillis saadeti kõigile 2010/2011 sügissemestril programmeerimisseregistreerunud tudengitele e-posti teel palve vastata käesoleva lõputöö tarvis loodudküsimustikule (vt lisa x). Küsimustiku eesmärgiks oli koguda tagasisidet programmeerimiseõpetamise kohta, selgitamaks välja tudengite probleeme ja aine kitsaskohti.. Perioodil 15.aprill - 3. mai täitis küsimustiku 145 tudengit, mis on ligi pool vastaval sügissemestril aineleregistreerunud tudengite arvust.Illustreerimaks, kuidas paigutuvad küsitlusele vastanud tudengid hinnete skaalal, vaatamejoonist 2.2 ja joonist 2.3.Joonis 2.2 Küsimustikule vastanud tudengite hinded17


Joonis 2.3 Hinded 2010/2011 sügissemestril aines programmeerimineNagu näha, on negatiivse hindega tudengite osakaal küsimustikku täitnute hulgas väiksem,kui vastav näitaja toimunud kursusel. Seega on andmestik natuke kallutatud ja seda tulekstulemuste analüüsimisel arvesse võtta. Samas on niisugune kallutatus ka oodatav, sestküsimustiku täitmine oli vabatahtlik, osa negatiivse tulemuse saanud tudengitest võib ollajuba teaduskonnast lahkunud või aine suhtes negatiivselt meelestatud.Küsimustikku koostades on lähtutud mitmetest hüpoteesidest. Siinkohal mõned nendest.Hüpotees: enamus tudengitest eelistab õppida kodus - leidis kinnitust. Arutelu selletähelepaneku kohta pikemalt punktis 5.1.Hüpotees: programmeerimiskursuse kõige raskem teema on rekursioon - kinnitatud (vt joonis2.4). Küsimustik sisaldas palju sarnaseid küsimusi, kus tudengitel paluti hinnata, kumb onkahest sarnasest programmeerimistegevusest raskem. Niisugust vastuste kaldumist ühevariandi poole, nagu seda oli rekursiooni poole (joonis 2.5), ei esinenud ühegi teise samatüüpi küsimuse juures.Joonis 2.4 Kursuse kolm kõige raskemat teemat18


Joonis 2.5 Rekursioon hinnatakse ka keerukamatest tsükliülesannetest raskemaksHüpotees: paljudel tudengitel on madal enesehinnang ja nad kalduvad emotsionaalseltnegatiivse sisuga enesekohastesse väidetesse seoses programmeerimisega - kinnitatud. Ligi10% küsitlust täitnud tudengitest keeldub ennast edukaks tunnistamast, kasutades positiivseltsõnastatud küsimusele “Mis on peamine põhjus, miks sa programmeerimises nii edukasoled?” vastamisel ‘muu’ lahtrit, et eitada oma igasugust edukust. Nendest tudengitestkolmandik on saanud positiivse hinde. Pikem arutelu selle nähtuse võimalike põhjuste ülening joonis vastuste jagunemisest on punktis 2.2.3.Hüpotees: programmeerimise praktikumiülesanded on tudengitele sageli rasked - ümberlükatud. Tudengite vastused ülesannete raskusastet hinnates moodustavad normaaljaotuselesarnased tulbad (vt joonis 2.6).Joonis 2.6 Kui raskeks hindad keskmist programmeerimise arvutipraktikumi ülesannet?Hüpotees: pärast programmeerimise kursuse läbimist ei tunne tudengid ennastprogrammeerimises enesekindlalt - osaliselt kinnitatud (vt joonis 2.7). Arvesse tuleks võtta, etosa tudengeid omandavad kursuse jooksul (või juba varem) üsna selge ettekujutuseprogrammeerimise võimalustest ning peavad loomulikuks, et pärast sissejuhatava kursuseläbimist teavad nad veel suhteliselt vähe. Küsimus “Kuidas hindad oma programmeerimiseoskusi praegu?” on antud hüpoteesi jaoks sõnastatud seega liiga üldsõnaliselt. Edaspidistes19


Joonise 2.8 horisontaalteljel on näha 2010/2011. õppeaasta programmeerimise kursusehinnatavad osad: kaks praktilist arvutikontrolltööd, lisapunktid arvutipraktikumide ülesanneteeest, kaks pigem teoreetilist paberi ja pliiatsiga tehtavat kontrolltööd tahvlipraktikumis(tahvli-kontrolltöö) ja lisapunktid tahvlipraktikumides osalemise eest. Horisontaalteljelkujutatud tegevused ei ole teineteisele lineaarselt järgnevad - lisapunktid praktikumidestkogutakse jooksvalt semestri jooksul ning kontrolltööd toimuvad samuti vaheldumisi,sealjuures mitte tingimata võrdsete ajavahemike tagant.Vertikaaltelg on punktisumma telg ning iga värviline joon graafikul kujutab ühe tudengipunkte. Iga tudengi punktid on tegelikult arvujärjend, mis liidetakse kokku enne eksamit -graafikul on punktid pideva joonega ühendatud, et lihtsustada jälgimist.Paneme tähele, et nö ‘nõrgemate’ tudengite mahajäävus või punktide poolest muust kursusegrupist eraldumist ei toimu igas hindelises tegevuses. Näiteks arvuti- ja tahvlipraktikumidelisapunktid jaotuvad suhteliselt oodatavalt. Samal ajal näeme, et teine arvutikontrolltöö jaesimene tahvlikontrolltöö on osutunud suurele hulgale tudengitest üllatavalt raskeks. Samution kimp laskuvaid jooni teise tahvlikontrolltöö kohal. Veel võib märgata, et leidub paljutudengeid, kelle ühes tegevuses ebaõnnestumine ei ennusta neile edu teises tegevuses ja kavastupidi - silmapaistev punktisumma ühes kontrolltöös ei pruugi tähendada võrreldavalt häidtulemusi mõnes teises kontrolltöös.Hüpotees: eksamile mitte pääsenud tudengid pole terve semestri jooksul tööd teinud ja ei saaselle pärast piisavalt punkte kokku - ümber lükatud.Joonis 2.9 Punktide kogunemine tudengitel, kes ei pääsenud eksamile.Joonisel 2.9 on kujutatud 71 eksamile mitte pääsenud tudengi punktid semestri jooksul ningvõrdluseks ühe hindega A kursuse lõpetanud ‘mustertudengi’ punktid (sinine joon, esile21


tõstetud roheliste ruudukestega). Ülesanded ei ole tingimata tehtud selles teljel kujutatudjärjestuses ja punktid on ühendatud pideva joonega, et hõlbustada jälgimist. Horisontaalteljelegend koos kogu kursuse tudengite hulgas saavutatud maksimumiga on järgmine:1 Arvutikontrolltöö nr 1, ülesanne 1 (3 punkti)2 Arvutikontrolltöö nr 1, ülesanne 2 (3 punkti)3 Arvutikontrolltöö nr 1, ülesanne 3 (4 punkti)4 Arvutikontrolltöö nr 2, ülesanne 1 (7 punkti)5 Arvutikontrolltöö nr 2, ülesanne 2 (8 punkti)6 Lisapunktid arvutipraktikumidest (15 punkti)7 Tahvlipraktikumi kontrolltöö nr 1, ülesanne 1 (2 punkti)8 Tahvlipraktikumi kontrolltöö nr 1, ülesanne 2 (4 punkti)9 Tahvlipraktikumi kontrolltöö nr 1, ülesanne 3 (4 punkti)10 Tahvlipraktikumi kontrolltöö nr 2, ülesanne 1a (3 punkti)11 Tahvlipraktikumi kontrolltöö nr 2, ülesanne 1b (3 punkti)12 Tahvlipraktikumi kontrolltöö nr 2, ülesanne 2a (3 punkti)13 Tahvlipraktikumi kontrolltöö nr 2, ülesanne 2b (3 punkti)14 Tahvlipraktikumi kontrolltöö nr 2, ülesanne 2c (3 punkti)15 Lisapunktid tahvlipraktikumidest (5 punkti)Joonist 2.9 tähelepanelikult vaadates märkame, et isegi tudengitel, kes ei kogunud semestrijooksul piisavalt punkte, oli põnev ja vaheldusrikas kursus - seal on tõuse ja langusi,suuremaid hüppeid ja pikemaid madalseise. Ning mitte tingimata väiksemad punktisummadkui võrdluseks toodud edukal tudengil. Esimese arvutikontrolltöö 1. ülesanne, esimesetahvlipraktikumi kontrolltöö 3. ülesanne ja tahvlipraktikumi lisapunktide osas ületavad paljudkursusel kokkuvõttes ebaõnnestunud tudengid eeskujulikku näidet.Murettekitavad kohad, kus paljud ebaõnnestunud tudengitest saavad vähe või mitte ühtegipunkti, on 5, 10 ja 14 ehk lisapunktid arvutipraktikumidest, teise tahvlipraktikumi kontrolltööülesanded 1a ja 2c. Tahvlipraktikumi teise kontrolltöö ülesanne 1a on plokkskeemikoostamise kohta, 2c on üsnagi oodatavalt rekursiooni ülesanne [KT2: tahvel]. Rekursiooniraskus tuleb välja ka tudengite tagasisidest (vt joonis 2.4 ja joonis 2.5), samuti on rekursioonjuba loomult raskesti omandatav idee.Veel midagi tähelepanuväärset toimub ka 4 ja 5 juures ehk teine arvutikontrolltöö, kus vägapaljud tudengid pole kummagi ülesande eest punkte saanud, kuigi nad paistavad edukalttoime tulevat teiste kursuse jooksul hinnatavate ülesannetega. Teise arvutikontrolltöömõlemad ülesanded olid mahukad tingimuslauseid ja mitmekordseid tsükleid vajavad22


programmeerimisülesanded, kusjuures teine ülesanne sisaldas ühe osana rekursiooni. Niimahukate ülesannete ebaõnnestumise taga olevaid raskusi on keeruline hinnata - probleemvõis olla ühes või mitmes ülesande komponendis, samuti ärevuses, võimes oma aega juhtidavõi adekvaatses infootsimisoskuses. Kindlasti aitaks kõikide arvestustööde sooritusele kaasatugev taust ja rohke kogemus vaja minevate osaoskustega.Seejuures, tuleks arvestada, et joonise 2.9 horisontaalteljel kujutatud tegevused nõuavadlisaks programmeerimisoskusele veel teisigi oskusi. Näiteks tähendab tahvlipraktikumidespunktide kogumine terve semestri jooksul pidevat tööd, iseseisvat lahendamist ja iganädalastkohalkäimist. Tahvlipraktikumides saavad lisapunkte pigem aktiivsed ja pealehakkajadtudengid ja kontrolltööd, mis toimuvad kindlatel kellaaegadel ja kuupäevadel klassiruumis,nõuavad kiiret ajapiirangu sees mõtlemist ja head iseseisvat probleemilahendamise oskust.Järelikult on küllaldaselt tudengeid, kellele kuluks ära mõningane abi või toetus ainult teatudteemadega seoses, ülejäänuga tulevad nad suure tõenäosusega iseseisvalt toime. Raskeminiteostatavad osad kursuses on plokkskeem, järjepidev kaasatöötamine semestri jooksul,rekursioon ja mahukad mitut osaoskust koos kasutavad ülesanded. Kindlasti on võimalikleida veel kitsaskohti ja suuremaid langusi või tudengitegruppe, kellel on sarnasedprobleemid ja nii edasi.Kogutud andmeid võib kasutada veel paljudele küsimustele vastuste otsimisel, hüpoteesidekinnitamiseks või edasiste küsimustike koostamisel. Küsimustikust, vastustest ja nendeanalüüsist tuleb juttu veel ka järgnevates peatükkides.2.1.3 Tugisüsteemide olemasolu ja vajalikkusEelnevaid punkte arvesse võttes oleks loomulik eeldada, et programmeerimise algõpetusvajab uuendusi ja/või paremaid tugisüsteeme tudengitele. Tugisüsteemideks nimetame siinerinevaid õppeasutusepoolseid ainekorralduslikke elemente, mis toetavad (raskustessesattunud) tudengite õppeprotsessi ja õpiväljundite saavutamist - nende alla võivad kuuludalisatunnid, õppejõu infotunnid, lisajõud õpetamisel, rühmas õppimise või e-õppe võimalused.Praegune ainekorraldus sisaldab loenguid, kus tudengid on passiivses rollis,arvutipraktikume, kus tudengid tegelevad aktiivselt etteantud ülesanneteprogrammeerimisega - seda piiratud aja jooksul arvutiklassis - ning tahvlipraktikume, kustudengite aktiivsemal osalemisel arutatakse läbi osa loengutes ja arvutipraktikumidesläbitavast ainesisust. Kuigi hetkel rakendust leidev ainekorraldus on ennast tõestanud23


suhteliselt efektiivsena (vt 2.1.1), võiks siiski kaaluda mõningaid õppeprotsessimitmekesistamise võimalusi. Vajadust programmeerimise kursuse efektiivsemaks muutmisejärele ilmestab värvikamalt asjaolu, et see aine on eeldusaineks 23-le õppeainele, mis jäävadprogrammeerimises ebaõnnestumise tõttu igal aastal kättesaamatuks ligi neljandikuletudengitest.Kõike arvesse võttes oleks loomulik oodata, et programmeerimise algõpetus on võrreldesteiste ainetega rohkem toetatud ja kursuse disain toetab kõiki erinevate eelduste ja raskustegatudengeid. Praegusel hetkel raskustesse sattunud tudengitele abiks olevad tahvlipraktikumid,foorum, suurepärased õppejõud ning Internet on küll head, kuid suur ebaõnnestumise protsenträägib enda eest.Üheks võimaluseks ainekursuse läbiviimise uuendamiseks, ilma kogu disaini ümbertegemata, on lisaks kasutusele võtta traditsioonilisest erinevaid õppeprotsessi osasid, misjooksvalt toetaksid teadmiste omandamist. Käesolevas töös lähemale vaatlusele tulevõppeprotsessi osa - kohvripraktikumid - on täpsemalt kirjeldatud viiendas peatükis.2.2 Miks on programmeerimine raske?Eelmises punktis analüüsitud andmed viitavad, et programmeerima õppimine valmistabpaljudele tudengitele raskusi. Selles punktis analüüsime programmeerimise algõpetusestekkivate probleemide põhjusi. Arutelu lähtub programmeerimise õpetamise pedagoogilistestaspektidest ning õppimist ja õpetamist mõjutavatest tunnetusprotsessidest.2.2.1 Üldpedagoogika: Bloomi taksonoomiaJoonis 2.10 Üldpedagoogika24


Õppimise ja õpetamise kohta on palju teooriaid. Käesolev punkt kirjeldab Bloomimodifitseeritud taksonoomiat (takso.noomia biol süstemaatika, organismideklassifitseerimine[ÕS]) ning selle seost programmeerimise algõpetusega.Bloomi taksonoomia on õppe-eesmärkide klassifikatsioon, mida esimest korda tutvustasidBenjamin Bloom jt aastal 1956 [Wikipedia: Bloom] ning mis sai 2001. aastal olulisetäienduse tänu Lorin W. Andersoni jt raamatule A Taxonomy for Learning, Teaching, andAssessing: A Revision of Bloom's Taxonomy of Educational Objectives [Anderson], muutesseni veidi ebaselge teooria selgeks kahemõõtmeliseks mudeliks. Andersoni jt poolt uuendatudõppe-eesmärkide klassifikatsiooni nimetatakse ka Bloomi modifitseeritud taksonoomiaks.Bloomi modifitseeritud taksonoomia idee keskmeks on eesmärgid, mida õpetajad sõnastavadenne klassi ette minekut, testi küsimusi või ainekursust koostades. Eesmärgid kirjeldavadoodatud muutust õpilastes. Muutust, mis on tekkinud tänu õpetajapoolsele juhendamisele jaõpetamisele.Kui õppetüki eesmärgid on sõnastatud õpetajakeskselt, nimetatakse neid eesmärkideks, kuiõpilasekeskselt, siis õpiväljunditeks. Üldiselt koolitatakse ja julgustatakse õpetajaidsõnastama pigem õpiväljundeid kui eesmärke. Õpiväljundi saavutamine või mittesaavutamineon väljastpoolt hinnatav ja kontrollitav. Õpiväljundid on näiteks “õpilane teeb vahet paremalja vasakul käel” või “õpilane valib võrrandisüsteemi lahendamiseks sobiva meetodi.”Loomulik on eeldada, et kõik õpetamisega tegelevad inimesed moodustavad niisuguseidlauseid - kas teadlikult või teadvustamatult, kohustuslikus korras või omal initsiatiivil.Sõnastatud õpiväljundit lähemalt vaadates paneme tähele, et see koosneb alati kahestkomponendist. Üks on väljendatav verbides (teeb vahet, oskab valida, tunneb ära, jutustabümber, arutleb, teab jne), mis kirjeldavad soovitud kognitiivset protsessi - seda, mis õpilasepeas toimub. Teine komponent õpiväljundist koosneb tavaliselt ainealastest nimisõnadest(võrrandisüsteem, meetod, parem ja vasak), mis üldiselt kirjeldavad neid teadmisi, millekonstrueerimist õpilastelt oodatakse.Ilmselt saavad soovitud kognitiivsed protsessid olla erineval tasemel - näiteks ‘teeb vahet’ eiole sama tase, mis ‘arutleb.’ Samuti on teadmisi erinevatel tasemetel - teadmised saavad ollaüksikutest faktikildudest protseduuride ja enesekohaste teadmisteni.Seega oleme saanud kahemõõtmelise mudeli, mis algab õpiväljundite sõnastamisest, kuid onkasutatav ka ülesannete koostamisel, nende raskusastme hindamisel, kursuse disainimiselning miks mitte ka õpiraskuste väljaselgitamisel (vt tabel 1) [Anderson].25


Tabel 1 - Modifitseeritud Bloomi taksonoomia ehk õpiväljundite kahemõõtmeline mudelE. Krulli poolt loetud kursuse Pedagoogiline psühholoogia loenguslaididel (2009/2010õppeaasta kevad) [Krull] on tabeli lahtreid Andersoni jt raamatule [Anderson] tuginedesselgitatud järgnevalt:Sisu mõõde:● Faktiteadmine: põhielementide teadmine, st terminoloogia, spetsiifilised detailid jaelemendid.● Kontseptuaalne teadmine: põhielementidevaheliste seoste teadmine, stklassifikatsioonid, kategooriad, printsiibid, üldistused, teooriad, mudelid jastruktuurid.● Protseduuriline teadmine: kuidas midagi teha, st ainespetsiifilised oskused,tegevusmallide võtted ja meetodid; mõne protseduuri sobivuse üle otsustamisekriteeriumide teadmine.● Metakognitiivne teadmine: üldine teadmine tunnetustegevusest, sh teadlikkus omatunnetustegevusest.Soorituse mõõde:● Pea meeles: olulise info reprodutseerimine pikaajalisest mälust.● Saa aru: interpreteerimine, näitlikustamine, klassifitseerimine, summeerimine,järeldamine, võrdlemine, selgitamine..● Rakenda: sooritamine, täide viimine.● Analüüsi: materjali jaotamine koostisosadeks, seoste ja struktuuri ära tundmine.● Hinda: otsuste langetamine kriteeriumide ja standardite põhjal.● Loo: elementide kokku panemine kooskõlalise terviku või originaalse produktiloomiseksVaatame nüüd ühte programmeerimiskursuse ülesannet:Pangaarve intressKirjutage programm, mis küsib kasutajalt tema pangaarvel olevatsummat ning intressi protsenti, mida pank talle maksab igal aastalning väljastaks pangaarvel oleva summa 5 aasta pärast.26


Kõrvutades seda ülesannet Tabelis 1 kirjeldatud taksonoomiaga ja võttes arvesse, etprogrammi kirjutamine sisaldab alati ka vigade kõrvaldamist ja väljundi kontrollimist,paigutub ülesanne modifitseeritud Bloomi taksonoomias vähemalt protseduuriliste teadmisteloomise kategooriasse (tabelis 1 6. veerg, 4. rida).Oluline on märkida, et toodud ülesanne pangaarve intressist on 2010/11 õppeaastasügissemestril toimunud programmeerimise kursuse teise arvutipraktikumi kodune ülesanne[Prog: arvutipraktikumid]. Seega lahendavad seda tüüpi ülesandeid kursuse seisukohalt vägaoluliste punktide saamiseks tudengid, kellest suur enamus on teist nädalat ülikoolis japaljudel juhtudel esimest korda elus programmeerimisega kokku puutumas.Programmeerimine erineb paljudest teistest õppeainetest just selle poolest, millisel tasemeltegevusi õppijalt oodatakse juba ainekursuse esimestel nädalatel. See ‘hüpe’ mitte-teadmiseltloomisele ongi tõenäoliselt üks olulisemaid põhjuseid, miks programmeerimine nii paljudeleõppijatele raskusi valmistab.Siiski ei tohiks arvata, et lihtsamalt või rohkem etapiviisi õpetamine oleks siin lahenduseks.Aastatepikkune praktika (vt 2.1.1) näitab, et enamus tudengitest tuleb toime selle nö hüppegaligikaudu mitte midagi oskamiselt protseduuriliste teadmiste loomisele. Algusest peale iseprogrammide kirjutamine ongi enamikule jõukohane ja edasiviiv meetod programmeerimiseõpetamiseks. Samal ajal tuleks siiski silmas pidada, et programmeerima õppimine käibalguses paljudele üle jõu või valmistab raskusi ning seda täiesti mõistetavatel põhjustel -eeldab ju kohe looma hakkamine täiesti uute mõtlemise paradigmade kasutamist.Programmeerimine erineb teistest bakalaureuseõppe ainetest kõige rohkem oma ülesanneteloova suuna poolest. Midagi luua on oluliselt raskem kui seda mõista või teada - eriti juhul,kui selle tegemine on alles õppimisjärgus.Edasi vaatame teist olulist programmeerimise õpetamise ja õppimise iseärasust - abstraktsus.Seejärel liigutame rõhuasetust programmeerimiselt õppijatele ning uurime, mis on õppijatesprogrammeerimisega seoses tähelepanuväärset, et see tegevus sageli raskusi valmistab.2.2.2 Konkreetselt abstraktseleKäesolev punkt analüüsib, kuidas teadmisi omandatakse ja konstrueeritakse ning tuginebarutlustes analoogiatele arengupsühholoogia klassikalistest teooriatest.Õpikus Arengupsühholoogia alused [Butterworth] on Võgotski teooriat keele ja mõtlemisevahelistest seostest selgitatud järgnevalt: “Võgotski arvates toimub arenguline progressioon,mis saab alguse sotsiaalselt tasandilt - täiskasvanu ja lapse vahelistest suhetest, jõuab27


sisemise dialoogini ning lõpuks verbaalse mõtlemiseni.” Võgotski on öelnud: ‘Keel onmõtlemise tööriist.’Nagu kõik lastega kokku puutunud inimesed ja erialaspetsialistid teavad, toimub keele jamõtlemise koosareng umbes järgnevalt: Alguses saadab lapse tegevust täiskasvanu kõne,kommenteerides, iseloomustades ja kirjeldades toimuvat. Pärast seda, kui lapse kõne jamõtlemine on nii kaugele arenenud, et laps moodustab ise lauseid, saadab ta ise oma tegevustkõnega - jutustab kaasa oma toimetustele. (Näiteks võib kolmeaastane mosaiikpilti kokkupannes selgitada endamisi iga tükikese juurde, kas ja miks see ühte või teise kohta sobib võiei sobi.) Lapse kasvades ja arenedes tegevust saatev kõne internaliseerub - muutubsisekõneks. Pärast seda saab laps sooritada tegevusi, kommenteerides oma tegevusi ainultmõttes, seda nimetatakse ka verbaalseks mõtlemiseks. Ning hiljem, kui tegevused onmuutunud juba oluliselt tuttavamaks ja igapäevasemaks, toimuvad vastavad liigutusedautomaatselt ning tegevust ei saada ka enam sisekõne (neid võib koguni saata kõne hoopisteisel teemal).Kindlasti on kõik tähele pannud, et sarnane kõne tugi mõtlemisele leiab aset ka vanematelaste ja täiskasvanute õppeprotsessis - alguses saadab tegevust juhendaja või õpetaja kõne,seejärel (kui tegevus on tõepoolest vaimset pingutust ja keskendumist nõudev) õppija endakõne, mis aitab hoida mõttejärge ja arutlust tegevuse juures, enamasti korrates juhendajasõnastust. Mõne aja pärast aga, kui uus oskus on omandatud, saab õppija sellega hakkama,vajamata igasugust teemakohast kõnet.Loomulikult leiavad kirjeldatud arenguetapid vanema õppija puhul aset oluliselt kiiremini kuiväikelastel ning pole sageli nii kergesti väljastpoolt jälgitavad, kuid sarnased etapid siiskipaistavad toimuvat.Üks oluline arengutrend, mis leiab aset väikelaste mõtlemise arengus ning mida ontäiskasvanute õppes oluliselt raskem jälgida kui keelt, on konkreetsete tegevuste ja nähtustekogemise muutmine abstraktseteks arusaamadeks. Alguses vajavad väikelapsed ja ka algajadõppijad palju konkreetseid selgepiirilisi käegakatsutavaid näiteid, millega eksperimenteeridaja mille kohta tähelepanekuid teha. Seejärel (väikelastel pikema aja järel) saavad tekkidaniisugused ühendused teadmiste, kogemuse ja mõtlemise vahel, et õppija suudab õpitavalteemal arutleda abstraktsel tasandil. Seega võiks olla tulemuslik noorte ja täiskasvanudõppijate puhul samuti arvesse võtta laste arenguetappidele sarnaseid mustreid: näitekstoetades õppijaid ja varustades neid spetsiifilisemat tüüpi materjaliesitusega just vastavaltnende nö arenguetapile. Ka programmeerima õppimisel.28


Konkreetsete nähtuste ja vahetu kogemuse olulisust õppimisel on rõhutanud ka paljudaktiivõppe ja konstruktivismi pooldajad. Joonisel 2.11 on näiteks näha David Kolb’i loodudeksperimentaalse õppimise mudel.Joonis 2.11 Eksperimentaalse õppimise mudel [Learning theories]Eksperimentaalse õppimise mudel koosneb neljast etapist: konkreetne kogemus (1), vaatlus jareflektsioon (2), abstraktsete ideede moodustumine (3), uues olukorras testimine (4).Tegemist on spiraalse õppimisega - pärast ringi läbimist alustab õppija ringi algusest, aga niiöeldakõrgemal tasemel. Kolbi eksperimentaalse õppimise mudel on terviklik õppimiseteooria, mis ühendab kogemuse, taju, mõtlemise ja käitumise. Kolbi järgi on õppimineprotsess, kus teadmised luuakse läbi kogemuse.Millestki seesugusest räägib ka Seymour Papert - programmeerimiskeele LOGO looja, keskasutas programmeerimist, et õpetada koolilastele matemaatikat. Raamatus Mindstorms:Children, Computers, and Powerful Ideas [Papert] kirjutab Papert: “Näiteks lapsed õpivadrääkima, õpivad ruumis liikumisega toime tulekuks vajalikku intuitiivset geomeetriat ningvanematega toime tulekuks vajalikku loogikat ja retoorikat - seda kõike ilma ‘õpetuseta.’ Mepeame küsima, miks osa õppimist leiab aset nii vara ja spontaanselt samal ajal, kui osahilineb mitu aastat või ei toimu ilma tahtlikult rakendatud formaalse instruktsioonita üldse.”Õppimisteooriat, mis tugineb Piaget’ teadmiste konstrueerimise mudelile ja mis rõhutab, etõppimine toimub kõige efektiivsemalt, kui inimene osaleb aktiivselt reaalse maailma ainelisteobjektide loomisel, nimetatakse ka konstruktsionismiks.[Wikipedia: constructionism]Arvatavasti leiab kirjeldatud mudel rakendust ja mõtet just pigem abstraktsete, mõttelisteteadmiste omandamisel - jalgrattasõitu päris nii ei õpi. Samuti on ilmne, et väga lihtsate29


(kuigi abstraktsete) ideede omandamisel ei ole teadmiste omandamise mitme-etapiliselmudelil kujutamine ja analüüsimine põhjendatud ega vajalik.Programmeerimine, nagu ka matemaatika võib olla väga abstraktne ja mõtteline. See, midaprogramm teeb, ei ole programmeerija poolt otseselt vaadeldav. Muidugi saab programmeluues programmiteksti lisada rohkelt programmi töö kulgemisest nähtavaid märke edastavaidkäsklusi (näiteks printida iga tsüklisammu järel välja tsükliindeksi), kuid see on esiteks pigemmitteloomulik ning teiseks ei pruugi paljud õppijad sellest kasu saada.Üks võimalus programmi töö konkreetsemaks muutmisel on Paperti loodudkilpkonnagraafika - programmi käsud juhivad virtuaalsel valgel väljal ‘kilpkonna,’ kellekäikudest jääb väljale joon. Nii saab programmikäskude abil joonistada arvutiekraanilekujundeid või mustreid. Praeguse programmeerimiskursuse kavas on kilpkonnagraafikalepühendatud ainult lühike osa ning seda ei kasutata jooksvalt kui programmeerima õppimisttoetavat vahendit. Samuti jääb kilpkonn pigem abstraktsete asjade maailma, olles kõigest suurvalge kolmnurk arvutiekraanil ning selle rakenduslikkus võib kergesti jääda arusaamatuks.Seega keerukate kõrgel tasemel teadmiste, nagu programmeerimisoskus, omandamiselleiavad aset lapse arenguga sarnased etapid ning võib oodata, et seda arvesse võttes saabmuuta õppeprotsessi efektiivsemaks ja seeläbi aidata õppijaid üle õppimisel tekkivatestraskustest. Teatavasti suudavad kõik õppida programmeerima.2.2.3 Uskumused, mis takistavad õppimistUskumus on meeleseisund, kus inimene peab mingit eeldust või ettepanekut tõeseks[Wikipedia: belief]. Uskumused võivad olla enda kohta, teiste inimeste kohta, maailma, omategevusvaldkonna - põhimõtteliselt kõige kohta, millega inimene kokku puutub. Oluline oneristada uskumusi reaalsusest või tõest: erinevatel inimestel võib olla sama nähtuse kohtaerinev või lausa vastupidine uskumus, kusjuures mõlemad peavad (nagu definitsioongi ütleb)enda uskumust tõeseks.Käesolev punkt tutvustab Carol S. Dweck’i poolt 2006. aastal ilmunud raamatus Mindset:The New Psychology of Success [Dweck: mindset] kirjeldatud teooriat. Dwecki teooriatugineb ideele, et inimesed saab tinglikult jagada kahte gruppi selle järgi, millised on nendeuskumused oma võimete ja omaduste päritolu kohta. Neid uskumusi nimetatakse raamatusmindset’ideks, mida võib eesti keelde tõlkida kui mõtteviis või meelelaad. Pigem meelelaad:“meele-”, sest uskumused on pigem teadvustamata ja vähe seotud mõtlemise ja ratsionaalsearutlusega ning “-laad”, sest see sõna rõhutab teooria klassifitseerivat iseloomu.30


Osa inimesi on veendunud, et nende vaimsed võimed on fikseeritud suurus - miski, mida nadise oluliselt muuta ei saa. Seda nimetatakse fikseeritud meelelaadiks (fixed mindset).Fikseeritud meelelaadiga inimesed selgitavad sageli oma õnnestumist või ebaõnnestumistnendest endist mitte sõltuvate nähtuste abil: näiteks geenid, kodune kasvatus, tähtkuju võiisiksusetüüp.Teine grupp - kasvu meelelaadiga (growth mindset) inimesed - on veendunud, et nendevaimsed võimed on muutuv suurus ja et igaühe sooritus sõltub eelkõige tema endajõupingutusest. Oma õnnestumiste või ebaõnnestumise taga näevad nad pigem oma tööd javaeva kui väliseid tegureid. Kasvu meelelaadiga inimesed armastavad väljakutseid jatunnistavad julgelt oma vigu, sest vigadest õpitakse.Suurim erinevus fikseeritud meelelaadi ja kasvu meelelaadiga inimeste vahel ilmnebolukorras, kus nad on seatud raskustesse - kus lahendus ei ole kohe läbi nähtav jaebaõnnestumine on tõenäoline. Fikseeritud meelelaadiga inimene näeb raskusi kuimõõdupuid nende fikseeritud võimekusele. Ebaõnnestumine näitaks, et nende (enda silmismuutumatud) võimed on mittepiisavad, vaeva nägemine raskuste ületamiseks aga tähendaksenda nõrgaks tunnistamist. Sellised uskumused viivad sageli allaandmiseni ja kindlasti mittesoovitud tulemuseni.Kasvu meelelaadiga inimene näeb raskustes võimalust areneda ja õppida. Ebaõnnestuminetähendaks, et ta peaks rohkem vaeva nägema - kauem harjutama, paremini keskenduma võimingit uut moodi lähenema. Vaeva nägemine raskuste ületamiseks on oma võimeidarendatavaks pidavale inimesele lihtsalt järjekordne võimalus õppida ja paremaks saada.Võiks arvata, et fikseeritud meelelaad takistab edukas olemist eelkõige ‘madalamatevõimetega’ inimestel, kes mingitel arusaadavatel põhjustel end ‘lolliks peavad.’ Sest andekadja targad inimesed on (vähemalt oma intellekti suhtes) enesekindlad ning ei tohiks kartaebaõnnestumisi. Katsed näitavad aga vastupidist. Artiklis Is Math a Gift (Kas matemaatika onanne?) [Dweck: math] kirjeldatakse põhikooli õpilaste seas läbi viidud eksperimenti.Eksperimendi käigus anti õpilastele õppida uus ülesanne, kusjuures poole grupi jaokspaigutati mingit segadusseajavat materjali üsna algusesse. Selgus, et targad tüdrukud eitulnud segadusega sugugi hästi toime. Koguni - mida kõrgem tüdruku IQ, seda kehvemini talläks. Paljud kõrge intelligentsusega tüdrukud ei olnud võimelised õppima pärastsegadusseajavat kogemust. Kuna kõrge IQ-ga tüdrukud, kelle ülesande alguses ei olnudsegadusseajavat momenti, tulid ülesandega suurepäraselt toime, pole tegemist võimeteerinevusega vaid erinevusega selles, kuidas õpilane tuleb toime kogemusega, mis võib temavõimekuse küsitavaks seada.31


Dweck rõhutab oma raamatus ka, et fikseeritud meelelaad on sageli inimestele ‘õpetatud’ läbipositiivsete või negatiivsete siltide omistamise. Väga sageli last kiites, teda targaks jaandekaks nimetades, antakse talle sõnum, et tema omadused on kindlaks määratud, ta peabvastama ootustele ja on kiitust väärt ainult perfektsena. Sellises maailmapildis on vähe ruumivigadele, rääkimata nendest õppimisele. Dwecki sõnul ilmnevad fikseeritud meelelaadi andvatagasiside negatiivsed mõjud juba ühest lausest koosneva kommentaari tegemisel õpilasetööle.Arutledes uskumuste mõju üle õpingutes arvutiteaduste valdkonnas, kirjutavad LaurieMurphy ja Lynda Thomas artiklis Dangers of a Fixed Mindset: Implications of Self-theoriesResearch for Computer Science Education [Murphy] järgnevalt: Sissejuhatavaprogrammeerimiskursuse tudengid astuvad vastamisi paljude katsumuste ja negatiivsetagasiside tulvaga: võõrad tööriistad ja keskkonnad, krüptiline süntaks ja lahendamisaegsedveateated, tabamatute loogikavigade poolt põhjustatud valed väljundid. Kasvu meelelaadigatudengid näevad veateateid ja raskusi kui võimalust õppida. Samas kui fikseeritudmeelelaadiga tudengid kalduvad liigset negatiivset tagasisidet tõlgendama väljakutsena nendeintelligentsusele ja edaspidi neid olukordi vältima [CS mindsets].Tähelepanekuid programmeerimise omadusest olla algajate jaoks segadusseajav javäljakutseid esitav, on kindlasti teinud kõik, kes on kokku puutunud õpetamise võiprogrammeerimisega. Samuti sai programmeerima õppimise eripärasid tutvustatud eelnevatespunktides (vt 2.2.1 ja 2.2.2). Seega on ilmne, et programmeerimine on üks nendestõppeainetest, mis valmistavad paljudele õppijatele raskusi.Punktis 2.1.2 oli lühidalt juttu 2010/2011 õppeaastal programmeerimisega algust teinudtudengite seas läbi viidud küsitlusest. Küsitlus sisaldas muuhulgas küsimusi, selgitamaksvälja, mida peavad tudengid oma edu ja ebaedu põhjuseks programmeerimises. Tulemustejagunemist illustreerivad üldiselt joonis 2.12 ja joonis 2.13.32


Joonis 2.12 Vastuste jagunemine küsimusele edukuse kohtaJoonis 2.13 Vastuste jagunemine küsimusele edukuse piiratuse kohtaVaatame nüüd, milliseid vastuseid võib tõlgendada kui märki fikseeritud meelelaadist.Tuletame meelde, et fikseeritud meelelaadiga inimene näeb oma tulemuste taga väliseid,temast mitte sõltuvaid tegureid ning ei pea jõupingutust ja õppimist oma soorituse juuresoluliseks. Sellest lähtudes on joonisel 2.12 kujutatud vastustest fikseeritud meelelaadileomased väited nagu ‘ma olen iseenesest väga tark’ ja ‘programmeerimine ongi lihtne.’Vähest edu seletavatest vastustest (joonisel 2.13) võivad viidata fikseeritud meelelaadile kõik‘ma ei saanud aru...’ tüüpi vastused, samuti ‘ülesanded olid igavad’ ja ‘programmeerimineongi raske.’ Seega võiks arvata, et umbes 13% tudengitest seletavad oma edu ja 23% ebaedupigem fikseeritud meelelaadis arutledes. Lisaks on tähelepanuväärne joonisel 2.13 kujutatudvastuste hulgas ‘muu’ vastuse populaarsus. Nagu juba eespool sai mainitud, on pea kõik33


vastajate poolt ise sisestatud vastused sellele küsimusele eitamaks igasugust edu - samuti ohumärk. Vastajaid, kes mõlema küsimuse vastuseks märkisid siin väljapakutud fikseeritudmeelelaadile viitava vastuse või jonnakalt oma edu eitava, oli umbes 8% kõigist vastanutest.Kasvu meelelaadist annavad tunnistust vastused, mis seovad edukust ainele pühendatud aja jakasutatud õpistrateegiatega (sh oskus guugeldada).Tegemist on loomulikult julge interpretatsiooniga, täpsemate hinnangute ja järeldustetegemiseks on kirjeldatud andmestik mõnevõrra ebapiisav. Samuti on oluline arvesse võtta, etteooria inimeste jagunemisest meelelaadide järgi kahte rühma on üldistus. Siiski mõningaidoletusi saab siin teha.Järelikult peaks olema kiitmisel tähelepanelik, mitte omistada silte, vaid juhtida tähelepanutehtud jõupingutusele. Õpetamisel (ka ülesannete tegemisel, tagasiside kogumisel) tuleksrõhutada töö ja vaeva nägemise olulisust. Mitte olla päris hooletu andekate tudengite suhtes jahätta jäänud tudengitele võimaldama lisaülesandeid või -tegevusi, mis upitaksidenesekindlust ja annaksid pingutusele ligikaudu võrreldavas suurusjärgus eduelamuse.Muumipapa: “See on see nõks kirjutamise juures: lõpetada peatükk parajasti siis, kui onkõige õudsem.“ [Muumipapa memuaarid].34


3 KohvripraktikumKäesolev peatükk seletab lahti kohvripraktikumi mõiste ja pakub välja kohvripraktikumid,kui programmeerimise algõpetuse kursuse ühe osa. Lisaks vaatleme kohvripraktikumidevõimalikke teostusi, erinevaid viise kohvripraktikumide hindamiseks ja loomulikkevastuargumente sellele meetodile.Konkreetsete ülesannete ideedega, nende loomise protsessi ja ühe näidispraktikumiülesehitusega saab tutvuda peatüki viimastes punktides.3.1 Kohvripraktikum - praktikum kohvrigaKohvripraktikum on õppija enda poolt valitava toimumisaja ja -kohaga praktikum, millesooritamiseks vajalikud vahendid leiab kaasaskantavast kohvrist. Aja- ja ruumipiirangutevähendamine loob õppijale võimaluse teha oma tööd talle endale sobivas rütmis ja tempos,soodustades samal ajal iseseisvat ajajuhtimist. Traditsioonilisest suurema vabaduse javastutuse võimaldamine võib paljudel juhtudel mõjuda hästi õppijate õpimotivatsioonile jaseeläbi ka õpitulemustele ning üldisele rahulolule õppeprotsessiga.2010/2011 õppeaasta sügissemestril läbi viidud küsitlusest ja selle aluseks olnudhüpoteesidest oli juttu punktis 2.1.2. Nüüd vaatame lähemalt tudengite õppimisega seotudküsimuse vastuseid (vt joonis 3.1).Joonis 3.1 Suurem osa õppimisest toimub kodusNagu näha, on hüpotees, et enamus õppimisest leiab aset kodus, leidnud kinnitust, mis on kaüks tugevamaid argumente kohvripraktikumide toeks. Tudengid eelistavad õppida, harjutada,lugeda ja miks mitte ka katsetada, kodus. Kodus õppides saab valida töötamiseks sobivatempo, aja, taustamuusika ja meeleolu.35


Samale järeldusele on jõudnud ka Tallinna Tehnikaülikooli õppejõud Vello Kukk, kes onõpetab elektroonikat, kasutades laborikohvreid, mida tudengid saavad katsete tegemisekskoju laenutada. Ajakirjast Õpitrepp (talv 2010) võime lugeda: Kukke ajendas sellist sammuastuma arusaamine, et 90% õppetööst tehti kodus, mitte koolis. „Kodus pole ajapiiranguid,saab rahulikult mõelda ja teha,” mõistab Kukk tudengite soovi. [Õpitrepp]Programmeerimise algõpetuse toetuseks mõeldud kohvripraktikumid loovad õppijatelevõimaluse harjutada ja avastada programmeerimist kirjutades programme, mis juhivadväikeseid ratastel liikuvaid roboteid. Roboti saab tudeng enda valdusesse laenutatavaspraktikumikohvris. Robotitega koos programmeerimise õppimine leiab aset tudengile sobivaskohas ja sobival ajal.3.2 LEGO MINDSTORMS robotidMeelelahutuseks ja hariduseks ette nähtud robot-mänguasju on turul palju. Laste, noorte jahuviliste elektroonikakomplekte vahendav portaal Carl’s Electronics(http://www.electronickits.com/) loetleb robotite kategoorias ligi sada erinevatrobotiehituskomplekti. Suurem osa neist on juba programmeeritud robotid, mis sooritavadmingit lihtsat ette määratud tegevust. Näiteks robot, mis plaksutust kuuldes kõnnib 15sekundi jooksul edasi ja jääb seejärel seisma või konnakujuline päikesepatareidest laetavrobot, mis valguse kätte sattudes hüppama hakkab.Programmeeritavad robotid erinevad teistest robotitest selle poolest, et neid saab ümberprogrammeerida. Kasutaja saab ise määrata, mida ja millal robot tegema hakkab, samuti selle,kui kaua robot seda teeb ja kuidas. Programmeeritavate robotite hulka kuuluvad nii puldigajuhitavad robotkäpad kui arvutiga loodud programme lugevad robotid. Samuti (kui tullamänguasjade maailmast välja) on programmeeritavateks robotiteks seadistatavad videomakidja elektroonilised äratuskellad. Lühidalt - roboteid on palju ja väga erinevaid.LEGO MINDSTORMS NXT on Taani mänguasjafirma LEGO programmeeritav robot (vtjoonis 3.2). MINDSTORMS roboti aju ehk NXT on intelligentne arvutiga juhitav LEGOklots mis võimaldab MINDSTORMS robotil ellu ärgata ja erinevaid ülesandeid täita. NXT-lon kolm väljundiporti mootorite ühendamiseks ja neli sisendiporti andurite jaoks.Programmide lisamiseks ühendatakse NXT usb pordi kaudu arvutiga või kasutatakseprogrammide robotile edastamiseks traadita sinihamba ühendust. Viimast kasutatakse kakäesolevas töös kirjeldatud robootika praktikumides.Huvitav fakt: LEGO MINDSTORMS NXT robotid on oma nime saanud S. Paperti raamatuMindstorms [Papert] järgi, kus ta kirjeldab robotite programmeerimise abil lastele36


matemaatika õpetamist. Lisaks virtuaalsetele kilpkonnadele, millest oli juttu punktis 2.2.2,kasutas Papert ka füüsilises maailmas liikuvaid programmjuhitavaid masinaid. Temaraamatus nimetatakse neid vastavalt ekraanikilpkonn ja põrandakilpkonn.Joonis 3.2 LEGO MINDSTORMS NXT robot punasel malelaualLEGO MINDSTORMS NXT robot on konstruktormänguasi - komplekt sisaldab robotiehituseks vajalikke tükke, millest kasutaja paneb kokku roboti. Komplekti kuulub ka tarkvararobotite programmeerimiseks. LEGO poolt kaasa antud tarkvara näol on tegemist graafiliselohista keskkonnaga, mis peaks olema jõukohane ka lastele.Soodustamaks robotite sujuvat kasutuselevõttu tudengite poolt ja kasutamaks ära kõikiPythoni avaraid võimalusi ilma graafilise keskkonna raamideta, oleks siiski tarvis robotitejuhtimist Pythoni programmi abil, soovitatavalt võimalikult vähese vaevaga. Ülari Teder’ibakalaureusetööst võime lugeda: Lihtsalt öeldes kujutab teek endast hulka mooduleid javalmisfunktsionaalsust, mida kasutades saab kergema vaevaga luua uusi programme. [...]PyBluez täiendab Pythoni standardteeki selle võrra, et lubab arendajatel lihtsalt ja kiirestiluua sinihamba rakendusi. Nxt-python kasutab omakorda ära PyBluez teegi sinihambaressursse ja võimaldab programmeerijale NXT roboti mootorite ja andurite kaugjuhtimist[Teder].Seega leiduvad niisugused täiendused Pythonile, mille abil saab arvutis kirja pandud Pythoniprogrammi edastada läbi sinihamba robotile, kes antud programmi ellu viib.37


Juhend arvuti ja roboti ühendamiseks sinihamba kaudu ning samuti teegi PyBluezpaigaldamiseks on lisas 1.Nüüd, olles robotiga tuttavad, liigume edasi robotitega praktikumide sisu poole: uurimevõimalikke kohvri sisusid ja praktikumi sooritavate tudengite töökorralduse ning hindamisemeetodeid. Lisaks vaatame mõningaid kohvripraktikumi idee kitsaskohti ja võimalikke riske.3.3 Kohvripraktikumi võimalikud tehnilised teostusedKohvripraktikume võib teostada mitmel moel - varieerida saab tudengile antud aega, tehnikahulka, konkreetset tehnikat, praktikumide sooritamise kohta ja kindlasti muudki.Järgnevalt vaatame Ülari Teder’i bakalaureusetööle [Teder] tuginedes kahtekohvripraktikumi võimalikku teostust - kohver sülearvutiga ja ilma. Analüüsime mõlemateostuse tugevaid ja nõrku külgi, lähtudes aspektidest nagu mugavus tudengile, tudengimateriaalsed võimalused, mugavus õppejõule, hind ja riskid õnnetuse korral.Kuna kohvripraktikumide esialgne korraldus näeb ette, et praktikumid on vabatahtlikud ningtudengid avaldavad ise soovi nende tegemiseks, on kohvrite kasutamise mugavus tugevargument. Kohver, mis sisaldab ainult robotit, mälupulka vajalike <strong>fail</strong>idega ja sinihambaseadet, kaalub vähe ja võtab vähe ruumi. Sülearvuti lisamine kohvrisse tõstaks kohvri kaaluja suurust oluliselt ning see võib paljudel puhkudel saada tudengi silmis argumendikskohvripraktikumi vastu - eriti kuna paljudel tudengitel on igapäevaselt juba enda sülearvutiõppehoones kaasas.Asjaolu, et paljudel tudengitel on oma sülearvuti, räägib samuti kohvrisse sülearvuti mittekaasamise poolt. Samal ajal ei saa sülearvuti omamist siiski iseenesest mõistetavalt võtta,kuna 100% tudengeid siiski isiklikku arvutit ei oma, seda enam, et suurem osaprogrammeerimise kursuse tudengeid on esmakursuslased.Tudengi mugavuse huvides tuleb sülearvuti kohvrisse kaasamine kõne alla ka seoses vajalikeprogrammide paigaldamisega. Selleks, et saavutada tulemus, kus arvutis käivitatud tudengienda loodud programm hakkab juhtima robotit, on vaja arvuti korrektselt seadistada (vt 3.2 jalisa 1). Ülikoolipoolne kohvrisse kaasa pandud sülearvuti oleks loomulikult eelnevaltseadistatud ning töökorras ja seadistamisega seotud probleemid jääksid ära - tudeng saakspikema ettevalmistuseta tööle asuda.Teiselt poolt, kui mugavuse küsimuse alla võtta ka õppejõu mugavus, siis kohvrisse lisatudsülearvuti toob kaasa lisatööd. Välja laenatavad arvutid, mida eeldatavasti aktiivseltkasutatakse, vajavad hoolt. Enne igat laenutamist peab olema tagatud, et vahepeal kasutuses38


olnud arvuti on jätkuvalt töökorras. Arvutite töökorra kontroll ja tekkivate probleemidelikvideerimine on aga lisatöö juba niigi suure koormusega õppejõududele.Viimase argumendina vaatame materiaalseid riske ja võimalusi.Ilmselgelt on sülearvuti suur väljaminek, selle lisamine praktikumikohvrisse tõstaks kohvrihinda oluliselt. See tähendab, et koolil peaks olema vahendeid, soetamaks piisaval hulgalroboteid ja sülearvuteid, millest viimased peavad olema niisuguse võimekusega, mis lubabpraktikumi ülesandeid sooritada. Loomulikult kasvavad arvutite kasutamisel ja väljalaenamisel ka riskid - nii õnnetusjuhtumite korral kui mõne pahatahtlikkuse puhul.Üks võimalus sülearvuti-dilemma lahendamiseks, on kohvripraktikumide läbiviimisekskoostada kahte sorti kohvreid - suurem osa kohvreid ilma sülearvutita ja mõned üksikudkohvritest sülearvutiga. Erinevate kohvrite valikust laenutatakse siis tudengile kohver, võttesarvesse tema võimalusi - kas tal on sülearvuti, kas ta on huvitatud oma arvuti seadistamisestjne. Sellisel juhul saaks maksimaalselt ära kasutada tudengitel olemasolevaid arvuteid,tagades neile mugavuse ja leevendades õppejõududele lisanduvat koormust.Loomulikult võib kohvripraktikumide tehnilise teostuse osas arutleda veel paljude aspektideüle. Kindlasti peaks teostuse planeerimisel arvesse võtma kõigi osapoolte soove, vajadusi javõimalusi, unustamata seejuures ära kohvripraktikumide missiooni - toetadaprogrammeerimise algõpetuses raskustesse jäänud tudengite õppimist.Järgmises punktis analüüsime mõningaid võimalusi kohvripraktikumide hindamiseks.3.4 Kohvripraktikumide hindamineHindamine on õpetamise ja koolitamise vältimatu ning oluline osa täites tagasiside andmisetähtsat rolli nii õppijale kui õpetajale. Hindamine annab õpetajale ettekujutuse õppijate edustja raskustest ning selgitab, kas tema töö on kandnud vilja. Õppijale annab hindaminetagasisidet tema edukuse kohta ning hästi organiseeritud hindamise puhul motiveerib jajulgustab end edasi arendama ja täiendama aladel, mis seda veel vajaksid.Õppetegevusi planeerides ei tohiks jääda hindamiskeskseks - lähtuma peaks õppeeesmärkidest ja õpiväljunditest. Kursust või õppetükki kokku pannes ei tohiks sisu piirata see,mida me saame või ei saa mugavalt formaalsete meetoditega hinnata. Veel võiks hindamistplaneerides mõelda sellele, et hindamine võimaldaks ammendavat mitmekülgset tagasisidet jarahuldust kõikidele osapooltele.Käesolev alapeatükk arutleb erinevaid hindamise meetodeid, mis võiksid kõne alla tullaprogrammeerimise algõpetust toetavate kohvripraktikumide läbiviimisel. Meetoditetugevamad ja nõrgemad küljed tuuakse esile.39


Esimene võimalus kohvripraktikumide hindamiseks on enesehindamine - tudengile antakseülesanded ja õppematerjalid ning pärast nende läbitöötamist võib ta täita enesetesti või läbimõelda mõned etteantud arutelupunktid - see tähendab, et tudengile luuakse võimalus õppida.Ka võib enesehindamine olla teostatud täiesti mitte-formaalselt - nii, et tudeng ei sooritapärast kohvripraktikumi läbimist mingeid teste ega mõõtmisi, kuid tunneb end läbitudteemades loodetavasti enesekindlamalt. Mitteformaalne enesehindamine toimub eeldatavastiigal juhul, sest oma tegevustele hinnangute andmine on teadliku õppimise loomulik osa.Selleks, et kohvripraktikumide läbimise edukuse kohta infot koguda, võivad õppetööläbiviijad korraldada kursuse lõpus küsitluse või lihtsalt teha järeldusi kohvripraktikumideüldise populaarsuse põhjal. Formaalne hindamine ja organiseeritud testimine ei ole ainus viisõppetegevuste kohta tagasiside saamiseks.Teine võimalus kohvripraktikumide hindamiseks on traditsiooniline hindamine õppejõu võiõpetava assistendi poolt. Sel juhul sooritab tudeng talle kohvripraktikumiks antud ülesandedja pärast oma programmide testimist saadab programmitekstid õppejõule. Seejärel vaatabõppejõud tehtud töö üle ning omistab tudengile punkte või annab muul moel tagasisidettehtud tööle. Punktide omistamise puhul peaks tudengile juba enne ülesannete sooritamistolema kättesaadav hindamisjuhend, sest saladuslikud ilma taustsüsteemita hindenumbrid eianna õppimiseks ja arenemiseks vajalikku mitmekülgset tagasisidet.Õppejõupoolse hindamise esimene nõrk külg on lisatöö tekitamine, nõudes aega jakeskendumist nii lahenduste hindamisel kui hindamisjuhendite ja põhjendatud punktisüsteemiloomisel. Lisaks ei tohiks ära unustada, et robotiga programmeerimise idee on just selles, ettudeng näeb ise oma programmide tööd ning väline kontroll tema jõupingutustele pole seegatingimata vajalik ja on mõnes mõttes koguni üleliigne. Samas tuleks silmas pidada, ettudengid on huvitatud eksamile pääsemiseks vajalike punktide kogumisest ja kuikohvripraktikumid on hinnatavad, oleks loomulik, et tulemused lähevad kirja kogu kursusearvestuses. Seetõttu on formaalselt hinnatavate tegevuste sooritamiseks punktid ka heamotivaator ja robotite programmeerimisest saab seeläbi programmeerimiskursuse formaalneosa.Kolmas hindamise ja ka töökorralduse teostuse võimalus, mida siin vaatame, on rühmatöö jakaaslaste hindamine. Tudengid moodustavad 2-4-liikmelise rühma, lahendavad ülesandeidkoostööna ja hindavad hiljem iseend ja üksteist vastastikku. Tõenäoliselt kaasneks väikesepiiksuva kihutava roboti toomine ühiselamutuppa või puhkeruumi igal juhul elevust ja40


kaaslaste huvi, miks mitte siis seda praktikumide teostuses ära kasutada. Rühmas töötades ontudengid seatud olukorda, kus nad peavad endaga samal õppeastmel (võrdsele partnerile)selgitama ja põhjendama oma ideid ning see on teatavasti efektiivne viis õppimiseks. Lisakson ühiselt ülesannete lahendamine meeldiv. Võib oletada, et parem on, kui tudengilt ei nõuta,et ta oma rühmale lojaalseks jääks - iga kohvripraktikumi sooritamiseks võib moodustadaerineva koosseisu ja suurusega rühma.Tudengi enda ja tema rühmakaaslaste kohta tehtud hinnangute kogumiseks võib kasutada justselleks otstarbeks loodud küsimustikku või vabas vormis esseed. Samuti võib lasta tudengitelhinnata oma rühmakaaslasi etteantud hindamisjuhendi abil punktidega. Saadud punkte jahinnanguid võib mingil kujul kasutada ka kogu kursuse punktisüsteemis, soodustades sellegaraskustes olevate tudengite oskuste tõstmist eksamile pääsemiseks vajalikule tasemele..Seega hindamiseks on palju erinevaid võimalusi - kindlasti rohkem, kui siin välja pakutudvalik. See, milline hindamise meetod kasutusele võtta, sõltub kooli ja inimeste võimalustestja vajadustest. Lisaks võib kursuse jooksul kombineerida väljapakutud hindamismeetodeidvõi asendada kursuse edenedes ühe meetodi teisega.Järgnevalt tulevad arutlusele vastuargumendid kohvripraktikumide kasutamiseleprogrammeerimise algõpetuses ja võimalikud kitsaskohad selles idees. Tegemist on siiskisuhteliselt uuendusliku ja julge lähenemisega programmeerimise õpetamisele ning onoodatav, et see on saadetud kahtlustest, hirmudest ja loogilistest vastuväidetest.3.5 Loomulikud vastuargumendidInimestele ja tegelikult kõigile elusolenditele on loomupärane uut alguses veidi umbusaldadaja karta. Seni kogemata nähtused tõstatavad igas mõtlevas inimeses küsimusi. Otsusedmuutuste osas, mis tõenäoliselt saavad mõjutama paljude inimeste (õppe)tööd pikaks ajaksning on samal ajal ka majanduslikult kulukad, tuleks kindlasti läbi mõelda ka negatiivsetekülgede pealt. Käesolev punkt loetleb ja analüüsib mõningaid argumente kohvripraktikumidekasutamise vastu.Esimene ja ilmselt kõige loomulikum vastuseis kohvripraktikumidele on materiaalne risk.Kohvritesse paigutatud varustus maksab raha ja õnnetused juhtuvad. Lisaks võib arutledeskergesti jõuda oletusele, et kodus kohvripraktikumi sooritades on tudeng järelvalveta ja saabkergesti hooletusse või koguni pahatahtlikkusse laskuda.41


Suurendamaks vastutustunnet ja ennetamaks karistamatuse tunnetamist, tuleks tudengitelekohvreid laenutades läbi viia formaalseid protseduure - arvuti poolt hallatavasse süsteemikirja panna tudengi nimi koos isikukoodiga ja võtta tema kontaktandmed. Igal laenutuseloleks konkreetne eesmärk (läbida teema või kindel arv ülesandeid) ning süsteemis fikseeritudtagastuse tähtaeg. Sarnaselt nagu toimub raamatukogus laenutamine.Vestlusest Vello Kukega [Kukk] selgus, et tema aastatepikkuse praktika jooksul ei olekordagi juhtunud, et tudeng pahatahtlikkusest või hooletusest laborikohvri sisu lõhuks.Samuti ei ole ette tulnud olukorda, kus tagasi ei toodagi.Teise vastuargumendina lähtume tudengite vähesest aktiivsusest: kui kohvripraktikumid onvabatahtlik tudengi algatusest sõltuv tegevus, sõltub palju sellest, kas tudengid on piisavaltalgatusvõimelised, et abi saamiseks kellegi poole pöörduda. Juhul, kui peaks osutuma, ettudengid ei ilmuta huvi robotitega programmeerimise vastu, on kohvripraktikumide ideestvähe kasu. Kui aga peaks olema, et tudengite vähene huvi on osaliselt seotud hirmu võisegadusega, on palju, mida selle vältimiseks saab ära teha - hindamise ja laenutamiseprotsessi võib teha läbipaistvamaks, et ennetada segadust, robotitega seonduvat infomaterjalivõib teha kursuse materjalide hulgas kättesaadavaks.Loomulikult eeldab kõikide kaug- ja iseseisva õppe vormide kasutamine ajajuhtimise oskusi.Inimesed, kes töötavad kõige efektiivsemalt väliste motivaatorite ja kontrolli olemasolul,saavad vaevalt kasu kodus iseseisvalt sooritamise ülesannetest. Samal ajal tuleks siiskiarvesse võtta, et vähemat mingil osal tudengitest õppimiseks vajalik aja juhtimise jaenesedistsipliini võime on - paljud õpivad ju eelkõige kodus (vt 2.2.2). Lisaks on mõistlikoodata, et õppe- ja kasvatustegevus sisaldab ülesandeid, mis soodustavad iseseisvaajajuhtimisvõime kujunemist ka neil õppijatel, kes seda alguses ei valda ning harjutamineteeb meistriks (Inglise vanasõna).Viimase vastuargumendina vaatame väidet, et väljaspool klassiruumi sooritatud hindelistetegevuste puhul on väga kerge tulemusi võltsida. Võltsimine ja petmine on väga tõsineprobleem hariduses. Siiski ei maksaks arvata, et ainult kodus töötamine annab võimalusepetta. Sohki saab teha peaaegu igal õppeprotsessi etapil - kirjutada maha pinginaabri pealt,esitada vanema venna lahendatud ülesanded enda tööna või muud loomingulisemad skeemid.Tudengeid, kes saavad oma tulemused ebaausatel viisidel, saab kahjuks alati olema. See agaei tohiks olla piisav põhjus mitte rikastada õppeprotsessi, sest eeldatavasti suurem osatudengeid on kursusel siiski siira sooviga õppida ja saada paremaks.42


Üks lihtne võimalus ennetada petuskeeme punktide saamiseks on kohvripraktikumide eestmitte punkte anda vaid kasutada punktis 3.4 kirjeldatud enesehindamise meetodit.Kohvripraktikumide kasutamine programmeerimise õpetamisel toob kaasa palju küsimusi javõimalikke probleeme. Õnneks on suurem osa nendest mõnevõrra ennatlikud ning neid saablihtsate võtetega leevendada või vältidaJärgmisena vaatame ühe kohvripraktikumi elutsüklit - praktikumide kursuselväljakuulutamisest kuni kohvri tagastamiseni.3.6 Konkreetse kohvripraktikumi näideÜhe kohvripraktikumi elutsükkel võib olla järgnev.Semestri alguses antakse tudengitele teada, et neil on võimalik teenida lisapunkte ja -teadmisi(või kui formaalset hindamist ei ole, siis ainult lisateadmisi), kui nad lahendavad mingikomplekti programmeerimisülesandeid LEGO robotitega. Kohvripraktikumide eest punktideomistamise eeskiri, juhul kui selle kasuks on otsustatud, kirjeldatakse muude kursuse kohtakäivate parameetrite hulgas. Info selle kohta, mis teemast alates kohvripraktikumideülesandeid leidub, mis on kohvripraktikumide kaugem eesmärk ja kelle poole pöördudakohvri saamiseks, antakse samuti semestri alguses.Tudeng (või tudengid, kui praktikumide teostuse osas on otsustatud grupis töötamise kasuks)pöördub isiklikult või selleks otstarbeks mõeldud süsteemi kaudu kohvreid haldava inimesepoole ja saab allkirja vastu kindlaks perioodiks enda valdusesse robotikohvri. Kui kohvreidon kasutusel mitut tüüpi (näiteks sülearvutiga ja ilma), toimuvad enne kohvri laenutamistläbirääkimised tudengi võimalustest ja vajadustest.Tudeng viib kohvri koju, paigaldab juhendite abil vajaliku tarkvara, kui selle järele onvajadus ja teeb robotiga katseid. Kui praktikumide eest saab punkte, edastab tudeng omaprogrammiteksti praktikumijuhendajale üle vaatamiseks. Selleks võib kasutada mõnd kursusttoetavat õpisüsteemi (näiteks Moodle) või e-posti.Pärast praktikumi läbimist annab tudeng selleks ette nähtud küsimustiku abil tagasisidet omarahulolu, omandatud oskuste ja teadmiste ja muu kogemuse kohta seoses praktikumiga. Kiiretagasiside kogumine on iseäranis oluline esimesel semestril, kui kohvripraktikumekasutatakse, sest see võimaldab kohvripraktikumide korralduses teha parandusi ja langetadaotsuseid nende efektiivsuse osas.Kui ülesanded on lahendatud ja esitatud ning praktikum tagasisidestatud, tagastab tudengkohvri ja annab teada probleemidest, kui neid esines. Õppejõud teeb kindlaks, et kohver on43


tagastatud esialgses seisundis. Kui praktikumid kuuluvad õppejõupoolsele hindamisele,tagasisidestab õppejõud tudengi töö.Kohver on valmis toetama järgmise tudengi programmeerimaõppimist.Loomulikult võib praktikumide käiku lisada veel etappe või mõnda eelkirjeldatust ära jätta.Kindlasti peaks robootika praktikumide täies hiilguses kasutuselevõtule eelnema pikk japõhjalik testimise periood, kus katsetatakse erinevaid teostuse variante, võetakse arvesseainet õpetavate õppejõudude professionaalset arvamust ja kogemust ning praktikume jubaläbinud tudengite tagasisidet. Valima peaks niisuguse kombinatsiooni teostuse etappidest,kohvrite komplektidest, hindamismeetoditest ja muudest parameetritest, et tagatud oleksvõimalikult efektiivne tugi tudengite õppeprotsessile samal ajaal võimalikult väikeselisakoormusega õppejõule.3.7 Ülesanded robotiteleKäesolev punkt toob välja loetelu lähtepunkte, millele tuginedes kohvripraktikumi ülesandeidkoostada. Robotitega ülesannete lahendamise eelis võrreldes ‘tavalise’ programmeerimisegaseisneb roboti töö konkreetses selges jälgitavuses, sealjuures piisavalt aeglaselt, et ka algajajõuab kaasa mõelda. Lisaks on robotitega katsetamine meeldiv vaheldus traditsiooniliselearvutiklassis programmeerimisele.Seega ei ole mõtet robootika praktikumi jaoks koostada ülesandeid, mis on arvutigalahendades umbes sama põnevad, konkreetsed ja selgelt jälgitavad. Vahendit tuleks alati justeesmärgipäraselt ära kasutada. Vahend ise ei ole eesmärk.Lisaks tuleks ülesannete koostamisel arvesse võtta nende raskusastme sobivustprogrammeerimise kursuse ja tudengite tasemega - seda eriti juhul, kui robotiga lahendatudülesannete eest soovitakse tudengitele motiveerivaid väärtuslikke punkte anda. Veel võiksidolla ülesanded sellised, et nende tulemus on selgelt jälgitav ja robotitega reaalselt tehtav.Ülesandeid peaks olema iga teema kohta piisavalt palju ja piisavalt paljude teemade kohta.Järgnevalt lühike ideepank programmeerimisülesannetest, mida võiks lahendada robotiga,millel ei ole andureid.44


3.7.1 Ülesannete esialgsed ideed1. Ava programm proov.py ja käivita see. Jälgi toimuvat.Muuda käsu paremale parameetrit n nii, et robot teeks liikudes täisnurksepöörde.a. ... et robot teeks 180-kraadise pöördeb. ... et robot teeks 360-kraadise pöörde>> See ülesanne on robotiga tuttavaks saamiseks ja olemasolevate tingimustega(sõidupind, rattad, mootorid, inerts) kohanemiseks.○ Muuda käsu edasi parameetrit nii, et robot sõidaks võimalikult täpselt mingietteantud vahemaa (näiteks vahemaa kahe tooli vahel).2. Robot sõidaba. ühe ringib. ümber kohvric. edasi ja tagasi3. Robot sõidaba. kolm ringib. neli ringic. viis korda edasi-tagasid. <strong>fail</strong>ist sisse loetud juhendite järgi4. Robot sõidab 5 korda edasi-tagasi. Iga kord tagasi tulles ütleb piiksudega, kui paljukordi tal veel sõita on jäänud / mitmes kord see sõita olia. mõlemas distantsi otsas pöörab end ümbervõib. tagasiteel tagurdab5. Robot sõidab öösel raamatukogust koju mööda mängu-kõnniteed, mille ääres onlaternate rivi (2-4 laternat). Kasuta laternate tähistamiseks näiteks õpikuid,limonaadipurke, legoklotse või toanaabreid. Iga laterna ümber teeb robot tiiru enne,kui jätkab oma teekonda mööda kõnniteed.6. Kirjuta alamprogramm, mis sõidutab robotit ühe tiiru ümber kohvri.7. Kirjuta alamprogramm, mis sõidutab robotit etteantud arv kordi ümber kohvri.8. Robot sõidab lõputult ümber kohvri.a. Robot keerutab koha peal ennastunustavalt9. Valss. Pikk edasi sõitmine, kaks lühikest edasisõitmista. Proovi muusikasse ka: http://youtu.be/CShopT9QUzw10. Rumba ruut - alamprogrammina. Aeglane-kiire-kiire. Robot sõidab: aeglaselt edasi,kiiresti paremale ja stopp. Aeglaselt tagasi, kiiresti vasakule ja stopp. Ruudu lõpukson robot näoga esialgses suunas.11. Olgu robotil bensiinipaak. Robot sõidab ümber kohvri kuni paak tühjaks saab. Paagisisu väheneb 1 ühiku võrraa. iga ringi järelb. iga kolme sekundi järelc. iga läbitud meetri järelKui bensiinipaak saab tühjaks, jääb robot seisma.45


12. Kassimänguasi (ehk ‘Mu robotil vist kruvid logisevad’). Robot sõidab lõputult möödatuba, suvaliste hetkede tagant pöörab suvalises suunas suvalise aja, piiksatab suvaliselsagedusel ja jätkab sõitu. Sõitmine, piiksumine ja pööramine toimuvad kogu aeg ühesjärgnevuses. Vahemikke ette andes võta arvesse oma toa suurust - liiga kõvasti vastuseina sõitmine võib robotit vigastada (seda me ei taha).46


Kokkuvõte ja tulevikuplaanidPõhjalikult on analüüsitud programmeerimiskeelt Python ja selle erinevaid tahke. Uuriti,mida tudengid saavutavad kursuse käigus ja mida nad arvavad pärast seda, kui neil on kursusläbitud või läbimata jäänud. Kirjandusega tutvuti, kusjuures osa kirjandust oli pigemarvutiteaduse valdkonnast ja osa oli õpetamisest üldisemalt, lisaks veel sellised, mis olidarvutiteaduse õpetamisest. Kirjanduse põhjal on mitu teooriat arutlusele võetud, neid üldiselttutvustatud ja seotud programmeerimise õpetamisega. Mingitele järeldustele jõuti nii põhjustekui lahenduste osas. Raamistik uuendusteks programmeerimise kursusele on töö ükspraktilisemaid tulemusi. Samas on loodud raamistik pigem mõistlik ja loogiline, ilmasuuremate ootamatuste või väga radikaalsete ettepanekuteta ainekorraldusele, puudutadespigem tugiteenuseid.Olulisim mõjutaja oli kindlasti Dwecki raamat Mindset, mis andis konteksti paljudele jutuksolnud nähtustele. Seda ka retrospektiivselt ning sellest raamatust ja teooriast üldse võikssaada kõigi inimeste juhtnöör ja tuleviku hariduse uuendaja.Tegelikult sai läbi töötatud oluliselt rohkem materjale, kui neid töös on kajastatud. Üllatusümberlükatud hüpoteesidest ja tõeliselt humanistliku pilgu heitmisel ka ebaõnnestuvatetudengite õppimise sisemaailma on tulevase õpetaja jaoks oluline väärtus.Hästi oluline on, et rekursiooni õpetamine võetaks ülevaatamisele. Kahjuks on see on paljusuurem probleem, kui käesoleva töö raamidesse võiks mahtuda. Eeltöö rekursioonile väärilisetähelepanu saamiseks on nüüd tehtud – rekursiooni (kohati ületamatu) raskus on välja tulnudnii küsimustikust kui punktidest. On aeg küsida: Kui rekursioon poleks nii raske, mis oleksteisiti? Mis oleks parem? Nüüd jääb üle ainult hakata uurima rekursiooni õpetamisealternatiivseid võimalusi. Võimalik, et just robotitest saab siin lahendus.Veel võiks täpsemalt uurida tudengite meelelaadi ja teha õpetamisel püüdlusi kasvumeelelaadi kujunemiseks. Praegune uurimise viis oli veidi pinnapealne ja tulemused ei annapiisavalt selget ettekujutust ei tudengite meelelaadist ega nende tagajärgedest.Lõppude lõpuks on palju sellist, mida me ei saagi või ei oska muuta. Mingeid asju polegivõimalik mõista ega teada - ja võib-olla parem ongi.47


TänusõnadAitäh Ülle Holmile, kes selle töö jaoks saatis tabeli varasemate aastate hinnetega. AitähVarmo Venele, kes leidis aega, et võtta Moodle'ist tudengite punktid ja andis näpunäiteidpunktitabeli lugemiseks. Töö loetavaks ja arusaadavaks muutmisele aitasid kaasa Ave-MariDuvin, Taavi Duvin, Agnes Joala, Robert Peetsalu. Aitäh. Veel tänan neid 145 üliõpilast, kesoma pingelise õppetöö kõrvalt leidsid aega, et vastata küsimustikule.Eraldi tahaksin tänada oma ema, kes võttis töö kirjutamise lõpusirge ajaks enda hoole alla mueelkooliealise lapse.Ja veel erilisem tänu Robotiteatrile, kelle sülearvuti asendas viimased kuu aega minutöövõimetuks muutunud arvutit.Kõik, mis on hästi, on tänu headele inimestele mu ümber. Kõik, mis nii hästi ei ole, on minuinimlik viga.48


Robotics labs to support introductory programming course“For people in the teaching professions, the word ’education’ tends to evoke ’teaching,’particularly classroom teaching. The goal of education research tends therefore to be focusedon how to improve classroom teaching. But if the model of successful learning is the way achild learns to talk, a process that takes place without deliberate and organized teaching, thegoal set is very different,” writes Seymour Papert [Papert] in his book Mindstorms.Programming is gaining an increasingly important position in our world and has become anindispensable skill of many professionals. Introductory programming course raises manyinteresting questions about education, teaching, learning and motivation, and is therefore anexciting area of research.This thesis takes a look at computer science education using an introductory programmingcourse as an example. The results of recent years and feedback from students are taken intoaccount. The author has given the hypotheses and some analysis of found results.Programming is viewed through various theories of pedagogy and psychology, on the basis ofsuch classics as Bloom, Anderson, Dweck, Papert and others.The object of this work is to identify Python as the most suitable programming language forintroductory programming class; to analyze teaching results and student feedback; to exploreproblems and difficulties that emerge with learning to program; and to create a frameworkand assignment ideas for robotics labs that could support programming courses in the future.49


Kasutatud kirjandus[Anderson]A Taxonomy for Learning, Teaching and Assessing: A Revision of Bloom’sTaxonomy of Educational Objectives - Lorin W. Anderson, David R.Krathwohl, P. W. Airasian, K. A. Cruikshank, R. E. Mayer, P. R. Pintrich, J.Raths, M. C. Wittrock (New York [etc.] : Longman, 2001)[Bolton]David Bolton - About Compilers and Interpretershttp://cplus.about.com/od/introductiontoprogramming/a/compinterp.htm(vaadatud: 26.05)[BookragsInterpreter Vs Compilerhttp://www.bookrags.com/research/interpreter-vs-compiler-wcs/ (vaadatud:26.05)[Butterworth] George Butterworth, Margaret Harris, tõlkija: Katrin Mägi -Arengupsühholoogia alused (Tartu : Tartu Ülikooli Kirjastus, 2002)[Donaldson] Dr. Toby Donaldson - Python as a First Programming Language forEveryone http://www.cs.ubc.ca/wccce/Program03/papers/Toby.html(vaadatud 26.05)[Doublecloud] Top 20 Most Popular Programming Languageshttp://www.doublecloud.org/2010/04/top-20-most-popular-programminglanguages/(vaadatud 26.05)[Dweck: math] Carol S. Dweck - Is Math a Gift? Beliefs That Put Females at Riskhttps://www.stanford.edu/dept/psychology/cgibin/drupalm/system/files/cdweckmathgift.pdf(vaadatud 26.05)Dweck: mindset] [Carol S. Dweck, Ph.D. - Mindset. The New Psychology of Success (NewYork : Ballantine Books, 2008)[Grandell] Linda Grandell, Mia Peltomäki, Ralph-Johan Back and Tapio Salakoski -Why Complicate Things? Introducing Programming in High School UsingPython (2006)[Krull]Pedagoogiline psühholoogia: loenguslaidid (2009/2010 kevad)[KT2: arvuti] Aine Programmeerimine arvutipraktikumi kontrolltöö nr 2 järeltöö(2010/2011 õppeaasta sügissemester)[KT2: tahvel] Aine Programmeerimine tahvlipraktikumi kontrolltöö nr 2 (2010/2011õppeaasta sügissemester)[Kukk]Vello Kukk - Intervjuu kõigi kohrvipraktikumide vaimse isaga. TartuMaaülikoolis 8. aprill, 2011 (suuline teade)[Learning theories] Experiential Learning (Kolb) http://www.learning-theories.com/experientiallearning-kolb.html(vaadatud 26.05)[Lutz]Mark Lutz - When Pythons Attack: Common Mistakes of PythonProgrammershttp://onlamp.com/pub/a/python/2004/02/05/learn_python.html (vaadatud26.05)[Murphy]Laurie Murphy, Linda Thomas - Dangers of a Fixed Mindset: Implications of50


[Muumipapamemuaarid][Papert][Prog:arvutipraktikumid][Python: Success]Self-theories Research for Computer Science EducationMuumitroll - Tove Jansson, tõlkinud Vladimir Beekman (Eesti Raamat1975)Seymour Papert - Mindstorms: Children, Computers, and Powerful Ideas(New York : Basic Books, 1980)Aine programmeerimine koduleht: Arvutipraktikumidhttp://courses.cs.ut.ee/2010/programmeerimine/Main/Computer (vaadatud26.05)Python Success Stories http://www.python.org/about/success/ (vaadatud26.05)[Python: Summary] What is Python? Executive Summaryhttp://www.python.org/doc/essays/blurb/ (vaadatud 26.05)[Zelle]John M. Zelle - Python as a First Language()http://mcsp.wartburg.edu/zelle/python/python-first.html (vaadatud 26.05)[Teder]Ülari Teder - Kohvripraktikumid programmeerimises LEGOMINDSTORMS NXT robotite põhjal. Bakalaureusetöö (2011)[Tiobe] TIOBE Programming Community Index for May 2011http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html[TÜ õke]Uut õppekorralduseeskirjas 2010/2011. õppeaastalhttp://www.ut.ee/et/oppimine/uliopilasele/abiks/uus?print=1[Wikipedia: Belief] Belief http://en.wikipedia.org/wiki/Belief (vaadatud 25.05)[Wikipedia: Bloom] Bloom's Taxonomyhttp://en.wikipedia.org/wiki/Bloom's_Taxonomy[Wikipedia: Constructionism (learning theory)Constructionism] http://en.wikipedia.org/wiki/Constructionist_learning[Wikipedia: Hello Wikipedia artikkel: Hello world program examplesWorld]http://en.wikipedia.org/wiki/Hello_world_program_examples[Wikipedia: Python] Wikipedia artikkel: Python (programming language)http://en.wikipedia.org/wiki/Python_%28programming_language%29[World of quotes] Famous Quotes, Quotations, Proverbs, and Sayingshttp://www.worldofquotes.com/[ÕIS:Õppeaine MTAT.03.100 vaatamineProgrammeerimine][Õpitrepp]Ajakiri Õpitrepp. Talv 2010: E-õpe – see on täiesti tavaline tänapäevane õpehttp://teadus.err.ee/opitrepp?id=155&cat=41[ÕS]Eesti keele õigekeelsussõnaraamat 2006 (http://www.eki.ee/dict/qs/)[xkcd]Compiling (http://xkcd.com/303)51


SisukordROBOOTIKA PRAKTIKUMID PROGRAMMEERIMISE ALGÕPETUSE TOETUSEKS ................... 1Sissejuhatus .................................................................................................................................... 21 Python esimese programmeerimiskeelena ............................................................................ 41.1 Pythoni sobivusest esimeseks programmeerimiskeeleks .............................................. 41.1.1 Selge süntaks ............................................................................................................. 41.1.2 Loetav programmitekst ............................................................................................... 61.1.3 Kohustuslik taanete kasutamine ................................................................................... 91.1.4 Python on interpreteeritav programmeerimiskeel ........................................................ 101.1.5 Python võimaldab mitmeid programmeerimisparadigmasid ......................................... 121.2 Argumendid Pythoni vastu ............................................................................................ 132 Raskused programmeerima õppimisel ................................................................................ 162.1 Programmeerimise algõpetus Tartu Ülikoolis ............................................................... 162.1.1 Viimase viie aasta hinded ......................................................................................... 162.1.2 Programmeerimine 2010/2011 õppeaasta sügissemestril .............................................. 172.1.3 Tugisüsteemide olemasolu ja vajalikkus ..................................................................... 232.2 Miks on programmeerimine raske? .............................................................................. 242.2.1 Üldpedagoogika: Bloomi taksonoomia ....................................................................... 242.2.2 Konkreetselt abstraktsele .......................................................................................... 272.2.3 Uskumused, mis takistavad õppimist.......................................................................... 303 Kohvripraktikum ................................................................................................................... 353.1 Kohvripraktikum - praktikum kohvriga .......................................................................... 353.2 LEGO MINDSTORMS robotid ...................................................................................... 363.3 Kohvripraktikumi võimalikud tehnilised teostused ........................................................ 383.4 Kohvripraktikumide hindamine ..................................................................................... 393.5 Loomulikud vastuargumendid ....................................................................................... 413.6 Konkreetse kohvripraktikumi näide ............................................................................... 433.7 Ülesanded robotitele ..................................................................................................... 443.7.1 Ülesannete esialgsed ideed ........................................................................................ 45Kokkuvõte ja tulevikuplaanid ....................................................................................................... 47Tänusõnad ........................................................................................................................... 48Kasutatud kirjandus ....................................................................................................................... 5052

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!