28. märts 2017

Programmeerimise õpetamisest põhikoolis. 2. osa

Tänane postitus on teine osa postituste sarjast, milles kirjutan oma kogemuste põhjal programmeerimise õpetamisest põhikoolis (Scratchi näitel). Kui esimeses osas kirjutasin grupi suurusest, õppematerjalidest ja nende jagamisest, ülesannete esitamisest ning kursuse ülesehitusest, siis teises osas on teemadeks tundide planeerimine, sisu ja läbiviimine.

Mida tundide planeerimisel silmas pidada?
Kuigi õppematerjalide abiga toimetades peaksid õpilased ülesannetega iseseisvalt hakkama saama, on siiski oluline, et õpetaja on ülesande ise eelnevalt läbi teinud (soovitatavalt sama juhendi järgi). Nii oled tuttav vähemalt mõnede probleemide või küsimustega, mis õpilastel tunnis tekkida võivad. Samuti valmib sel viisil programm, mida saab tunni alguses kasutada demonstreerimaks õpilastele, milline projekt neil tunnis valmib.

Rääkides lähemalt õppematerjali keerukusest, siis tekib küsimus, kui rasked peaksid õpilastele antavad ülesanded olema. Tean, et scratchime.weebly.com materjalide abil õpivad õpilased alates 4. klassist. Õpilased on erinevad, nende võimed ja huvi teema vastu erineb, kuid minu kogemus on, et vahel on õpilased võimelised palju enamaks, kui mina täiskasvanuna arvasin. Seega ma aeg-ajalt (vastavalt õpilaste toimetulemisele ülesannetega) kombin ja nihutan piire, andes õpilastele kas raskemaid ülesandeid või sellise juhendmaterjali, mis on peamiselt tekstiline (st juhendid on üldsõnalisemad ja puuduvad ekraanipildid koostatavatest skriptidest).
Foto: Denise Krebs

Olenemata õppematerjali raskusest, on suure tõenäosusega ühes rühmas koos erineva suutlikusega õpilased. On neid, kes saavad tunnitöö kiiremini valmis ja neid, kes vajavad ülesande tegemiseks rohkem aega ja juhendamist. Ja võib olla neidki, kes on mõni tund puudunud ja on sel põhjusel teistest maha jäänud. Selleks et kiirematel tegevust oleks ja et keegi liiga palju teistest maha ei jääks, olen kasutanud järgmisi võtteid:
  • Iga iseseisva töö juhendi lõpus on teemaga seotud lisaülesanded projekti edasiarendamiseks. Need lisaülesanded on mõeldud just kiirematele õpilastele.
  • Suunan tublimad õpilased nõrgemaid juhendama.
  • Võtan aeg-ajalt aeg maha ehk teen tunni, milles mahajääjad saavad oma ülesanded ära lõpetada ja teised teevad midagi muud. (Näiteks mängivad programmeerivat mõtlemist arendavaid mänge. Olen mitmeid mänge tutvustanud ka oma blogipostitustes. Vaata siia.)
Mis puutub tegevustesse tunnis, siis pean oluliseks ka ülesannete mitmekesisust. Ma ei usu, et on arukas kõik tunnid üles ehitada mängude loomisele, vaid õpilased peaksid koostama erinevaid programme nt animatsioon, joonistamine, helide programmeerimine, mälumäng jne.

Kuigi ülesannete mitmekesisus peaks õpilaste huvi üleval hoidma, võib siiski tunnist tundi ainult programmide koostamine veidi ebahuvitavaks muutuda. Seetõttu peaks aeg-ajalt midagi muud tegema. Siin on mõned ideed:
  • Programmide silumine ehk programmis vigade otsimine ja parandamine. See mitte ainult ei aita tundidesse veidi vaheldust tuua, vaid on programmeerimise juures äärmiselt vajalik oskus. Oluline on õpilaste suunamine ja koos arutamine, kus viga võiks olla ja kuidas seda parandada. Võib kasutada õpilaste enda projekte.
  • Mida see skript teeb? Tee skriptidest kuvatõmmised. Õpilaste ülesanne on üksi või paaris välja mõelda, mida iga skript teeb. Võib ka koos arutada. Seda võib teha nii pliiats-paber tunnina, kui skriptid õpilastele välja printida, aga võib ka arvutis (kuid mitte Scratchis).
  • Kui õpilased on ise mängu või viktoriini programmeerinud, siis kogu need kokku (näiteks padletisse) ja lase õpilastel üksteise mänge mängida ja viktoriiniküsimustele vastata. Soovitav on anda programmi loojale tagasisidet.
  • Vaheldust pakub ka teooriaosa. Näiteks kui teemaks on geomeetriliste kujundite joonistamine, siis korrake üle palju on kolmnurga nurkade summa, mitu kraadi on täisring, mida tähendab võrdkülgne kolmnurk jne.
  • Kui aega on rohkem, lase õpilastel koostada referaat, ettekanne vms programmeerimise või arvutitega seotud teema kohta (nt isesõitvad autod, millest koosneb arvuti).
  • Kahoot! Kuna programmeerimine on seotud matemaatikaga, siis olen otsinud ja kasutanud Nuputa! ja peast arvutamise ülesandeid. 5. klassiga näiteks sedasedaseda ja seda.
  • Mängige programmeerivat mõtlemist arendavad mänge (valik mänge siin).
  • Programmeerige ilma arvutita. Ideid leiab internetist.

