30. mai 2019

Programmeerimise õpetamisest (2) - algus tehtud, kuidas edasi?

Programmeerimise õppimist on soovitav alustada lihtsate algoritmide koostamise õppimisest, nagu kirjutasin lähemalt selles postituses. Kuid mis saab edasi? Mis on järgmine samm?

Programmeerimise_õpetamine_kuidas_edasi_Kristi_Proge_Blog
Arvutivaba programmeerimine õpetab programmeerimisel vajalikke oskusi. Foto: Pexels

Mustrid ja keerulisemad algoritmid

Algoritmilise mõtlemise üheks komponendiks on mustrite tuvastamine. Muster on midagi sellist, mis kordub. Korduste tuvastamine aitab luua keerulisi programme kiiremini ja need on ka lihtsamini jälgitavad, sest sama koodi mitmekordse kirjapanemise asemel kasutatakse tsükleid, alamprogramme (=funktsioone, protseduure) või tingimuslauseid.

Praktika näitab, et mustrite leidmine selleks, et vältida programmis samasuguste koodiridade kordamist ei ole paljude õpilaste jaoks lihtne. Või vähemalt ei oska nad selle peale tulla, et korduvaid tegevusi programmis on võimalik lühemalt kirja panna. Seetõttu tuleks mustrite teemat programmeerimise õppimisel eraldi käsitleda.

Teiseks sammuks programmeerimise õpetamisel ongi harjutada mustrite märkamist ning käsitleda teemasid tsükkel, alampogramm ja tingimuslause ning seejärel jätkata keerulisemate algoritmide koostamisega. Järgmisena vaatame, millised võimalused selleks on.

Arvutivaba/Seadmeta programmeerimine

Nagu programmeerimise sissejuhatavatesse tundidesse sobib arvutivaba programmeerimine suurepäraselt, saab juhtme välja tõmmata ka tsüklite, alamprogrammi ja tingimuslause teemade selgitamisel.

Selleks et harjutada mustrite äratundmist, on soovitav kõigepealt kasutada väljaprinditud töölehti erineva raskusastmega harjutustega, mida õppijad lahendavad kas individuaalselt või paaris. Koostööoskuse arendamiseks on paarislahendamine kindlasti parem. Kõige tüüpilisemaks ja lihtsamaks ülesande näiteks on etteantud mustrirea jätkamine (näiteks L K L K L K _). Internetist leiab sobivaid töölehti, kuid ülesanded võib ka ise välja mõelda.

Tsüklite, alamprogrammide ja tingimuslausete teemat saab õpetada ka huvitamalt ja sotsiaalsemalt kasutades aktiivõpet. Internetis ringi vaadates leiab mitmeid huvitavaid arvutivaba programmeerimise tegevusi, millega on sageli kaasas tunnikava ja näitlikustav video. Näiteks leiab valiku tegevusi code.org lehelt.

Suvi 2019 väljakutses on mul kavas tutvustada mõningaid arvutivaba programmeerimise tegevusi, sh tegevusi, mis sobivad just nimetatud teemade õppimiseks. Lähemalt sellest väljakutsest juunis.

Programmeerimise_õpetamine_arvutivaba_programmeerimine_Kristi_Proge_Blog.jpg
Mäng on nii kaasahaarav kui arendav. Foto: Pexels

Programmeerimismängud ja hariduslikud robotid

Suurem osa hariduslikke programmeerimismänge nõuavad ülesannete täitmisel tsüklite, alamprogrammide ja tingimuslausete kasutamist. Õppijad võiksid mängida peale seda, kui need programmeerimise põhikonstruktsioonid on arvutivabade programmeerimise tegevuste kaudu juba käsitletud. Kuigi tasemed saab üldjuhul läbida ka eelnevate teadmisteta ja õppida mängimise käigus, siis väärtuslikum on õppija jaoks see, kui ta saab varem omandatud teadmisi uues kontekstis rakendada.

Nendes mängudes koostatakse programme enamasti graafilisetest plokkidest (plokkide all peangi silmas otseselt ristkülikukujulisi 'klotse', mis paigutatakse jadamisi üksteise otsa) ja suuremas osas on need plokid tekstivabad.

Siinkohal loetelu mõnedest mängudest ja rakendustest, mida julgen harjutamiseks soovitada:
On ka valik hariduslikke roboteid, mille juhtimiseks tuleb koostada graafilistest tekstivabadest klotsidest programm. Näiteks Lego WeDo ja Edisoni roboti programmeerimiskeel EdBlocks. Lego klotsidest ehitatud robot või masin ja Edisoni sõiduk programmeeritakse tööle äpis koostatud programmi abil.

Algoritmilise mõtlemise neljas komponent - üldistamine

