Perushahmotusta ohjelmointiin 2: opetus, luovuus ja harrastus

Ohjelmointi mainitaan perusopetuksen laaja-alaisissa osaamistavoitteissa sekä matematiikan ja käsitöiden sisällöissä alkuopetuksesta alkaen kaikille oppilaille opetettavana asiana. Siksi sen opettamiseen sekä oppilaille että opettajille kannattaisi etsiä uusia näkökulmia, motivoivia opetustapoja ja sopivia ohjelmointiympäristöjä. Ohjelmointi ei ole vain tekniikkaa ja algoritmista ajattelua, vaan myös luovuuden kehittämiseen tulisi kiinnittää olennaista huomiota.

Perusopetuksen opetussuunnitelman perusteiden mukainen ohjelmoinnin opetus alkaa alkuopetuksessa vaiheittaisten toimintaohjeiden laatimisesta. Esimerkiksi LUMA-keskus Suomen ohjelmointikurssin [1] kurssiraporteista käy ilmi, että alkuopetuksen opettajat ovat kehittäneet monenlaisia ohjelmoinnilliseen ajatteluun johdattelevia toiminnallisia harjoituksia, joissa ei tarvita tietokonetta, vaan ”ohjelmointi” on ihmisten välistä kommunikointia. Varsinaisesti ohjelmointi tietokoneen ohjaamisen mielessä tulee mukaan vuosiluokilla 3–6, joiden kohdalla opetussuunnitelman perusteet ohjaavat toimimaan graafisissa ohjelmointiympäristöissä. Yläluokilla ohjelmointia käytetään ongelmien ratkaisemiseen ja suunnitteluun. 

Oppimateriaaliratkaisuissa on paljon vaihtelua. Varga–Neményi-yhdistyksen alaluokkien Matematiikkaa-sarjassa ei ole erityisiä ohjelmointijaksoja, vaan ohjelmoinnilliset tehtävät on liitetty matematiikan sisältöalueisiin, missä ne palvelevat samalla matematiikan perusasioiden oppimista. Toiminnallisina välineinä käytetään Bee-Bot-lattiarobotteja ja Scratch Junior -ympäristöä. 

”Ensisijaisesti pyritään esittelemään ohjelmoinnin maailmaa ja tutustumaan siihen eikä niinkään tuottamaan koodareita”, sanoo yhdistyksen toiminnanjohtaja Anni Lampinen.

Avoimen matematiikan ja Editan Säteen materiaalit ovat vapaasti saatavilla verkossa. Edellisessä on sähköistä lisämateriaalia Scratch-ohjelmointiin ja jälkimmäisessä sekä Scratchiin että Pythoniin. Myös ohjelmointialustat ovat tarjolla. SanomaPron materiaalit ovat vain oppikirjan käyttäjien saatavissa. Alakoulun Kymppi-sarjan kirjoissa on ohjelmointia käsittelevät luvut. Lisäksi on saatavissa erillinen ohjelmointitehtävälisenssi Scratch-materiaaliin. Yläkoulun Kuutio-sarjassa on viiden oppitunnin mittaiset ohjelmointijaksot, ohjelmointikielenä Python. Otavan Pii-sarjan kirjoissa on ohjelmointia kaikilla vuosiluokilla, lisäksi ohjelmointiharjoituksia digimateriaalissa. Edukustannuksen Luku-sarjassa on kunakin yläluokkien vuotena parikymmentä ohjelmointitehtävää omana jaksonaan. Ratkaisu on mielenkiintoinen, sillä kunakin vuotena on uusi ohjelmointiympäristö: Excel, html ja Geogebra. 