Mida tundide läbiviimisel silmas pidada?
Leppige esimesel kokkusaamisel kokku reeglid. Siin on mõned, mida mina kasutan:
  1. Arvutiklassis kõva häälega ei räägi ja kõrvaliste tegevustega ei tegele.
  2. Õpetajalt abi saamiseks tõstan käe.
  3. Enne kui pöördun õpetaja poole abi saamiseks, proovin ise lahendust leida.
  4. Võin küsida abi teiselt õpilaselt ning aitan teist õpilast, kui tema minult abi palub.
  5. Ühe õpilase hiirt ja klaviatuuri keegi teine ei puutu. Juhendamine toimub suusasõnaliselt juhiseid jagades.
5. punkti ei tohi ka õpetaja ise ära unustada. Ise tehes saab küll palju kiiremini kui suusõnaliselt juhendades, aga nii ei õpi õpilane ning järgmine kord võib ta sama asjaga hädas olla.

Tunni alguses tutvusta õpilastele eesseisva tunni tööd ja juhul kui tegemist pole loovülesandega, demonstreeri neile, milline projekt neil juhendmaterjali järgi programmeerides valmib. Niimoodi tekib õpilastel parem ettekujutus, mida nende programm tegema peab.

Projektitööde puhul pean oluliseks, et õpilased mõtlevad enne programmeerima asumist läbi, kuidas nad programmi koostavad. Seetõttu lasen neil kas kavandi teha (nt oma nimetähtede kirjutamise programmi koostamise eel joonistavad nad vihikusse tähed ja spraidi liikumise koos kasutatavate klahvidega) või arutada paaris läbi programmi kohta käivad küsimused (nt Kuidas peatad mängu, kui tegelase elud otsa saavad?). Enne kavandi tegemist näita õpilastele kavandi näidet, et neil sinu ootustest parem arusaam tekiks.

Tutvusta õpilastele, mida antud töö puhul hinnatakse. Minul on ka projektitöö kirjelduses üles loetletud nõuded, millele projekt peab vastama. Nõuded on seotud tsükli jooksul õpitud oskustega.

Järgmine nädal lõpetan postituste sarja refleksiooni, tagasisidestamise ja hindamise teemadega.

24. märts 2017

Nädala nopped

Foto: Jacob Bøtter

21. märts 2017

Programmeerimise õpetamisest põhikoolis. 1. osa

Mõni kuu tagasi kirjutasin siin programmeerimise õppimisest ja miks see on tore ja kasulik.

Foto: ScratchEd Team
Selles kolmeosalises postituste sarjas kirjutan Scratchil abil programmeerimise õpetamisest koolitunnis ja huviringis. Inspiratsiooni selleks sain Õpetajate Lehe nädalakommentaarist, kus kutsuti õpetajaid üles oma kogemustest raamatut kirjutama. Raamatu asemel on blogipostitused, aga eesmärk on sama - jagada oma kogemusi ja tähelepanekuid. Arvan, et see on oluline, sest püüdes otsida raamatuid, artikleid, blogipostitusi jt materjale selle kohta, kuidas õpetada programmeerimist (koolitunnis), siis teemakohast materjali on vähe. Ju on põhjus selles, et programmeerimise õpetamine on üldhariduskoolidesse jõudnud alles viimastel aastatel. Siiski toon viimases osas ära mõned allikad, mida võib soovi korral lisaks lugeda.


Kuna teema on pikk, siis avaldan need kolmes osas:
  1. osas ehk täna kirjutan veidi enda taustast ja seejärel punktidest, mis tuleb läbi mõelda juba enne tundide sisu juurde asumist.
  2. osas tuleb juttu tundide planeerimisest, sisust ja läbiviimisest ning 
  3. osa teemad on tagasisidestamise ja hindamine.
Taust
Jagan oma kogemust programmeerimise õpetamisest Scratchi abil 11-14-aastastele õpilastele. Mõnedel neist on varasem programmeerimiskogemus nt Logo, code.org, Code HS ja KoduGame Labiga, teistel jällegi varasem kogemus puudub.