Teatavasti koosneb algoritmiline mõtlemine neljast põhikomponendist: osadeks võtmine, mustrite tuvastamine, üldistamine ning algoritmi koostamine ja selle töökindluse kontroll. Nendest kolme olen oma postitustes käsitlenud, kuid üldistamist mitte. Usun, et sellega on õppurid nii või naa õppetöös kokku puutunud, sest mõned näited üldistamisest on sisukokkuvõte loetud raamatust või nähtud filmist ja sõnade defineerimine, kas emakeeles või võõrkeeles. See muidugi ei tähenda, et üldistamise oskus on õpilastel hästi arenenud. Minu kogemuse põhjal on see neil pigem nõrk.

Programmeerimise õpetamisse saab üldistamise sisse tuua nõnda, et palud õpilasel oma programmeeritava rakenduse (mäng, animatsioon jms) ideed teistele tutvustada. Peidetult on üldistamine sees ka nendes arvutivabades tegevustes, kus õppurid koostavad algoritme mingi ülesande lahendamiseks.

Kokkuvõtteks

Enne kui õpilased hakkavad ise koodi tekstilistest plokkidest kokku panema või koodi kirjutama, on soovitav läbi mängu tuttavaks saada algoritmilise mõtlemise põhikomponentidega. Mängulise õppimise kaudu õpitakse tundma ka mõnda programmeerimise põhikontseptsiooni nagu tsükkel, tingimuslause ja alamprogramm. Loodetavasti on õpilastel tänu 'soojendustegevustele' koodikirjutamise või -koostamisega jätkates rakenduste loomine lihtsam ja probleemivabam, sest ta on juba harjunud programmeerija moodi mõtlema.


Jälgi KristiProget Facebookis.

23. mai 2019

Scratch Jr - progammeerimine kõige noorematele

Scratch on vaata et algajatele programmeerimise õpetamise sünonüüm. Scratch Jr on saanud palju vähem tähelepanu (kaasa arvatud selles blogis), kuid nüüd võib see tänu toetavatele õppematerjalidele muutuda. Kõigest lähemalt allpool.


Scratch_Jr_tutvustus_Kristi_Proge_Blog
Scratch Jr tutvustab programmeerimist kõige noorematele. Kuvatõmmis

Veidi ajaloost

Scratch Jr on hariduslik programmeerimiskeel ja populaarse Scratchi noorem sugulane. Kui Scratchi esimene avalik versioon tuli välja 2007. aastal, siis Juunior alles 2014. aastal ja ainult iPadidele. Aasta hiljem sai Scratch Juunoriga rakendusi luua Androidi seadmetes ja veel aasta hiljem ka Chromebookides.

Scratch Jr sünd oli ajendatud tema vanema sugulase edust. Kuid kui viimane oli suunatud kooliõpilastele, siis Juunior sobib 5-7-aastastele lastele, kes ei oska veel hästi lugeda.

Scratch Jr

Scratch Jr loodi selleks, et tutvustada programmeerimist kõige noorematele. Nagu juba eespool mainitud, siis Juuniori sihtgrupp on eelkooliealised, kuid minu kogemuse põhjal sobib see hästi ka 1. ja 2. klassi õpilastele.

Kasutades nutiseadet saavad lapsed luua oma mänge ja animatsioone. Nende loomiseks kasutatakse peamiselt tekstivabasid graafilisi plokke, mis astetatakse üksteise järele. See on eelkooliealise lapse jaoks piisavalt lihtne ja loogiline. Plokkide abil pannakse tegelased liikuma, hüppama, tantsima ja laulma. Lapsed saavad ka oma häält salvestada ja seda rakenduses kasutada. See tegevus pakub lastele palju lõbu.

Scratch_Jr_juhend_Kristi_Proge_Blog
Näide õppematerjalist Scratch Jr kodulehel. Kuvatõmmis

Scratch Jr õppematerjalid

Kuigi Scratch Jr on suunatud eelkooliealistele lastele, ei tähenda see, et lapsed oskavad seal üksi toimetada. Täiskasvanu poolt juhendamine on vajalik. Õnneks on Scratch Jr kodulehel nüüd juhendid Scratch Jr projektide loomiseks.

Pean tunnistama, et olin ise mõned aastad tagasi Scratch Juuniorit esimest korda näppides üsna nõutu, et mida selle rakendusega peale hakata (oli mul ju all kogemus Scratchiga, mille rohketest võimalustest oli mul üsna hea ülevaade). Kuid kui nüüd avastasin, et Juuniori arendajad on vahepealse aja jooksul loonud õppematerjalid, läksid mu silmad särama. Tänu neile on nii õpetaja kui ka lapsevanema elu palju lihtsam. Juhendid on küll võõrkeeles (eesti keelt hetkel valikus ei ole), kuid tekstilist osa on väga vähe ja kõik tegevused on näitlikustades selgeks tehtud. Nii et keeleoskuse puudumine ei saa kindlasti takistuseks.