Nyt kun ohjelmointia opetetaan kaikille oppilaille, opiskelun motivoimiseen ei koulussa enää riitä se sama asenne, jolla matematiikkaa opetetaan monesti yhä edelleen: koska se on tärkeää ja sitä tarvitaan tulevaisuudessa. Tarvittaisiin muitakin ideoita. Harjoitusten ja opiskelumateriaalien suunnittelussa vain taivas ja mielikuvitus ovat rajana niin kuin Linda Liukkaan koodisatukirjat [2] todistavat. Miksi ei siis otettaisi yläluokilta lähtien mukaan myös ääntä ja liikkuvaa värikuvaa, esimerkiksi Paula Anttilan Geogebra-työn Kukkanen [3] tapaan (kuva 1)? Ohjelmoinnin opiskelun mahdollisuuksien osalta tilanne on muuttunut olennaisesti paremmaksi voimassa olevien opetussuunnitelmien kirjoittamisen jälkeisinä vuosina. Opettajille ja oppilaille tarjotaan paljon koulutusta, esimerkiksi Tie koodariksi, LUMATIKKA-ohjelman Python-kurssit, MAOLin ohjelmointimateriaalit [4], Helsingin yliopiston Java-kurssi peruskoululaisille [5] ja Aalto-yliopiston MOOC-kurssi lukiolaisille [6].