Tundide sisu ettevalmistamisel olen mõtteid ja ideid saanud eestikeelsetest õppematerjalidest (ülevaate nendest leiad siit), inglisekeelsetest Youtube'i videotest, lastele suunatud programmeerimise õpikutest ja raamatutest, mida olen ka oma blogis tutvustanud siin, siin ja siin, ning enda õpingutest. Samuti on olulisel kohal kogemuste vahetamine kolleegidega. Olen muidugi osalenud õpetajatele suunatud koolitustel, kuid need on olnud pigem julgustavad ja motiveerivad mitte niivõrd metoodikale keskenduvad.

Rühma suurus
Foto: Susana Fernandez
Minu suurim rühm on olnud 18 õpilast. Vanemate ja iseseisvamate õpilastega saab ka nii paljudega hakkama, kuid optimaalne õpilaste arv on 12-14. Sellise arvu puhul jõuab igat õpilast individuaalselt juhendada, kui nad mõne probleemi lahendamisega hätta jäävad, kuid samas on neid piisavalt palju, et vajadusel üksteist aidata.

Õppematerjalid
Tundides kasutan nii Gustaf Adolfi Gümnaasiumi kui ka Tartu Ülikooli arvutiteaduse instituudi poolt koostatud videosid ja töölehti, kuid samuti endakoostatud juhendeid ja ülesandeid.

Õppematerjalide jagamine ja tööde esitamine
Programmeerimise õpetamine ei toimu paberõpiku ja -töövihikuga, vaid suuremas osas kasutatakse digitaalseid õppematerjale ning programmid koostatakse arvutis. Seega kaks olulist küsimust, mis tuleb juba aegsasti enne tundide toimumist läbi mõelda, on
  1. Kuidas jagan õppematerjale õpilastega?
  2. Kuidas õpilased esitavad oma programmid õpetajale ülevaatamiseks/hindamiseks?
Nagu eespool mainitud, on kasutusel digitaalsed õppematerjalid. Seega tuleb välja valida keskkond õppematerjalide õpilastele kättesaadavaks tegemiseks. Veel parem on, kui see keskkond võimaldab õpilastel oma ülesandeid esitada ja õpetajal (ja õpilastel) neid hinnata ilma kellegi privaatsust rikkumata. Toon siin välja mõned keskkonnad.
  1. Moodle. Õpihaldussüsteem, mida kasutatakse laialdaselt ülikoolides ja osaliselt gümnaasiumides. Sobib nii õppematerjalide jagamiseks kui ka tööde esitamiseks ja hindamiseks. Põhikooliõpilaste jaoks võib keskkond olla ülemäära keeruline.
  2. Google Sites, kus õpetaja loob veebilehega sarnase ülesehitusega õpikeskkonna ja määrab, kellel on keskkonnale ligipääs. Kasutajad saavad ise sisu luua ja kirjutada kommentaare. Sobib õppematerjalide jagamiseks ja vajadusel ka esitamiseks (nt kommentaariumis). Sel juhul pead pooldama seda, et õpilased saavad üksteise projekte näha ja õpetaja kommentaare lugeda. Eeldab Google'i konto olemasolu õpilastel ja õpetajal. Muidugi võib iga õpilane ise oma Google Sites'i lehe luua, kus esitab oma tööd, kuid õpilaste veebilehtede pidev jälgimine võib olla õpetajale üsna koormav.
  3. Blogid (wordspress, blogger). Saab kasutada sarnaselt Google Sites'iga. Kui iga õpilane teeb oma blogi, kuhu postitab oma ülesanded, siis on mõistlik nende järgimiseks kasutada EduFeedr rakendust, et õpetaja ei peaks blogisid pidevalt ühe kaupa kontrollima. Selle rakenduse abil on näha, millistel õpilastel on blogipostitus avaldatud ehk ülesanne esitatud ja millistel mitte. Peab jälgima, et avalikud blogid ei rikuks õpilaste privaatsust.
  4. Google Classroom. Google'i poolt pakutav lihtne õpikeskkond. Õppematerjale saab postitada üks tund korraga, õpilased saavad tehtud ülesandeid keskkonnas lingi kaudu esitada ja õpetajana näed, kellel on töö juba esitatud. Eeldab, et kool kasutab Google Educationit / G Suite'i ja kõigil õpilastel on olemas konto. Kui oled päris õpihaldussüsteeme kasutanud, siis võib Classroom tunduda liiga väheste võimalustega. Mõnda võib häirida Facebooki stiilis postituste kuvamine.
  5. Weebly. Sobib materjalide jagamiseks, seda enam, et võrdlemisi lühikese aja ja väheste oskustega saab ilusa veebilehe teha. Puuduseks see, et õpilased ei saa oma projekte seal esitada.
