Ohjelmointi matemaattisten aineiden joukkoon

Perusopetuksen opetussuunnitelman perusteiden 2014 (Opetushallitus: määräykset ja ohjeet 2014:9) mukaan syksystä 2016 alkaen koulutyössä harjoitellaan laitteiden, ohjelmistojen ja palveluiden käyttöä ja opetellaan niiden keskeisiä käyttö- ja toimintaperiaatteita. Oppilaat saavat ja jakavat keskenään kokemuksia digitaalisen median parissa työskentelystä sekä ikäkaudelle sopivasta ohjelmoinnista. Perimmäisenä syynä ohjelmoinnin opettamiseen on ohjelmoinnillisen ajattelun eli oikeammin ongelmanratkaisutaitojen opettaminen tieto- ja viestintätekniikan keinoin.

Tieto- ja viestintätekniikka mahdollistavat kokonaisia maailmoja. Näihin maailmoihin yksilöiden on mahdollista uppoutua, esimerkkinä Japanissa havaittu ’hikikomori’ –ilmiö, jolla tarkoitetaan äärimmäistä sosiaalista vetäytymistä. Useimmiten tieto- ja viestintätekniikan käyttö kuitenkin nähdään hyödyllisenä ja tavoiteltavana asiana. Perusopetuksen opetussuunnitelman perusteiden 2014 mukaisesti tieto- ja viestintäteknologinen osaaminen on tärkeä kansalaistaito sekä itsessään että osana monilukutaitoa. Tieto- ja viestintäteknologia tarjoaa välineitä tehdä omia ajatuksia ja ideoita näkyväksi monin eri tavoin ja siten se myös kehittää ajattelun ja oppimisen taitoja.

”Kun istuu koneen äärellä ja tajuaa ohjelmaa käyttäessään kokevansa puhdasta ajattelun iloa, haluaa mahdollistaa saman oppilailleen” kertoo Riitta Salmenoja, Fysiikan ja matematiikan lehtori, Loimaan lukiosta MAOL ry:n kevätkoulutuspäivillä Järvenpäässä 16.4.2016. Tieto- ja viestintätekniikka mahdollistaa asioita niin paljon enemmän: laajemmat ja monipuolisemmat aineistot (mittausdata, ääni, kuva, video, simulaatio) ja lisäksi aineistojen avulla voidaan lisätä fysiikan kokeellista luonnetta, ilmiöiden havainnointia ja fysikaalista selittämistä. Kysymyksessä onkin opettamisen ydinkysymys: opitaanko asiat vain koulun kokeita varten vai olisiko taidoista hyötyä myös jatko-opinnoissa ja työelämässä?

Ohjelmoinnillisen ajattelun lähtökohtia

Ohjelmoinnillisen ajattelun käsite (engl. computational thinking) on peräisin Seymor Papertilta (1996). Käsitteellä ei ole vielä vakiintunutta suomennosta, joten eri yhteyksissä käytetään myös mm. seuraavia termejä: algoritminen ajattelu, laskennallinen ajattelu tai automatisointiajattelu.

Ohjelmoinnillisella ajattelulla tarkoitetaan ongelmien purkamista osiin, toiminnan kaavojen tunnistamista ja muodostamista sekä toimintojen automatisointia. Ohjelman purkaminen osiin on oleellinen taito kaikilla elämän osa-alueilla, ei vain ohjelmoinnin opettamisessa. Tyypillisiä esimerkkejä ongelman purkamisesta osiin ovat ajo-ohjeiden antaminen toiselle, hyvän ruokareseptin kirjoittaminen ylös tai matematiikassa luvun 175 purkaminen satoihin, kymmeniin ja ykkösiin: 1 * 100 + 7 * 10 + 5 * 1.

Kaavojen tunnistamisessa on kyse toistuvien toimintatapojen havaitsemisessa, jotka auttavat arkipäiväisten ongelmien ratkaisemisessa. Jos tietty toimintatapa auttaa ratkaisemaan ongelman, niin se todennäköisesti auttaa meitä samalla tavoin myös seuraavalla kerralla. Esimerkkinä tästä mainittakoon vaikkapa kauppalaskun tarkastamisen taito päässälaskun keinoin – kun siihen itsensä totuttaa nuoresta lähtien, niin se sujuu hyvin vanhempanakin ostajana.

Kaavojen eli algoritmien muodostamisessa on kyse jonkin tehtävän suorittamiseksi tarvittavien toimenpiteiden kuvaamisesta. Arkielämän esimerkissä kotikokki kirjoittaa ylös uuden maukkaan kastikkeen ainekset, niiden määrät ja suhteet sekä ohjeet ainesten valmistamisesta kastikkeeksi. Kyseessä on paitsi kastikkeen resepti myös sen valmistamiseen liittyvän algoritmin kuvaus. Kokin kirjaamaa algoritmia toistamalla kuka tahansa meistä voi kerta toisensa jälkeen tehdä yhtä hyvää kastiketta kuin kyseinen kokki.

