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.