Scratch Jr meeskond on loonud kõik eeldused selleks, et eelkooliealistele lastele programmeerimist tutvustada. Nii et kui kooli lõpp on lähedal ja hinded juba välja pandud, siis miks mitte luua algklassi õpilastega mõni vahva rakendus Scratch Juunioris. Või kui suvepuhkuse ajal on ilm vihmane, siis Scratch Jr äpp pakub tubast ühistegevust lastele ja nende vanematele.

Scratch Jr äpp ja selle juurde kuuluvad õppematerjalid on tasuta. Scratch Jr kodulehe aadress on www.scratchjr.org.

Jälgi KristiProget Facebookis.

21. mai 2019

TED "Digital humans that look just like us"

Lõpetasin just selle vahva TED kõne, kus laval oli korraga kaks inimest - üks päris inimene ja teine tema 3D koopia, vaatamise. Kuidas esinejast 3D koopia tehti ja kus seda tehnoloogiat kasutama hakatakse, saab teada ja näha tarkvarateadlase Doug Roble'i perfomance-kõnes.


Jälgi KristiProget ka Facebookis.

19. mai 2019

Nädala nopped nr 83

Milline suvine nädalavahetus! Juba hommikul on temperatuur üle 20 kraadi. Ilm õnneks tehnoloogiamaailma ei mõjuta ning sellel nädalal on päris palju põnevat ja ka natuke muret tekitavat avalikkuseni jõunud.

Nädala_nopped_83_Kristi_Proge_Blog
Foto: Pexels

Jälgi KristiProget Facebookis.

14. mai 2019

Programmeerimise õpetamisest (1) - millest alustada?

Käesolev postitus juhatab sisse postituste sarja, milles kirjutan lähemalt programmeerimise õpetamisest kooliealistele lastele (osaliselt ka koolieelikutele). Rõhuasetus saab olema küsimustel mida õpetada ja mis järjekorras õpetada. Sellest, kuidas õpetada (ehk õpetamismetoodikast) sarjas palju juttu ei tule.

programmeerimine_arvutivaba_algajad_kuidas_Kristi_Proge_Blog
Programmeerimine kui 21. sajandi kirjaoskus. Foto: pixabay

Programmeerimine kui 21. sajandi kirjaoskus

Programmeerimine on praegu hariduses väga kuum sõna. Rõhutatakse, et see on üks 21. sajandi olulistest oskustest, nimetatakse seda lausa 21. sajandi kirjaoskuseks, ja usutakse, et iga laps peaks vähemalt natuke programmeerida oskama, et elus paremini hakkama saada. Igatahes on mitmed haridus- ja IT-valdkonna inimesed avaldanud arvamust, et progammeerimise algtõdede õpetamisega peab alustama varakult. Aga millest üldse alustada?

Käsud ja algoritmid

Programmeerimine on lihtsustatult öeldes täpsete ja õiges järjekorras käskude andmine arvutile (masinale) selleks, et see teeks midagi, mida inimene soovib. Tavaliselt soovib inimene lahendada mingit probleemi. Selliseid samm-sammulisi juhiseid (käske), mis koostatakse mingi ülesande täitmiseks või probleemi lahendamiseks, nimetatakse algoritmiks. Oskust koostada algoritme, mis annavad soovitud tulemuse, nimetatakse algoritmiliseks mõtlemiseks.

Seega ongi mõistlik alustada programmeerimise õppimist ja õpetamist käskudest ja lihtsatest algoritmidest. On oluline, et laps, noor või teismeline mõistab, et arvuti teeb seda, mida tema käseb tal (läbi koodi) teha. Kui algoritm on ebatäpne või vigane, siis ei tööta programm nii nagu tema soovib. Võib juhtuda sedagi, et tulemus on mõningatel juhtudel õige, kuid teistel juhtudel jällegi vale. Hea algoritm annab järjepidevalt oodatud tulemuse.

Täpsete juhiste ehk käskude andmist tuleb harjutada, mis võikski olla programmeerimise õppimisel esimene samm. Täpsete juhiste andmise harjutamiseks on kaks peamist võimalust: arvutivaba/seadmeta programmeerimine ja lihtsate programmeerimismängude mängimine.

Arvutivaba/Seadmeta programmeerimine

