Hyppää sisältöön

Osa artikkelin sisällöstä ei ole välttämättä saavutettavissa esimerkiksi ruudunlukuohjelmalla.

Opettaja venyttää suunsa apposen auki ja työntää kielen ulos. Ekaluokkalaiset tirskahtelevat huvittuneina. "Sulje suu", eturivistä käsketään. Opettaja tekee työtä käskettyä ja sulkee suunsa. Kieli jää huulten väliin. Lapsia naurattaa.

Menossa on Kapteeni käskee -tyylinen leikki, jossa oppilaat antavat robottia matkivalle opettajalleen ohjeita, jotka hänen pitää toteuttaa sanatarkasti. Leikin tarkoituksena on saada lapset oppimaan täsmällisten ohjeiden antamista.

Periaatteessa ensiluokkalaiset siis "ohjelmoivat" opettajaansa leikin avulla. Tämän jutun esimerkit on kuviteltu, mutta uuden opetussuunnitelman myötä tällaiset tilanteet ovat pian arkipäivää suomalaisissa kouluissa.

Ne ovat ensimmäisiä askeleita kohti koodin ymmärtämistä.

Ohjelmointitehtävä 1: Ensimmäinen askel

Klikkaamalla jotain neljästä hahmosta saat itsellesi koodieläimen. Kokeile sen jälkeen liikuttaa eläintäsi yksinkertaisilla komennoilla kirjoittamalla komentoriville esim. "Liiku oikealle 5 askelta". Hahmo osaa liikkua oikealle, alas, vasemmalle ja ylös. Huomioi, että eläin osaa liikkua vain yksinkertaisilla komennoilla.

Tällaisia ohjeiden antamiseen liittyviä tehtäviä voidaan käyttää alakoulun ensimmäisillä luokilla oleville oppilaille.

Valitse hahmosi

Hahmo
Hahmo
Hahmo
Hahmo

Ohjeita "tyhmälle" tietokoneelle

Periaatteessa koodin idea on yksinkertainen.

Koodi on kokoelma ohjeita, joiden avulla ihminen kertoo tietokoneelle, kuinka sen pitää toimia. Oli koodi miten yksinkertaista tai monimutkaista tahansa, periaate pysyy samana.

Ihminen määrittelee aina koodin sisältämät ohjeet. Esimerkiksi miten digitaalinen taskulaskin suorittaa laskutoimituksensa tai sen, kuinka Googlen hakukone löytää miljoonat hakuosumat sekunnin sadasosissa.

Koodi on siis toimintaohje koneelle. Ja näiden ohjeiden kirjoittaminen on "koodausta" eli ohjelmointia.

Tietokoneelle annetut ohjeet eivät kuitenkaan voi olla mitä tahansa. Ohjeiden pitää olla hyvin tarkkoja, sillä toisin kuin ihminen, tietokone ei kykene soveltamaan saamiaan ohjeita.

– Monet luulevat, että nimensä vuoksi tietokone tietäisi jotain. Sen nimi antaa ihmisille väärän mielikuvan, sillä tietokone on käytännössä tyhmä laskukone, oppimisen ja teknologian tutkija Tarmo Toikkanen sanoo.

Tietokone on väsymätön apuri

Hyvin yksinkertaistettuna tietokonetta voidaan ajatella laitteena, jonka sisään syötetään tietoa. Tietokone pystyy käsittelemään siihen syötettyä tietoa ja muokkaamaan sitä käyttäjälleen. Esimerkiksi kun kirjoitat tietokoneen näppäimistöllä, tietokoneen näyttöpäätteelle "ilmestyy" kirjaimia.

Tietokoneen toiminnan mahdollistavat sen sisällä oleva "rauta" eli laitteisto, kuten vaikkapa suoritin ja muisti. Tietokoneen laitteiston tehtävänä on taas toteuttaa ohjelmiston antamia käskyjä. Ohjelmistoa on esimerkiksi käyttöjärjestelmä, kuten Windows tai älypuhelimissa Android. Käytännössä tietokoneet toimivat laitteiston ja ohjelmiston yhteistyöllä.

