Kokemuksia Koodikerhon ohjaamisesta

Toimin Tampereen Tammelan koulun 3.-luokkalaisten Koodikerhon ohjaajana syys-joulukuussa 2015. Tunnin mittaisia kerhokertoja on yhteensä 13, joista muutama on vielä pitämättä. Syksyn alussa sain kerhon ohjaukseen apua Tammelan koulun opettajalta, joka halusi tutustua koodikerhotoimintaan ja Koodikerhon tuottamiin opetusmateriaaleihin sekä selvittää materiaalien sopivuutta omaan opetukseensa.

Ensimmäisellä koodikerhokerralla keskityimme siihen, että osoitimme koodaamisen olevan läsnä lapsen maailmassa jatkuvasti. Keskustelimme siitä, missä kaikkialla arkielämän ympäristössä onkaan taustalla koodia. Tietokoneet ja puhelimet nousivat itsestään selvinä esiin, mutta pian lapset havahtuivat siihen, että oikeastaan koodia onkin kaikkialla: kodinkoneet, autot, hissit, liikennevalot, robotit ja lentokoneet toimivat kaikki jonkun kirjoittaman koodin perusteella.

code.org ympäristo
Code.org tehtävä: Kirjoita annettujen lohkojen avulla ohjelma, jonka avulla orava pääsee tammenterhon luo.

Seuraavaksi mietimme sitä, mitä koodi oikeastaan on. Lapsia nauratti ajatus siitä, että oikeastaan tietokone on tyhmä ja noudattaa vain täsmällisesti koodia, jonka ohjelmoija on kirjoittanut. Yksi lapsista myös totesi, että kukaan ei ole tyhmä, vaan hän, joka vaikuttaa tyhmältä ei vain tiedä vielä ja voi oppia ja siten tulla viisaaksi. Näin siis totesimme asian olevan, tietokoneet eivät ole tyhmiä, ne eivät vain tiedä vielä, ja jatkoimme harjoitusta. Yksinkertaisuudessaan koodi on siis käskyjen antamista tietokoneelle, joten seuraavaksi harjoittelimme täsmällisten käskyjen antamista. Toteutimme maalarinteipillä lattiaan piirretyssä ruudukossa liikkuvan ihmisrobotin, joka suoritti kerholaisten kirjoittamia liikkumiskomentoja eli ”koodia”.

Orientaatiokerran jälkeen siirryimme varsinaisiin tositoimiin. Kerhokerroista suurimman osan vietimme tutustuen ohjelmoinnin peruskäsitteisiin ja niiden käyttöön: toistorakenne, ehtolauseet, alkeelliset funktiot ja parametrit tulivat tutuiksi. Myös avaruudellinen hahmottamiskyky nousi nopeasti tärkeäksi taidoksi, kun koodin avulla liikuteltiin tietokoneen näytöllä olevia hahmoja. Suurin osa harjoituksista tehtiin code.org-ympäristössä, jossa käyttöliittymä on pelillinen ja ohjelmointia tehdään graafisten lohkojen avulla. Muutamalla kerralla vierailimme muissakin ohjelmointiympäristössä, jotta kerholaiset ymmärtäisivät koodauksen universaaliuden. Esimerkiksi lightbot.com-sivustolta löytyy pelillinen käyttöliittymä graafisen ohjelmoinnin opetteluun, jota myös hyödynsimme kerhossa. Nopeasti lapset huomasivat, että kerran ohjelmoinnillisen ajattelutavan omaksuttuaan sitä voi hyödyntää monenlaisten ongelmien ratkomiseen.

Lightbot tehtävä: Kirjoita ohjelma, jonka avulla hahmo voi käydä sytyttämässä valon sinisellä merkittyihin ruutuihin. Ohjelma koostuu main-osasta sekä sieltä kutsuttavasta proc1-funktiosta.
Lightbot tehtävä: Kirjoita ohjelma, jonka avulla hahmo voi käydä sytyttämässä valon sinisellä merkittyihin ruutuihin. Sallitut komennot on annettu alareunassa, ohjelman tulee koostua main-osasta sekä proc1-osasta.

