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.
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:
- Lightbot;
- Kunstnik code.org lehel;
- Kodable;
- Scratch Jr;
- codeSpark Academy.
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.
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.
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.