Vierailijakynä: Ohjelmoinnin opiskelu koulussa on muutakin kuin vain itse ohjelmointia

Tutkija, Innokas-verkoston Keski-Suomen aluekoordinaattori ja kasvatustieteen tohtori Janne Fagerlund haastaa blogikirjoituksessaan vallitsevia ohjelmoinnin ja ohjelmoinnillisen ajattelun opetuksen tapoja.

Haluan, että mietit omat vastauksesi kahteen kenties hieman hankalaan kysymykseen: Miksi opetamme koululaisille ohjelmointia ja ohjelmoinnillista ajattelua koulussa? Mitä oppilaat oppivat, kun opetamme heille näistä aiheista? Pysähdy miettimään vastauksiasi hetki, ja pidä ne sen jälkeen mielessäsi. Saatan nimittäin haastaa ajatuksiasi tässä kirjoituksessa väittämällä seuraavaa. Ensinnäkin, ohjelmoinnillisen ajattelun opetuksessa on ollut pahoja väärinkäsityksiä. Toiseksi, se, että oppilaat oppivat itse ohjelmoimaan koulussa, ei ole välttämättä kovin olennaista. Kolmanneksi, kouluissa on opetettu vanhanaikaista ja jokseenkin tarpeetonta ohjelmointiosaamista. Näistä huolimatta ohjelmoinnin opiskelu koulussa on kriittisen tärkeää ja todella hyödyllistä. Miksi?

Arkitodellisuus ohjelmoinnin oppimisen ponnahduslautana

Lähdin itse tutkijakokelaana tutustumaan ohjelmoinnin opetukseen uuden opetussuunnitelman kynnyksellä noin vuoden 2015 tuntumassa. Löysin alkuun monille taatusti tutuksi tulleita materiaaleja, kuten Koodi2016-oppaan, Innokas-verkoston ”Lähtölaukaus koodaukseen” -tehtäväpaketin ja eri kaupallisten toimijoiden opettajille suunnattuja ohjelmoinnin ja ohjelmoinnillisen ajattelun koulutuskokonaisuuksia. Näissä lähdemateriaaleissa ohjelmoinnillisen ajattelun kuvattiin olevan yleisesti ottaen jotakin kuin ”kaavojen tunnistamista”, ”ongelman purkamista osiin”, ”algoritmien luomista”, ”vaiheittaisten toimintaohjeiden luomista” ja ”toimintojen automatisoimista”. Vastaavanlaiset fraasit saattoivat käväistä myös lukijalla mielessä.

Unohdetaan kuitenkin edellinen hetkeksi ja lähestytään ohjelmoinnin opetusta koulussa heti alkuun hieman toisesta näkökulmasta. Lainaan tätä varten taustaksi Peter Denningin ja Matti Tedren kirjaa Computational Thinking (2019, 1–2) ja siitä vapaasti suomentamaani katkelmaa johdantotekstistä:

Lähes kaikki laitteemme ja kapistuksemme ovat tietokoneita: puhelimet, tabletit, pöytätietokoneet, verkkosivut, kellot, navigaattorit, lämpömittarit, lääketieteelliset koneet, televisiot, DVD-soittimet, langattomat verkot. Palvelumme ovat ohjelmistoja – kirjakaupat, myymälät, pankit, kuljetus, Uber, hotellivaraukset, Airbnb, elokuvanteko, viihde, Dropbox, verkkokurssit, Google-haut – ja lähes kaikkia näitä mahdollistavat näkymättömät tietokoneet näkymättömässä maailmanlaajuisessa verkossa, jota kutsutaan “pilveksi”. Tietokoneet ovat tuoneet suurenmoisia hyötyjä – uusia töitä, tiedon saatavuutta, talouden kehitystä, kansallista turvallisuutta, terveydenhuollon uudistuksia ja paljon muuta. Ne ovat samalla tuoneet merkittäviä huolenaiheita – työpaikkojen katoamista, globalisaatiota, yksityisyyden haasteita, valvontaa ja paljon muuta. Näyttää siltä, että aivan kaikki mitä voidaan digitalisoida myös digitalisoidaan, ja tietokoneet ovat kaikkialla varastoimassa ja käsittelemässä tätä informaatiota. Tietokonevallankumous on todellakin täällä.”

Kuten katkelmassa kuvataan, ohjelmoinnin rooli eri elämänalueilla on räjähtänyt. Eri tieteistä ja työaloista, kuten biologiasta, kielitieteistä ja vaikkapa valokuvauksesta löytyy yhä useammin erikoistumishaara nimenomaan ohjelmoinnin erityiskysymyksiin erilaisten hyötyjen ja uudistusten aikaansaamiseksi. Ammattilaiselämän rinnalla ohjelmointi on yltänyt myös arkipäiväämme. Kenties olemme miettineet, mitä henkilökohtaisia tietoja Googlen ja Microsoftin kaltaiset megayritykset keräävät kantamiemme älylaitteiden, sovellusten ja biometristen sensorien kautta ja mitä näillä tiedoilla tehdään. Olemme saattaneet törmätä digitaalisiin väärennöksiin (esim. ”deepfake”-videoihin) tai huomanneet joskus kuplautuneemme somepalvelussa esimerkiksi laihdutusaiheisten postausten äärelle profilointi- ja ohjausalgoritmien vaikutuksesta.