Toimintojen automatisoinnissa on kyse ongelmien ratkaisujen yleistämisestä. Matematiikassa ei kannata tyytyä vain yhden luvun jakamiseen osiin, vaan etsitään yleinen laskentakaava lukujen jakamiseksi osiin. Likatahroja syntyy monenlaisia, joten etsitään vaihtoehtoisia tahranpoistoniksejä erilaisille tahroille. Keittoja on monenlaisia, joten etsitään keiton peruskaava, jota voidaan sitten varioida tarpeen ja ruokavaliorajoitteiden mukaan.

Alakoulu

Luokilla 1-2 matematiikan tunneilla aloitetaan tutustuminen ohjelmoinnin alkeisiin laatimalla vaiheittaisia toimintaohjeita, joita myös testataan. Luokilla 3-6 ohjelmointia kokeillessaan oppilaat saavat kokemuksia siitä, miten teknologian toiminta riippuu ihmisen tekemistä ratkaisuista. Tavoitteena on innostaa oppilasta laatimaan toimintaohjeita tietokoneohjelmina graafisessa ohjelmointiympäristössä. Matematiikan tunneilla suunnitellaan ja toteutetaan ohjelmia graafisessa ohjelmointiympäristössä. Käsityöntavoitteisiin kuuluu harjoitella ohjelmoimalla aikaan saatuja toimintoja, joista esimerkkinä robotiikka ja automaatio.

Vuosiluokilla 1-2 ”ohjelmointi” tarkoittaa käytännössä sitä, että oppilaita opetetaan ratkaisemaan ongelmia, jakamaan ongelmia pienempiin osasiin ja antamaan ohjeita tarpeeksi selkeästi ja yksiselitteisesti.

Tähän ei tarvita tietokonetta tai muuta tekniikkaa. Koodi2016-sivustolla vuosiluokkien 1-2 ohjelmointia kuvataan leikiksi, jonka avulla oppilas oppii tietokoneen ohjeistamisen perusperiaatteita kuten tarkkuutta ja järjestelmällisyyttä.

Esimerkkejä löytyy verkosta useita. Esim. Rubyn pukukoodi joko nettisivulta tai Hello Ruby kirjasta s. 96-97. Tehtävä tutustuttaa oppilaat ehtolauseisiin eli yksikäsitteisten komentojen antamiseen tietyissä tilanteissa. Koulumatkalla voidaan tutustua järjestettyihin käskyjonoihin, kun omaa matkaa selitetään kartan avulla koulutoverille tai äidinkielessä järjestetään väärin kirjoitetun tekstin kirjaimet oikeaan järjestykseen.

Vuosiluokilla 3-6 mukaan tulevat visuaaliset ohjelmointiympäristöt.

Visuaalinen Scratch on MIT:n kehittämä visuaalinen ohjelmointiympäristö. Scratch muistuttaa monin osin ns. luonnollisia ohjelmointikieliä, joten Scratchin pohjalta on helpompaa jatkaa ohjelmointia jollain ns. pseudokielisellä ohjelmointikielellä (esim. Java, C++ tai Pascal).

Lego Minstorms -robottituotteet perustuvat Lego-technic rakennuspalikoihin. Se on ohjelmoitava ja muunneltava robottisarja, jonka ensimmäinen versio lanseerattiin jo vuonna 1998. Robotin äly sijaitsee keskusyksikössä, johon voidaan liittää kaapeleilla moottoreita ja sensoreita. Anturit keräävät mittausarvoja, joita robotti kerää ympäristöstä (valon voimakkuus, värien tunnistus, edessä olevan esineen etäisyys, kosketus). Niitä voidaan käyttää ohjelmoinnissa apuna esimerkiksi siihen, miten robotti liikkuu, kun edessä on este ja se pitäisi kiertää.

Yläkoulu

Luokkien 7-9 matematiikassa on tavoitteena ohjata oppilasta kehittämään algoritmista ajatteluaan sekä taitojaan soveltaa matematiikkaa ja ohjelmointia ongelmien ratkaisemiseen. Ohjelmoidaan ja samalla harjoitellaan hyviä ohjelmointikäytäntöjä. Sovelletaan itse tehtyjä tai valmiita tietokoneohjelmia osana matematiikan opiskelua. Käsityössä puolestaan käytetään sulautettuja järjestelmiä käsityöhön eli sovelletaan ohjelmointia suunnitelmiin ja valmistettaviin tuotteisiin.