Tietokone suorittaa sille annettuja tehtäviä väsymättä ja täsmällisesti, juuri kuten ihminen sille on neuvonut. Tämän vuoksi tietokoneen saamissa ohjeissa ei saa olla virheitä. Niiden pitää olla myös hyvin yksiselitteisiä, sillä tietokone ei pysty arvaamaan, mitä epäselvä komento voisi tarkoittaa. Toikkanen vertaa koodia ruuan kokkaamisessa käytettäviin resepteihin.

– Reseptissä kerrotaan toimintaohjeet aterian valmistukseen. Jos seuraat ohjeita täsmällisesti ja oikeassa järjestyksessä, saat lopputuloksena valmiin ruuan.

Sama pätee tietokoneisiin. Kun ohjeet ovat kunnossa, tietokone tekee sille annettuja tehtäviä virheettömästi niin kauan, kuin on tarvetta. Jos tietokone ei ymmärrä ohjeita, tai ne eivät ole johdonmukaisia, se ei pysty toimimaan halutulla tavalla.

Sen vuoksi myös opettajan kieli jäi pilkottamaan suun ulkopuolelle, kun opettajalle ei erikseen annettu ohjetta vetää sitä sisään.

Ensin opitaan ajattelu

Robottia esittävä opettaja on toistanut oppilaiden komentoja. Hänen käsiään on nostatettu ilmaan ja yhdellä jalallakin on seisty. Opettaja on seurannut ohjeita tunnollisen kirjaimellisesti ‒ kuten koneet tekevät.

Robottitehtävässä huomiota kiinnitetään erityisesti siihen, miten pieniäkin yksityiskohtia ‒ kuten opettajan kielen liikkeitä ‒ oppilaiden on otettava huomioon. Aivan kuten koodin kirjoittamisessa.

Huvituksen lisäksi kyseinen tehtävä kehittää lasten kykyä hahmottaa ohjeita ja niin sanottua ohjelmoinnillista ajattelua.

Se tarkoittaa niitä ajattelutaitoja, joita tarvitsemme, kun koetamme ratkaista erilaisia pulmia tietokoneen avustuksella. Näitä taitoja ovat muun muassa ongelman purkaminen osiin ja erilaisten kaavojen tunnistaminen.

– Tietokone pystyy tekemään loputtomasti ja virheettömästi tylsiä rutiininomaisia työtehtäviä, missä ihminen ei ole parhaimmillaan, ohjelmoinnista lastenkirjan kirjoittanut kirjailija ja ohjelmoija Linda Liukas avaa.

Hän on ollut myös kirjoittamassa opetussuunnitelman uudistuksen tiimoilta opettajille suunnattua koodausopasta, jonka tukijoina on toiminut muun muassa Liikenne- ja viestintäministeriö sekä Supercellin ja Rovion kaltaisia pelifirmoja.

Maailma on täynnä ongelmia tietokoneille

Linda Liukkaan mukaan yhä isompi osa maailman ongelmista alkaa olla sellaisia, että niiden ratkaisemiseksi tarvitaan tietokonetta. Esimerkiksi hiljattain aivotutkijat saivat tietokoneiden avustuksella kartoitettua ihmisten aivoalueet ennennäkemättömällä tarkkuudella, josta ei olisi ennen tietokoneita voitu edes haaveilla. Uusi tietämys aivoalueista voi auttaa muun muassa aivokirurgeja leikkauksissa ja edistää sairauksien hoitamiessa.

Liukas kuitenkin muistuttaa, että tulevaisuuden ongelmat eivät ole vain tietokoneiden ratkaistavissa. Aina tarvitaan ihmisiä määrittelemään ongelmat koneiden pureskeltaviksi.

– Useimmat tulevaisuuden työt vaativat ymmärrystä tehtävistä, missä kone on hyvä ja missä ihminen.