Kuva 1: Kukkanen (gif-animaatio). (saatavissa myös https://www.geogebra.org/m/HB3XQSzQ)

Graafisen ohjelmointiympäristön rinnalla kannattaisi ehkä käyttää jotain ohjelmointikieltä jo alaluokillakin. Ohjelmointikielen ottamista graafisen ohjelmointiympäristön rinnalle puolustaa sekin, että Tieteen tietotekniikkakeskukseen 2014 oppilaille järjestämän ohjelmointikurssin pitäjä Panu Kalliokoski sanoi graafisesta ohjelmointiympäristöstä näin: 

”Ohjelmat vievät paljon tilaa, ja ne täyttävät ruudut nopeasti. Blokkipaletit ovat sekavia. Ylipäänsä ohjelmoiminen blokkeja ympäriinsä vetelemällä on turhauttavaa. Lisäksi asioiden kokeileminen on hankaloitunut: Logossa saattoi sanoa ”print [heips]” ja sana ”heips” ilmestyi ruutuun; blokkiparadigmassa tästä pitää ensin tehdä skripti ja sitten skripti pitää osata ajaa. Niinpä en ole ihan varma, onko blokkiparadigma loppujen lopuksi edes parempi kuin suora komentojen kirjoitus näppäimistöltä [7].” 

Luovuutta kehiin

Tietotekniikkaa, ohjelmointi mukaan lukien, opetetaan vieläkin usein lapsille ja nuorille irrallaan heidän kiinnostuksenkohteistaan ja arvoistaan. Opetuksessa korostuvat luomisen asemesta tekniset yksityiskohdat, kuten ohjelmarakenteet ja ohjelmointikielen lauseoppi, esimerkiksi Tie koodariksi materiaalissa (kuva 2). Sen sijaan ammattiohjelmoijat itse pitävät ohjelmointia usein luovana, taiteen tekemiseen verrattavana prosessina [8]. Luovuutta voidaankin pitää hyvällä syyllä ohjelmoinnillisen ajattelun olennaisena ja opetuksessa kehitettävänä piirteenä. Puhutaanpa erikseen vielä luovasta ohjelmoinnista [9].

Kuva 2: Tie koodariksi, harjoitus 4:1.

Liukas sanoi YLEn haastattelussa [10], että ”koodaus ei ole vain tietotaitoa, vaan myös luomisen väline. Koodaus on 2000-luvun keksimisen kieli. Se on itseilmaisun muoto, samalla tavalla kuin esimerkiksi legot tai värikynät”. Viime vuosien keskustelussa ja mediaotsikoissa ohjelmointi on ollut esillä useimmiten koodauksen nimellä. Koodaus on kuitenkin vain pieni tekninen osa ohjelmointia, joka sekin on vain pieni osa sitä ymmärrystä, mitä tietotyön tekijä ja tavallinenkin kansalainen tarvitsee tulevaisuudessa. Liukas sanoo kolumnissaan [11] edelleen, että ”diginatiivi hallitsee teknologiaympäristönsä. Yrityksissä ajatellaan, että koodarithan vain toteuttavat mekaanisesti organisaation päätöksiä, oli kyseessä sitten uusi tuote tai palveluprosessi. Mutta eivät lentokoneilla lentävät lapset ymmärrä taianomaisesti virtausdynamiikkaa, eikä teknologian käyttäminen varmista syvällistä ymmärrystä siitä.”

”Työpaikoilla tarvitaan luovia, yhteistyökykyisiä, vahvasti ja monialaisesti ajattelevia työntekijöitä. Yliopistoa tai peruskoulua ei kuitenkaan pidä rakentaa pelkästään vastaamaan yritysten akuuttiin työntekijäpulaan. Tulevaisuuden osaaja kirjoittaa koodia, mutta ymmärtää myös teknologian ja yhteiskunnan suhdetta. Koululainen analysoi, miten algoritmit vaikuttavat vaalituloksiin, hahmottaa, miten koneoppimisjärjestelmät saattavat olla rasistisia, keskustelee teknologian historiasta ja tunnistaa, minkälaisissa tehtävissä ihminen on konetta taitavampi.”

Luova näkökulma korostuu myös Helsingin yliopiston vetämässä Innokas-hankkeessa. Siinä on mukana kymmeniä kouluja eri puolilta Suomea. ”Innokas-verkosto ohjaa ja innostaa oppilaita, opettajia, koulun toimijoita ja yhteistyökumppaneita luovuuteen ja innovatiivisuuteen teknologiaa monipuolisesti hyödyntäen. Rohkaisemme lapsia ja aikuisia luomaan uusia yhdessä ideoituja tapoja hyödyntää teknologiaa koulun arjessa”, sanotaan sen blogisivulla. Siellä puhutaan muun muassa innovatiivisesta koulusta ja digipedagogiikasta [12].

Ohjelmointi harrastuksena

Ohjelmoinnin oppimista ja opettamista voidaan lähestyä myös ihan toisesta näkökulmasta. Linus Torvaldsin esittämä Linuksen laki  [13] selittää ihmisen käyttäytymistä kolmella motiivilla: eloonjääminen, sosiaaliset suhteet ja viihde. Perusluonteisin on eloonjääminen. Sosiaaliset suhteet ovat sitä korkeampi motiivi, koska ihminen on valmis kuolemaan esimerkiksi rakastettunsa, kotimaansa tai muun yhteisönsä puolesta. Korkein motiivi on viihde. Viimeksi mainittu ei käsitä pelkästään viihteen vastaanottamista, vaan kaikkea, mihin ihminen suhtautuu innostuneesti tai intohimoisesti. Onko se myös työn kuva yhä useammalle ihmiselle tulevaisuudessa, kun tekoäly ja robotit alkavat vastata yhä suuremmasta osasta rutiinityötä ja kun ihminen ei enää sitoudu eikä voikaan sitoutua yhteen yhden alan uraputkeen koko elämän ajaksi.

Kuva 3: ympyrä ja animoitu puoliympyrä (saatavissa myös https://www.geogebra.org/m/daenbevq)

Aktiivisella, intohimoisella harrastamisella on oma merkityksensä myös yhä lisääntyvän vapaa-ajan täyttämisessä. Siinäkin suhteessa ohjelmoinnin kouluopetuksella voisi olla merkitystä. Ei sellaista osaa ruveta harrastamaan, mistä ei mitään tiedä tai johon ei ole tutustunut ja tottunut jo lapsena. Samoilla linjoilla Kalliokosken kanssa liikkuvat Helsingin yliopiston lapsille suunnatuilta ohjelmointikursseilta saadut kokemukset [14]: ”Koska ohjelmoimalla voi tehdä mitä vain, on sitäkin tärkeämpää antaa aina uusia mielenkiintoisia tehtäviä ja haasteita, koska suurin osa ohjelmoinnin mahdollisuuksista ei ole käsin kosketeltavissa, eivätkä ne tule ilmi ohjelmointiympäristöistä. – – Koska leikki on paras motivaatio, tarvitaan ohjelmointiympäristöjä, joissa ohjelmien tulokset on helppoa nähdä (tai kuulla, tuntea, haistaa) ja joissa asioita on helppoa kokeilla. Tämä tarkoittaa käytännössä, että kaikki ylimääräinen vaiva on liikaa. Lapsen ei pidä joutua miettimään syntaksin välimerkkejä, ohjelmien tallettamista ja ajamista (puhumattakaan kääntämiseen liittyvistä komennoista), kryptisiä virheilmoituksia tai mystisiä ohjelmointiympäristön kaatumisia. Tähän mennessä parhaat ohjelmointiympäristöt ovat olleet Scratch ja Logo.”

Pienestä pitäen liikkumaan oppinut lapsi on liikunnallisempi ja terveempi vanhanakin. Voisiko ohjelmointi olla liikunnan rinnalle sopiva älyllinen harrastus? Tähän voisi viitata se, että Google-haku ”recreational programming” (= huviohjelmointi?) tuottaa 126 000 osumaa. Yksi näistä on blogikirjoitus Rediscover the Joy of Coding [15]. Siinä kirjoittaja kertoo omista leipätyön ulkopuolisista ohjelmointiprojekteistaan. Ne eivät ole kiinnostavia tässä yhteydessä, mutta hänen neuvonsa ovat. ”Sinun ei tarvitse olla poikkeusyksilö, vaan vain yritteliäs ja sisukas. Jatka keksimistä. Kerro projekteistasi muille; heidän palautteestaan saat energiaa ja inspiraatiota. Kerro myös epäonnistuneista projekteista; ne virittävät keskustelua.” Huviohjelmointi voi hänen mielestään olla monimuotoista, esimerkiksi musiikkia tuottava yhden rivin C-koodi. (Huomaa, että tässä ’recreational’ ei viittaa pelkästään huviin, vaan sillä on samat sivumerkitykset kuin vastaavalla ranskan kielen sanalla: harrastus, virkistys, vapaa-ajan toiminta.) Monet someyhteisöt ja -ryhmät sekä keskustelupalstat todistavat tämän toimintatavan puolesta. Lisää tietoa huviohjelmoinnista löydät itsekin hakukoneilla.

Lähteitä ja lisää luettavaa

[1] Korhonen, Hannu: Ohjelmointia opettajille. Dimensio 19.3.2021 osoitteessa https://www.dimensiolehti.fi/ohjelmointia-opettajille/

[2] Korhonen, Hannu: Kirjallisuutta – Hello Ruby. Dimensio osoitteessa 8.4.2021 https://dimensiolehti.fi/kirjallisuutta-hello-ruby/

[3] Anttila, Paula: Kukkanen osoitteessa https://www.geogebra.org/m/HB3XQSzQ Kannattaa katsoa myös alkuperäistä työtä verkosta, sillä gif-animaatio ei näytä kuin osan dynaamisuudesta.

[4] Ohjelmointi peruskoulun matematiikassa, MAOLin jäsenmateriaali osoitteessa https://maol.fi/materiaalit/kpm/

[5] Ohjelmointikurssi, Helsingin yliopisto, RAGE-tutkimusryhmä, osoitteessa https://ohjelmointikurssi.github.io/

[6] Ohjelmoinnin MOOC, Aalto-yliopisto, osoitteessa http://mooc.aalto.fi/ohjelmointi/scala_2020.html

[7] CSC:n ohjelmointikerho osoitteessa [8] Vilkko, Antti: Ohjelmoijan luovuus ohjelmistoprojektissa: neljä peruspilaria, blogikirjoitus (2014) osoitteessa https://gofore.com/ohjelmoijan-luovuus-ohjelmistoprojektissa-nelja-peruspilaria/

[9] Fagerlund, Janne: Luova ohjelmointi osoitteessa https://peda.net/p/jannefagerlund/ohjelmoinnillinen_ajattelu/scratch/luovaohjelmointi/lol

[10] Peltola, Satu-Lotta: Lastenkulttuurin valtionpalkinnon saaja Linda Liukas: ”Koodaus on kuin legot tai värikynät” osoitteessa https://yle.fi/uutiset/3-7640792. YLE-uutiset 2014.

[11] Liukas, Linda: Suomalaisen koodikoulutuksen tulee perustua muullekin kuin ohjelmoinnille. Kolumni 24.10.2018 osoitteessa https://yle.fi/uutiset/3-10468626

[12] Innokas! osoitteessa https://www.innokas.fi/

[13] Wikipedia-artikkeli Linus Torvalds osoitteessa https://fi.wikipedia.org/wiki/Linus_Torvalds

[14] Ohjelmointia lasten ehdoilla osoitteessa [15] Terekhov, Vladimir: Recreational Programming. Rediscover the Joy of Coding (2018) osoitteessa https://blog.usejournal.com/recreational-programming-279e330c6f9a

Kirjoittaja