Vuosiluokilla 7-9 ohjelmointia tulisi opettaa osana kaikkien oppiaineiden opetusta, vaikka selkeät maininnat oppiainekohtaisista tavoitteista löytyväkin em. mukaisesti vain matematiikan ja käsityön osalta. Perusopetuksen yläluokilla syvennetään edelleen ohjelmoinnillista ajattelua ja siirrytään visuaalisista ohjelmointiympäristöistä varsinaiseen koodaamiseen.

Suosittu Racket -ohjelmointiympäristö on tekstuaalinen ohjelmointiympäristö ja sen kielen syntaksi on aivan erilainen luonnollisen kielen mukaisiin ohjelmointikieliin. Racket-ympäristössä on paljon valmiita koodikirjastoja, joiden funktioiden ja komentojen muistaminen on perusedellytys koodaamiselle. Racket-ohjelmoinnin tueksi löytyy laajat ohjeet suomenkielisestä Racket-koodiaapisesta. Racket-koodausympäristönä voi käyttää joko selainpohjaista editoria tai koneelle ladattavaa DrRacket-sovellusta.

Lukio

Lukion opetussuunnitelmien perusteissa 2015 ei mainita ohjelmointia lainkaan, sen sijaan tieto- ja viestintätekniikka/teknologia jopa 52 kertaa. Opetus ohjaa mm. opiskelijaa syventämään ymmärrystään tieto- ja viestintäteknologiasta sekä käyttämään sitä tarkoituksenmukaisesti, vastuullisesti ja turvallisesti niin itsenäisessä kuin yhteisöllisessäkin työskentelyssä.

Lukiossa aihekokonaisuus teknologia ja yhteiskunta syventää opiskelijan ymmärrystä teknologisen ja yhteiskunnallisen kehityksen vuorovaikutteisuudesta. Tieto- ja viestintäteknologian kehityksen keskeisiä sisältöjä ovat elämäntapojen, toimintaympäristön ja yhteiskunnan muuttuminen. Aihekokonaisuutta voidaan lähestyä historiallisista, ajankohtaisista ja tulevaisuuden näkökulmista.

Opettajien muuttuva maailma

Elinikäisellä oppimisella tarkoitetaan kaikkea elämän aikana tapahtuvaa oppimista. Elinikäinen oppiminen (engl. lifelong learning) tarkoittaa ideaa, jonka mukaan ihminen oppii koko ajan kaikkina elämänsä ikävuosina. Elinikäisen oppimisen lähtökohtana on ajatus, että yksilön henkinen kehitysprosessi jatkuu läpi elämän. Jokaisella on iästään riippumatta mahdollisuus itsensä jatkuvaan ja monipuoliseen kehittämiseen sekä tarvittavien tietojen ja taitojen hankkimiseen. Käsitteen määrittely on laaja ja kattaa suuren osan inhimillisestä oppimisesta. Tutkintoon johtavan koulutuksen lisäksi oppimista tapahtuu muussa organisoiduissa oppimistilanteissa sekä arkipäivässä muun toiminnan sivutuotteena. Euroopan komissio määrittelee elinikäisen oppimisen seuraavasti: ”kaikki elämän aikana aloitettu oppimistoiminta, jonka tavoitteena on parantaa ammattitaitoa, tietoja ja osaamista sekä edistää henkilökohtaisten toiveiden toteutumista, aktiivista kansalaisuutta, sosiaalisia taitoja ja / tai työllistettävyyttä” (KOM (2001) 678).

Elinikäisen oppimisen ajatus tuotiin esiin jo viime vuosisadan alkupuolella (1919) brittiläisen komitean (Adulta Educations Committee of the Ministry of Reconstruction) asiakirjassa. Elinikäisen oppimisen ideaan on aina sisältynyt ajatus, jonka mukaan oppiminen voidaan käsittää myös muuksi kuin sille varatuissa erillisissä oppimis- ja koulutuspaikoissa hankituksi koulutukseksi. Elinikäinen oppiminen on nähty oppimisprosessin laajentumiseksi ajassa, paikassa ja sisällöissä sekä oppimistilanteiden moninaistumiseksi. Muodollisen koulutuksen ohelle juuri epämuodollinen oppiminen on kohonnut keskeiseen asemaan. Tärkeä osa ammattitaitoa ovat elinikäisen oppimisen avaintaidot. Niillä tarkoitetaan valmiuksia, joita jatkuva oppiminen, tulevaisuuden ja uusien tilanteiden haltuunotto sekä työelämän muuttuvat olosuhteet edellyttävät. Euroopan parlamentti ja neuvosto ovat joulukuussa 2006 antaneet suosituksen elinikäisen oppimisen avaintaidoista (EUVL L 394, 30.12.2006). Niillä tarkoitetaan tietojen, taitojen ja asenteiden kokonaisuutta, yksilön valmiuksia, joita jatkuva oppiminen, työelämän muuttuvat olosuhteet sekä tulevaisuuden ja uusien tilanteiden haltuunotto edellyttävät.