Kahdella kerhokerralla otin mukaan Koodikerho-yhteisön tarjoaman robotin, jonka avulla pystyin havainnollistamaan lapsille koodauksen vaikutusta fyysiseen maailmaan. Toisella kerralla ohjelmoitava robotti oli Lego Mindstroms, jonka voi ohjelmoida reagoimaan erilaisiin syötteisiin: ääneen, valoon sekä etäisyyteen. Käytettävissä olevat komennot ovat eteen, taakse, käänny oikealle ja käänny vasemmalle. Jokainen kerholainen ohjelmoi vuorollaan robotin suorittaman itse keksimänsä ohjelman. Suosittuja ohjelmia olivat erilaiset toistorakenteet, joissa robotti suoritti eteenpäin komentoa, kunnes sai jonkun syötteen (ääni, valo tai lähestyvä objekti), jonka jälkeen robotti pysähtyi, kääntyi, peruutti ja jatkoi matkaansa.

20151028_164458
Ohjelmoitava Lego Mindstorms robotti

Toisella robottiin tutustumiskerralla oli jälleen Koodikerho-yhteisön tarjoama robotti, joka osaa suorittaa JavaScript-koodia. Lapset ohjelmoivat robotin suorittaman lyhyitä pätkiä koodia käyttäen seuraavia komentoja: turnRight(); turnLeft(); moveForward(); sekä moveBackward(); .

Suluissa annetaan liikkumiskomentojen yhteydessä pikselimäärä, jonka robotti liikkuu. Kääntymiskomentoja annettaessa suluissa määritellään astemäärä, jonka robotti kääntyy. Vaikka omat kerholaiseni eivät olekaan vielä koulussa opiskelleet asteita tai pikseleitä, olivat käsitteet tulleet tutuksi jo aiemmilla kerroilla code.org-ympäristössä harjoiteltaessa, joten he osasivat soveltaa niitä hyvin.

Kerhon ohjaukseen valmistautumista.
Kerhon ohjaukseen valmistautumista.

Tärkein oivallus robottien kanssa puuhatessa oli se, kuinka ohjelmointi vaikuttaa fyysiseen ympäristöön. Huomasimme myös yhdessä, kuinka vakavia ohjelmointivirheet voivat olla. Esimerkiksi JavaScript-robottia ohjelmoitaessa on merkitystä sillä, kuinka monta nollaa 1:n perään laitetaan. Ohjelman suoritus pysähtyy vasta, kun se on suoritettu loppuun tai kun akku loppuu. Jos sulkuihin lipsahtaa 10000 tarkoitetun 100 sijaan, saattaa akku ehtiä loppua ennen kuin ohjelma on suoritettu.

Loppusyksystä lapset pääsivät ohjailemaan ihmisrobottia uudestaan, tällä kertaa aitoja JavaScript-komentoja käyttäen ja muutenkin syksyn aikana oppimaansa hyödyntäen. Koodauksen opettelu huipentui siihen, että lapset kirjoittivat aitoa JavaScript koodia harjoitteluympäristössä. Tällä kertaa tunti vietettiin osoitteessa http://turtle-js.herokuapp.com, jossa voi kokeilla erilaisten JavaScript-komentojen antamista. Kerhokertoja on vielä jäljellä kaksi. Toisella kertaa teemme yritysvierailun ”oikeiden koodareiden” työpaikalle. Viimeisellä kerralla vietämme pikkujouluja herkkujen kera.

turtlejs
TurtleJs harjoitusympäristö, jossa kokeillaan JavaScript komentoja.

Koodikerhossa ei keskitytty minkään yksittäisen ohjelmointikielen opetteluun, vaan ohjelmoinnillisen ajattelutavan opetteluun: kuinka ongelman ratkaisu aloitetaan, miten annetaan yksikäsitteisiä komentoja tietokoneelle ja mitkä komennot ja missä järjestyksessä ratkaisevat esitetyn ongelman. Kerholaiset pääsivät myös harjoittelemaan yhteistyötaitoja ratkaistessaan ohjelmointiongelmia ja tutustuessaan robottien toimintaan ryhmässä.

Kaikkien ei tarvitse tulevaisuudessakaan olla ammattikoodareita. Nykyajan tietoyhteiskunnassa tietokoneet ovat tärkeä osa ihmisten arkea ja on nykyajan ympäristöoppia ymmärtää niiden toimintaa. Koodikerhot tarjoavat lapsille hyvän tavan tutustua heitä ympäröivään maailmaan.

Koodikerhon ohjaaja Anni Moilanen

Seuraa Koodikerhoa!