Kursuse ülesehitus
Minu põhimõtted (programmeerimise) õpetamisel on olnud järgmised:
  • kõige paremini õpib läbi isetegemise, iseproovimise, ise lahenduste väljatöötamise;
  • uue teema omandamine peab toimuma samm-sammult, kus juhendmaterjali osakaal järjest väheneb ja õpilase enda panus järjest suureneb;
  • selles vanuses õpilaste puhul on põhirõhk praktilisel väljundil mitte teooria õpetamisel;
  • eesmärk on arendada algoritmilist mõtlemist, probleemide lahendamise oskust, matemaatilisi võimeid ja loovust.
Õppematerjalid olen GAGi õppematerjalide näitel jaganud teemade kaupa tsükliteks. Üks tsükkel koosneb neljast kuni kuuest tunnist ja lõpeb ühe suurema projektitööga. Üks tund (enamasti 45 min) koosneb kahest osast: juhendmaterjali abil (video või tööleht) tehtud ülesandest, kus on samm-sammult näidatud, kuidas programmi koostada ning eelnevale sarnasest iseseisvast tööst, kus on ülesande kirjeldus, mille põhjal õpilane koostab programmi ise. Neid ülesandeid teevad õpilased iseseisvalt ning mina sekkun vaid siis, kui õpilane ise probleemi lahendada ei oska. Iga tsükkel lõpeb projektiga, milleks kulub kolm kuni kuus koolitundi. Projekti eesmärk on kinnistada ja lihvida tsükli jooksul õpitud oskuseid. Projekte on nii individuaalseid kui ka paaris- ja rühmatööna tehtavaid.

18. märts 2017

Neurobioloog Andres Laan tehisintellektist ja kollektiivsest intelligentsusest

Kuvatõmmis
Mis on tehisintellekt? Milleks on vaja tehisintellekti? Kas tehisintellekt toob kaasa inimkonna hävingu? Mis on singulaarsus? Kuidas muudab tehnoloogia areng inimese mõtlemist? Mis on kollektiivne intelligentsus? Nendel ja teistel põnevatel teemadel vestleb neurobioloog Andres Laan saatejuht Joonas Hellermaaga 17. märtsi (2017) ETV2 saates "Plekktrumm".

Andres Laan õppis Cambridge’i Ülikoolis neurobioloogiat ja töötas seejärel teadurina Max Plancki Aju-uuringute Instituudis. Praegu töötab ta Lissabonis Champalimaudi Instituudis, kus uurib kollektiivset intelligentsust tehislikes ja bioloogilistes süsteemides. Nädala alguses tutvustas ta oma raamatut "Tehisintellekt. Loomadest ja masinatest".

Saade on järelvaadatav siit.

17. märts 2017

Nädala nopped

Foto: Automobile Italia

14. märts 2017

TED Talk "How I'm fighting bias in algorithms"

MIT'i ülikooli mustanahaline tudeng Joy Buolamwini on korduvalt kokku puutunud probleemiga, et tarkvara ei suuda tuvastada tema nägu. See inspireeriski teda algatama liikumise, mis võitleb algoritmides leiduva eelarvamuslikkuse vastu. Oma esinemises selgitab Joy, miks see teema on oluline ja pakub omalt poolt välja lahendused paremate algoritmide koostamiseks. Programmeerimisest huvitatutele peaks pakkuma põnevust see osa kõnest, kus selgitatakse, kuidas näotuvastuse tarkvara luuakse.

10. märts 2017

Nädala nopped

Foto: Gwydion M. Williams

4. märts 2017

Nädala nopped

Foto: Boris Baldinger

1. märts 2017

TED Talk "A robot that eats pollution"

Jonathan Rossiter arendab pehmeid roboteid. Oma TED Talkis "A robot that eats pollution" räägib ta lähemalt, kuidas tema (ja ta meeskond) saab robotite arendamise jaoks ideid loodusest ja kuidas nende robotid aitavad toime tulla keskkonnaprobleemidega nagu naftalekked või "vetikate õitsemine" (ehk vetikate ajutine vohamine).

Tema esinemise teeb põnevaks ja väärtuslikuks see, et ta näitab laval saastet sööva roboti prototüüpi ja selgitab tavainimesele arusaadavalt selle roboti tööpõhimõtet. Tema kõnest saame muu hulgas teada, et ta meeskond soovib arendada biolagunevaid roboteid. Selliste robotite üheks kasutusvaldkonnaks lisaks keskkonna päästmisele on meditsiin.

Jonathan Rossiter'i esinemine laiendab vaatajate arusaama sellest, mis on robot ja milline robot välja näeb. Samuti paneb tema TED Talk mõtlema sellele, millistes valdkondades ja millisteks tegevusteks saaks roboteid veel kasutada. Kahtlemata huvitav ja kasulik vaatamine igaühele, kes huvitub robotitest, nende väljamõtlemisest ja/või disainimisest.