Opettajien ympäristöolosuhteissa on ajan kuluessa tapahtunut merkittäviä muutoksia TVT – asioiden kautta. Kehitys on näkynyt yksilöiden kiinnittymisenä yhä suurempiin ja monimutkaisempiin sosiaalisiin yhteisöihin. Yhteisöjä koossa pitävien rakennettujen teknologisten ympäristöjen suhde yksilöön muuttuu myös jatkuvasti. Elinikäisen oppimisen yleisempänä tavoitteena voidaankin nähdä tarpeen luoda valmiuksia kyvylle vastata jatkuvasti uusiutuvaan teknologiaan sopeutumisen haasteisiin (Eero Pantzar 1991 & 2008). Koepernik (2007) on jakanut elinikäisen oppimisen ja kytkeytyvien käytänteiden kehityksen neljäksi vaiheeksi alkuvaihe (1960 – 70 luku), pysähtyneisyyden vaihe (1980 luku), yleistymisen vaihe (1990-luku) ja toimintavaihe (2000 luku). Suomessa elinikäinen oppiminen on määritelty yhdeksi koulutuspolitiikan näkökulmaksi ja Suomessa elinikäisen oppimisen tulkinnat noudattavat Euroopan Unionin linjoja.

Opetusministeriö asetti Koulutuksen ja tutkimuksen tietoyhteiskuntaohjelmassa 2004– 2006 tavoitteeksi, että vuoteen 2007 mennessä vähintään 75 prosenttia opettajista on saavuttanut tieto- ja viestintätekniikan opetuskäytön taidot. Tavoitteen saavuttaminen edellyttää, että jo useita vuosia kestänyttä koulutusta edelleen jatketaan. Lisäksi uudet opetussuunnitelmat edellyttävät tieto- ja viestintätekniikan integroimista oppiaineisiin.

Yhteenveto

Ohjelmoinnin opettelu aloitetaan alakoulussa ensisijaisesti leikin kautta. Vuosiluokilla 1-2 ei välttämättä tarvita vielä mitään tietoteknistä laitetta ohjelmoinnillisen ajattelun tukemisessa. Monet perinteiset leikit tukevat ohjelmoinnillisen ajattelun kehittymistä, joten näillä vuosiluokilla riittääkin jo se, että opettaja tiedostaa oman roolinsa ohjelmoinnillisen ajattelun tukemisessa ja että sitä toteutetaan systemaattisemmin eri oppiaineiden sisältöjen yhteydessä.

Vuosiluokilla 3-6 ohjelmoinnillisen ajattelun rinnalle tuodaan erilaisia graafisia ohjelmointivälineitä, joilla tuetaan erityisesti toiminnan kaavojen tunnistamista ja muodostamista sekä toimintojen automatisointia. Tietokone jaksaa toistaa samaa toimintoa loputtomiin, joten sen käskyttäminen ohjelmointiympäristössä on mielekkäämpää kuin toistuva luokkakaverin käskyttäminen.

Vuosiluokilla 7-9 ohjelmoinnillista ajattelua syvennetään ja aloitetaan itse koodaus. Vaihtoehtoisia koodausympäristöjä on monia, mutta sopivan ohjelmointiympäristön valintaan kannattaa perehtyä huolella: huonolla valinnalla hankaloitetaan ohjelmointitaitojen kehittymistä sekä luodaan turhaan oppilaille kognitiivista kuormaa.

Opettajille on useita verkkosivuja missä opetella ohjelmointia ja ohjelmallista ajattelua jos sitä ei omaan koulutukseen ole kuulunut. Esimerkiksi Kiinnostaako koodaus? -kiertueen materiaalit tai Ohjelmoinnin MOOC – verkkokurssi, jossa perehdytään algoritmien laatimiseen ja nykyaikaisen ohjelmoinnin perusideoihin. Opiskelijalta ei edellytetä ennakkotietoja ohjelmoinnista.

Kirjoittanut FM, HTM, matemaattisten aineiden opettaja Pirjo Silius-Miettinen.

Lähteenä käytetty kirjoitelmassa mainittuja lähteitä sekä sivustoa https://peda.net/jyu/it/koulutusteknologia/op/mpoo [viitattu 16-06-2016]