Kuvakaappaus YLE:n artikkelista ”Syvä huijaus” 6.9.2019 (https://yle.fi/uutiset/3-10955498).

Ohjelmointi tuli kouluihin vuonna 2016 opetussuunnitelmauudistuksen myötä, kun kasvattajat muuallakin päin maailmaa olivat aiheellisesti heränneet tästä aihealueesta opettamisen tärkeyteen. Lapsille ja nuorille kehitettiin mainioita legorobotiikan, Scratchin ja Micro:bitin kaltaisia ohjelmointiympäristöjä, ja aihealueen ympärille syntyi Innokas-verkoston kaltaisia aktiivisia kehittäjäyhteisöjä.

Toisaalta pedagoginen kehitystyö ohjelmoinnin opetuksessa jäi hieman sutimaan paikoilleen. Ongelmaksi jäi, että ohjelmoinnin ja ohjelmoinnillisen ajattelun opetusta perusteltiin epämääräisillä tiedoilla ja taidoilla, kuten ”kaavojen tunnistamisella”, joista oman käsitykseni mukaan kovinkaan moni opettaja (saati aihealueen asiantuntija) ei ole sittemmin saanut kovinkaan hyvää otetta. Syy on yksinkertainen: tällaisia taitoja ei ole vieläkään määritelty selvästi kouluopetuksen kannalta, eikä niille ole olemassa tutkimuksellisia perusteitakaan.

Ohjelmoinnin opetuksen taustalle voidaan asettaa tärkeämpiäkin tavoitteita kuin epämääräisten ongelmanratkaisutaitojen oppiminen. Ohjelmointia ja ohjelmoinnillista ajattelua tarvitsee opiskella koulussa, koska elämme ohjelmoidussa maailmassa. Oppilaiden on tärkeä oppia konkreettisesti, mitä ja missä ohjelmoituja laitteita ja sovelluksia on, kuka niitä tekee, miksi niitä tehdään ja miten niitä tehdään. Onkin kenties harkinnanvaraista, käytetäänkö termiä ”ohjelmoinnillinen ajattelu” tässä yhteydessä lainkaan, sillä ennen kaikkea kyse tässä voisi olla jonkinlaisen ”ohjelmoinnin lukutaidon” opiskelusta. Toisaalta pelkästä ohjelmoinnin oppimisesta puhuttaessa voi olla riski lipsahtaa puhumaan hyvin kapea-alaisesti pelkästä ”koodaamisen” eli ohjelmakoodin kirjoittamisen oppimisesta.

Ohjelmoinnin ”lukutaidosta” eväitä elämään

Mikäli ohjelmoinnin opiskelun hahmottaa enemmän tai vähemmän lukutaitona, se voidaan mielekkäästi sijoittaa ennen kaikkea monilukutaidon kenttään siinä missä ohjelmointia on aiemmin ymmärretty pikemminkin TVT-taitoina ja ongelmanratkaisuosaamisena. Ohjelmoidut asiat voidaan ymmärtää jonkun tuottamina oikean elämän monimediaisina ”teksteinä”, joita voidaan ”lukea” kriittisesti ja tuottaa itsekin. Kaikille pakollista oppimäärää voisikin olla hankkia monilukutaidon tai medialukutaidon henkeä jäljittelevää ymmärrystä digitaalisesta ohjelmoidusta maailmasta; käsitystä siitä, millaisia ohjelmoituja laitteita ja sovelluksia kohtaamme ja käytämme ja millaisten vaikutuksen alaisena olemme esimerkiksi arjen eri tilanteissa.

Ohjelmoinnin oppimisen tällainen päämäärä voitaisiinkin konkretisoida käytännön luokkahuonetoiminnassa jonkinlaisena ”ohjelmoinnin ihmettelynä”, eli erilaisina tutustumisina ja sukelluksina siihen, millaisia arjen digilaitteita (esim. älykelloja, kodin teknologiaa), arjen digipalveluilta (esim. some, pelit, sovellukset, hakukoneet) ja teknologioita (esim. robotiikka, tekoäly, esineiden internet) on olemassa, mitä ne tekevät, miksi ja kuka niistä päättää. Uudet lukutaidot -kehittämisohjelman uudehkot osaamiskuvaukset ovat opetussuunnitelmaamme verrattuna kokonaisuudessaan erinomainen vipuvarsi ohjaamaan koulujen ja opettajien työtä johdonmukaisemmin juuri tällaisen eetoksen äärelle. Käytännön opetustyössä on kuitenkin tärkeä huomioida, että tällainen ohjelmoinnin opiskelu ei välttämättä vaadi ohjelmoimista itse, eikä ohjelmoimista voidakaan kenties näin ollen priorisoida kaikista olennaisimmaksi tekemiseksi. Tässä kohti saavummekin uuden ja tärkeän haasteen eteen: miten kehitämme opetusta (esim. oppimateriaaleja) sellaiseen ohjelmoinnin opiskeluun, jossa ei aina vain ohjelmoida?

Ilman muuta silloin tällöin osana ohjelmoinnin tutuksi tekemistä koululuokassa oppilaiden on hyvä ohjelmoida itse esimerkiksi robotiikan keinoin, animoiden, värkkäillen ja omia pelejä kehittäen. Näin saadaan konkreettisen tekemisen kautta voimakkaita oppimiskokemuksia hieman soveltavammissa tiedoissa ja taidoissa, kuten ymmärrystä sitä, miten ohjelmoidut laitteet ja sovellukset käytännössä toimivat: tarkalleen ottaen esimerkiksi, miten ohjelmoinnissa käytetään erilaisia koodirakenteita, sensoreita, loogisia operaatioita ja dataa muuttujissa. Kaikkiaan ohjelmointi tällaisten sisältöjen oppimisen suunnassa voi olla motivoivaa ja aktiivista yhdessä tekemistä ja ongelmanratkaisua, jossa mahdollistuu myös oppiaineintegrointi. Ohjelmointia sisältävät monialaiset projektit, kuten omat pelit ja älylaitteet tai keksinnöt, jotka ratkaisevat oikean elämän ongelmia, ovat erinomaisia pedagogisia aihioita tässä. Yhdessä tekemiseen harjaannuttamisen ja oppiaineintegroinnin kaltaiset seikat ovat kuitenkin ohjelmoinnissa ennen kaikkea onnekkaita sivutuotteita tai jopa hyödyllistä ”bonusta”, eivätkä ohjelmoinnin opiskelun kriittisiä elinehtoja.

Soveltavampi tekeminen eli ohjelmoiminen itse on parhaimmillaan monipuolista, hauskaa ja aktiivista yhdessä tekemistä. (Kuvat: Miika Miinin)

Lopuksi, aivan erillisenä haasteena ohjelmoinnin opetuksessa on tekoälyn ja koneoppimisen läsnäolon kasvu arjessamme. Sääntöpohjainen ohjelmointi, kuten omien tarinaprojektien ohjelmointi koodilohkoilla Scratchissa, ei rinnastu erityisen hyvin sellaisiin nykyaikaisiin laitteisiin ja sovelluksiin, kuten kasvojentunnistus-appeihin ja someprofilointiin, joita lapset ja nuoret paljolti tottuvat kohtaamaan jokapäiväisessä elämässään esimerkiksi älypuhelimia käyttäessään. Onkin esitetty huolia siitä, että vanhanaikaisen ohjelmoinnin oppiminen koulussa on jokseenkin epäolennaista ja tarpeetonta. Itse ajattelen kuitenkin, että esimerkiksi legorobottien ja Scratchin kautta lapset ja nuoret tempaistaan ohjelmoinnin maailmaan mainiosti sisään yhdellä toimivalla tavalla. Tästä huolimatta on kasvavan tärkeä miettiä lisäksi, miten huomioimme nykyaikaisemmatkin ohjelmoimisen tavat ohjelmoinnin opetuksessa. Uusien pedagogisten mallien kehittämisessä tekoälyn ja koneoppimisen kontekstiin onkin hiljalleen aktivoiduttu esimerkiksi Googlen ”TeachableMachinen” kaltaisten kokeiluympäristöjen ja erilaisten tekoälyn etiikkaa käsittelevien oppimateriaalien kautta, mutta kaikkiaan juuri tämä ohjelmoinnin opetuksen kehittämisrintaman aivan aallonharjan kärkikuohussa oleva aihepiiri kutsuu ja tarvitsee lisää innostuneita pedagogisesti orientoituneita kehittäjiä.

Googlen TeachableMachine-ympäristö (https://teachablemachine.withgoogle.com/).

– Janne Fagerlund

Kirjoittaja on tutkija, Innokas-verkoston Keski-Suomen aluekoordinaattori ja kasvatustieteen tohtori, joka väitteli syksyllä 2021 aiheesta ohjelmoinnillinen ajattelu peruskoulukontekstissa ja työskentelee tällä hetkellä kansainvälisessä ICILS 2023 -vertailuarviointitutkimuksessa Jyväskylän yliopiston Koulutuksen tutkimuslaitoksella.

One thought on “Vierailijakynä: Ohjelmoinnin opiskelu koulussa on muutakin kuin vain itse ohjelmointia

Vastaa

Täytä tietosi alle tai klikkaa kuvaketta kirjautuaksesi sisään:

WordPress.com-logo

Olet kommentoimassa WordPress.com -tilin nimissä. Log Out /  Muuta )

Facebook-kuva

Olet kommentoimassa Facebook -tilin nimissä. Log Out /  Muuta )

Muodostetaan yhteyttä palveluun %s