Koulussa lapsille halutaan opettaa tietokoneiden vahvuuksien ymmärtämistä, jotta niitä pystyy toden teolla hyödyntämään. Liukkaan mukaan lapset eivät kuitenkaan opettele koodia ja ohjelmointia tuottavuusloikan tai taloudellisen edun tavoittelemiseksi.

– Haluamme, että lapset ymmärtävät ohjelmoinnin itseilmaisun välineenä ja tapana ratkaista ongelmia, Liukas perustelee.

Koodi kuuluu yleissivistykseen

Luokkahuoneessa käy kuhina. Kuudesluokkalaisista valtaosa on liimautunut kiinni älypuhelimiensa ruutuihin. Joku on virittänyt luokan lähelle Pokémon Go -pelin "luren" eli houkuttimen, joka tuo oppilaiden älypuhelimien ruuduille pelin Pokémon-hahmoja metsästettäväksi.

Peli, sen hahmot ja koko maailma ovat ohjelmoinnin tuotoksia. Ja älypuhelin, jossa peli toimii, on tietokone. Kännykät ja oikeastaan kaikki tänä päivänä käyttämämme teknologia nojaa jollain tavalla koodiin ja sen ohjelmointiin.

Tämän vuoksi koodin tekeminen ymmärrettäväksi lapsille, ja oikeastaan kaikille, on tärkeää, jotta hahmotamme kuinka ympäröivä maailma toimii. Opettajien koodausoppaan Linda Liukkaan kanssa kirjoittaneen ja teknologia-alan startup-yritys Woltin perustajiin kuuluvan Juhani Mykkäsen mielestä koodauksen perusasioiden ymmärrys kuuluu nykyihmisen yleissivistykseen.

– Koulussa muun muassa opetetaan, että mitä eroa on rauduskoivulla ja hieskoivulla, tai mitä on evoluutio. Samalla tavalla on yhtä tärkeää oppia perusasiat siitä, mitä koodaamalla voidaan saavuttaa, Mykkänen vertaa.

Lapsille käytännöllisiä ja ymmärrettäviä esimerkkejä ovat juuri vaikkapa suositut kännykkäpelit, kuten Pokémon Go. Ymmärryksen kasvaessa oppilaille voidaan avata, miten esimerkiksi kuva ja ääni saadaan koodin avulla digitalisoitua, jotta se liikkuu hetkessä langattomissa puhelinverkoissa kännykästä toiseen.

Ei erillisiä koodaustunteja

Koulussa ohjelmointitaitojen ja -ymmärryksen kehittämiseen on erinomaiset mahdollisuudet, koska siellä niihin pääsevät tutustumaan kaikki lapset tasapuolisesti.

– Tästä ei tule vain etuoikeutettujen ihmisten juttu, niiden, joilla on varaa ostaa hienoja laitteita. Suomalainen peruskoulu on päättänyt, että tällaisia taitoja ja edellytyksiä on oltava kaikilla lapsilla mahdollisuus kokeilla ja nähdä, Linda Liukas summaa.

Peruskoulussa ohjelmointia ei kuitenkaan aiota opettaa erillisenä aineena, vaan ohjelmointia pyritään tuomaan osaksi kaikkia oppitunteja.

Ohjelmointia voidaan hyödyntää vaikkapa matematiikan tehtävän ratkaisemisessa tai historian esitelmän valmistelussa. Ohjelmoinnin vaikeusastetta nostetaan oppilaiden iän ja taitojen karttuessa ‒ aivan kuten muussakin oppimisessa. Kuudesluokkalaisille ohjelmointia hyödyntävät tehtävät voivat sisältää esimerkiksi pelimäisiä ulottuvuuksia.

Ohjelmointitehtävä 2: Visuaalinen ohjelmointi­ympäristö

Voit lisätä korttiin aiemmin valitsemasi hahmon ja/tai yllätyshahmon. Kun olet lisännyt korttiin hahmon, voit ohjelmoida hahmoja lisävalinnoista. Omaa hahmoa voi myös raahata kortin sisällä paikasta toiseen. Huomaa, että kortin taustaväriä voi myös vaihtaa.