Programmeerimise baasoskusi saab arendada täiesti arvutivabalt. Seda nimetatakse arvutivabaks või seadmeta programmeerimiseks. Võimalusi õppida programmeerimise baasoskusi ilma arvutita on uskumatult palju. Internetist võib leida väljaprinditavaid töölehti ülesannetega, mida õppija saab lahendada iseseisvalt, kuid levinum on siiski töötamine paaris või rühmas. Näiteks saab 'programmeerida' oma kaasõpilast jagades talle käsklusi, mängida koos lauamänge, koostada teineteisele kirjalikke juhiseid mingi ülesande täitmiseks, jagada suulisi juhiseid rühmakaaslastele jne. Igatahes käib arvutivaba programmeerimise juurde sageli liikumine ja koostöö.

Arvutivaba programmeerimise alla käib ka valik haridusroboteid, näiteks Bee-Bot ja Ozobot, mille liikuma panemiseks kasutatakse lihtsaid käske ja selleks ei pea tingimata kasutama arvutit.

Mõnda arvutivaba programmeerimise tegevust on mul kavas tutvustada oma suvi 2019 väljakutses, millest saab lähemalt lugeda juunikuus.

Programmeerimismängud

Lihtsate algoritmide koostamist saab õppida kasutades arvutit või nutiseadet ja spetsiaalselt selleks loodud keskkondasid või rakendusi. Kui arvutivaba programmeerimise tegevused on sageli sotsiaalsed, siis (hariduslikud) programmeerimismängud on pigem individuaalsed. Muidugi on olenevalt lapse vanusest ja mängu keerukusest vaja täiskasvanu juhendamist, kuid peamiselt käib õppimine õppuri ja rakenduse vahelise interaktsiooni kaudu. Rakendus juhendab mängijat ja pakub kohest tagasisidet käsurea õigsuse kohta. Samuti on tavapärane, et mängijat premeeritakse kuldraha, tärnide jm sellisega, mis motiveerivad endast parimat andma.

Siin on mõned mängud, mis arendavad samm sammu haaval juhiste koostamist:

    Kokkuvõtteks

    Programmeerimise õppimise esimeseks sammuks olenemata lapse vanusest on harjutada täpsete juhiste (käskude) koostamist, mida saab teha nii arvutiga kui ka arvutita. Ei saa väita, et arvutivaba programmeerimine on tingimata parem kui programmeerimismängud või vastupidi. Mõlemad arendavad algoritmilist mõtlemist ja õpetavad programmeerimise baasoskusi. Samas usun, et võimalus õppida programmeerimist arvutivabalt, seejuures liikudes ja arendades sotsiaalseid oskusi, kõlab paljude õpetajate ja lapsevanemate jaoks atraktiivsemalt kui ekraani taga sundasendis õppimine.


    Jälgi KristiProget ka Facebookis.

    12. mai 2019

    Nädala nopped nr 82

    Lähinädalad saavad olema põnevad, sest minu blogist saab lugeda lastele programmeerimise õpetamise kohta - postitused, millest on abi nii oma lapse arengust huvitatud lapsevanemale kui ka õpetajatele. Teema uurimine on võtnud omajagu aega ja nädala nopete postitused on seetõttu vahele jäänud, mistõttu on tänases lingikogumikus nii uuemaid kui ka vanemad uudisnupukesi.

    Nädala_nopped_82_Kristi_Proge_Blog
    Foto: pixabay
    Jälgi KristiProget Facebookis.

    1. mai 2019

    Lugemissoovitus: Hariduse tehnoloogiakompass

    Hariduse_tehnoloogiakompass_Kristi_Proge_Blog
    Hariduse tehnoloogiakompass. Ekraanipilt.


    HITSAl on valminud koostöös oma ala ekspertide ja haridusasutustega "Hariduse tehnoloogiakompass", mis avaldati selle aasta veebruaris. Hariduse tehnoloogiakompassi näol on tegemist raportiga, mille eesmärk on anda ülevaade tehnoloogiatrendidest maailmas ning kuidas neid õppetöös rakendada.

    Selline raport hakkab ilmuma regulaarselt, kord aastas. Esimene hariduse tehnoloogiakompass käsitleb viite valdkonda: tehisintellekt, asjade internet (=nutistu, värkvõrk), analüütika ja suurandmed, virtuaal- ja liitreaalsus ning privaatsus.

    Kasutasin tänast vaba päeva ära ja tutvusin raportiga lähemalt. Väga huvitav lugemine ja annab aimu, kuidas tehnoloogia areng (lähi)tulevikus õpetamist ja õppimist muudab. Samas ka natuke hirmutav, et kuidas ja kas õpetajad (kaasa arvatud mina ise) ja koolid suudavad kõigi nende muudatustega kaasas käia.

    Jälgi KristiProget Facebookis.