Tällaisia tehtäviä voidaan käyttää 3–6-luokkalaisten koululaisten opetuksessa. Visuaaliset ohjelmointiympäristöt havainnollistavat, mitä ohjelmointi on alkutasolla ja opettavat sen perusteita.

Kortin taustaväri:

Robotit osana opetusta

Kuudesluokkalaisten Pokémonien metsästys loppuu nopeasti, kun opettaja tulee luokkahuoneeseen. Huomio kiinnittyy opettajan mukanaan tuomiin legorobotteihin.

Ne eivät ole "pelkkiä leluja", vaan ihan oikeita, ohjelmoitavia, robotteja. Enää opettajan ei tarvitse itse esittää konetta.

Oppilaat kerääntyvät pieniin ryhmiin tutkimaan opettajan tuomia robotteja. Tehtävänä on saada legorobotit liikkeelle ohjelmoinnin avulla. Kuudesluokkalaiset eivät vielä varsinaisesti itse kirjoita ohjelmakoodia, vaan he komentavat robottia niin sanotussa visuaalisessa ohjelmistoympäristössä.

Tällainen ympäristö voi olla pelimäinen näkymä esimerkiksi tablettitietokoneen ruudulla, jossa lapset harjoittelevat ohjelmoinnin perusteita. Alakoululaisille ohjelmointia on helpotettu kuvallistamalla koodia sormella tai hiirellä valittaviksi palikoiksi tai lohkoiksi.

– Visuaalisissa ohjelmointikielissä lapset siirtelevät hiirellä tai sormilla näitä koodilohkoja, jotka yhdessä muodostavat halutun ohjelman, Tarmo Toikkanen sanoo.

Käytännössä lapset siis antavat robotille komentoja "vedä ja pudota" -taktiikalla raahaamalla sormen tai hiiren avulla. Samankaltaisia tehtäviä on jo kokeiltu useiden vuosien ajan suomalaisissa kouluissa hyvin tuloksin. Innovaatiokasvatusta kouluissa edistävän Innokas-verkoston johtaja Tiina Korhosen mukaan robottitehtävät ovat oppilaille palkitsevia.

– Robotin liikkeistä näkee suoraan sen, mitä on ohjelmoitu. Suurin osa oppilaista on ollut näistä tehtävistä valtavan motivoitunut, Korhonen sanoo.

Kuudesluokkalaisten robottiryhmistä kuuluu tyytyväistä myhäilyä. Yhdet ovat saaneet robottinsa kiertämään pulpettia ja toisten robotti pyörii paikoillaan akselinsa ympäri. Yläkouluun siirryttäessä nuorten haasteet kasvavat myös ohjelmoinnissa. Silloin oppilaat alkavat jo itse kirjoittaa varsinaista koodia.

Ohjelmointitehtävä 3: Kirjoita koodia

Yläkoulussa oppilaat harjoittelevat jo koodin kirjoittamista. Tässä tehtävässä tarkoituksena on laskea omassa nimessä olevien merkkien määrä ja suorittaa yksinkertainen laskutoimitus. Aloita tehtävä kirjoittamalla ensin oma nimesi alla olevaan kenttään. Tämän jälkeen saat lisää ohjeita.

Ohjeita

Paina jokaisen komennon jälkeen enter (rivinvaihto)

"Merkkijono".length -komento laskee merkkien määrän

Muuttujaan tallennetaan arvo kirjoittamalla muuttujan nimi ja yhtäsuuruusmerkin jälkeen tallennettava arvo, esim. muuttuja = 5

Ohjelmointi on kirjoittamista

Yhdeksäsluokkalaiset ovat valmistelleet koulun juhlaa varten isoa esitystä, jossa on tarkoitus hyödyntää monipuolisesti peruskoulussa opittuja taitoja.

Esityksen valmisteluun kuuluu olennaisena osana myös ohjelmointi. Oppilaat ovat kirjoittaneet koodia, jonka perusteella esityksessä mukana olevat pienoisrobotit liikkuvat taustamusiikin tahtiin ohjelmoidun koreografian mukaisesti.

Robottitanssin ohjelmointi vaatii edistyksellisiä ohjelmointitaitoja. Ensin oppilaat ovat hyödyntäneet ohjelmoinnillista ajattelua ja miettineet, miten he haluavat robotin liikkuvan ja mitä lavaan ja muihin esiintyjiin liittyviä seikkoja pitää ottaa huomioon. Seuraava vaihe on ohjelmoinnin käytännön toteutus eli robotille sopivan koodin kirjoittaminen oikealla ohjelmointikielellä.

Ohjelmointikieliä on maailmassa satoja erilaisia. Opettajien koodausoppaassa ohjelmointikieliä verrataan puusepän erikoistyökaluihin: esimerkiksi höylällä voidaan työstää puulankun pintaa, kun taas sahalla voi katkaista saman lankun kahtia.

Myös eri ohjelmointikielet soveltuvat erilaisiin tehtäviin. Jotkut ovat eteviä nettisivujen tekemiseen, kun toisia voi hyödyntää älypuhelimien pelien rakentamiseen. Kieliä yhdistää se, että niitä pitää osata kirjoittaa.

– Koodaaminen on vähän niin kuin kirjoittamista siinä mielessä, että kaikki ihmiset pystytään opettamaan kirjoittamaan oma nimensä ja virkkeitä, ehkä jopa sadun. Samalla tavalla koodaamisesta jokainen voi ymmärtää ne perusteet, Juhani Mykkänen kertoo.

Kaikista ei tarvitse tulla koodareita

Vaikka kouluissa ohjelmointia aletaan tuoda mukaan opetukseen tästä syksystä alkaen, ei tavoitteena ole, että kaikista oppilaista pitäisi tulla ohjelmointivelhoja.

– Opetetaanhan kouluissa biologiaakin, eikä kukaan oleta, että kaikista tulisi ammattibiologeja, Juhani Mykkänen vertaa.

Hän rinnastaakin ohjelmoinnin opettelun englannin kielen taidon kehittymiseen nuorten keskuudessa.

– Ei englantia tarvinnut osata vielä sata vuotta sitten, mutta nyt lähes kaikki nuoret ymmärtävät sen perusteet.

Mykkäsen mielestä kaikkien ei tarvitsekaan jatkossa osata koodata ohjelmistoja, mutta kaikille pitäisi tulevaisuudessa olla selvää, mistä siinä on kyse. Kymmenien tuhansien koululaisten tutustuttaminen koodiin ja ohjelmointiin voi poikia tulevaisuudessa lahjakkuuksia.

– Tällä hetkellä lähes kaikki työelämässä olevista aivan parhaista koodareista ovat oppineet koodaamaan jo lapsena. Hyväksi koodariksi varttuminen vie aikaa, Mykkänen toteaa.

Yhdeksäsluokkalaisten päätösjuhlan esitys menee nappiin. Robotit noudattivat oppilaiden ohjelmointia kirjaimellisesti ja virheettä.

Tulevaisuudessa he eivät olekaan vain yksipuolisesti koodin kuluttajia, vaan osaavat myös luovia ja luoda uutta digitaalisessa yhteiskunnassa entistä paremmin.

Kouluissa siirrytään uuteen opetussuunnitelmaan tänä syksynä. Nykysuunnitelman mukaan luokat 7–9 siirtyvät ohjelmoinnin pariin vuosi kerrallaan: syksystä 2017 alkaen ohjelmointia opiskellaan luokilla 1–7, syksystä 2018 alkaen luokilla 1–8 ja 2019 alkaen luokilla 1–9.

Tekijät

Julkaistu 11.8.2016

Yle Uutiset Plus -sivuilla voit lukea lisää taustoittavia juttujamme, jotka syventävät Ylen uutis-, urheilu- ja ajankohtaisaiheita.