Tieto- ja viestintätekniikka (TVT, ICT) ja koodaus tulevat suomalaisiin peruskouluihin. Aiheesta on jo julkaistu fiksuja kirjoituksia, joten tiivistän omat ajatukseni kahdeksaan teesiin. Lopussa kolme vinkkiä, joilla opettaja kuin opettaja pääsee kärryille.
TVT ja koodaus ovat kaksi eri asiaa. TVT:n käyttö opetuksessa tarkoittaa opetuksen välineistön modernisointia. Se on tarpeen (kunhan se tehdään järkevästi), mutta se ei vielä riitä. Koodaustakin tarvitaan.
Kuluttajaksi kasvattaminen ei riitä. Seuraavasta sukupolvesta ei saa kasvattaa pelkkää kuluttajien massaa. TVT:n käyttöön tottuminen on toki tärkeää, jotta yksilö pärjää nyky-yhteiskunnassa. Mutta ei Suomi pärjää vain kuluttamalla. Meidän on kasvatettava sukupolvi tekijöitä, tuottajia ja yrittäjiä. Ei riitä, että osaa käyttää muiden tekemiä palveluita ja välineitä, on osattava tehdä tarpeen tullen omansa.
Koodaus ei ole vieras kieli. Koodaus on matematiikkaa ja taidetta. Jotkut virheellisesti ajattelevat ohjelmointikieliä kuten vieraita kieliä. Tämä on väärin. Ohjelmointia ei opita samalla tavalla kuin kieliä, vaikka molemmissa onkin sanasto, lauseoppi ja kielioppi. Koodaus on ongelmanratkaisua ja loogista ajattelua, mutta myös luovaa ilmaisua.
Koodaus on nykyajan maanviljelystaito. Koodaus on ympäristössä selviämisen taito. Aivan kuten 100 vuotta sitten lähes jokaisen lapsen tuli oppia ymmärtämään ja muokkamaan ympäröivää luontoa, sekä saada siinä kasvamaan jotain arvokasta (vaikkapa perunaa), on nykyisin lähes joka lapsen opittava ymmärtämään ja muokkaamaan ympäröivää digitaalista maisemaa, sekä saada siinä kasvamaan jotain arvokasta (vaikkapa uusi avointa dataa hyödyntävä palvelu).
Teknologia ei ole tulevaisuutta, vaan totta jo nyt. Ihmiskunta on ollut jo pari vuosikymmentä symbioottisessa suhteessa teknologiaan ja tietojärjestelmiin. Jos tietojärjestelmät lakkaavat toimimasta, valtaosa ihmiskunnasta (etenkin länsimaissa) kuolee janoon varsin pian. Eivät ne banaanit ja kaurahiutaleet ilmesty lähikaupan hyllylle itsestään, takana on valtava määrä logistiikkaa ja Cobol-koodia (jota Koodi2016:ssa ei jostain syystä suositeltu :).
Kaikkien ei tarvitse koodata, mutta ohjelmallinen ajattelu on perustaito. Kaikista ei tule koodareita, kuten ei kaikista koulun suorittaneista tule muusikkoja, biologeja tai kielitieteilijöitä. Koodariksi päättyminen on omavalintaista erikoistumista. Mutta jokaisen tulee ymmärtää ympäröivästä teknologisesta maastostaan sen verran, että he tietävät, koska jokin edessä oleva tehtävä on parempi antaa koneen tehtäväksi ihmisen sijaan. Kenelläkään ei ole syytä käyttää ihmisiä työhön, jonka kone tekisi käytännössä ilmaiseksi. Ohjelmallinen ajattelu eli computational thinking on joka kansalaisen perustaito.
Avatkaa kaikki konepellit. Paras tapa oppia on tutkia. On se sitten kukkapenkissä tonkimista tai iPadin purkamista komponentteihinsa, tai ohjelmiston lähdekoodiin tutustumista. iPadiin liittyen on hyvä muistaa, että kaikkia laitteita ja ohjelmistoja ei voi avata, eli niiden sisään ei ole helppo kurkistaa. Kouluissa tulisi suosia sekä laitteitä että ohjelmistoja, jotka saa auki, ja joita voisi jopa muokata toimimaan eri tavalla. Kiiltävää täppäriä sivelemällä oppii kyllä katsomaan videoita ja mainoksia, mutta ei tekemään niitä itse. Kun sen hienon laitteen voi paloitella ja rakentaa taas uudella tavalla tekemään jotain muuta, tarjotaan aivan erilaisia luovan tuottamisen oppimismahdollisuuksia. iPadien lisäksi tarvitaan siis RaspberryPi, Arduino ja muita tee-se-itse-paketteja.
Opettajan ei tarvitse koodata. Ei sen enempää kuin alakoululaisenkaan. Puheet siitä, että peruskouluun tarvitaan ICT-alan ammattilaisia opettamaan koodausta ovat typeryyttä. Peruskoulussa tavoitteena ei ole tietojärjestelmien tuottaminen (software engineering), vaan ongelmanratkaisutaitojen oppiminen tutkimalla, muokkaamalla ja koodaamalla. Tämän opettamiseen ei tarvita kokenutta projektipäällikköä Nokialta. Opettajan tulisi muutenkin olla vain valmentaja tai luotsi, eikä tiedon ja osaamisen ylin haltija. Tämän harhaluulon luulin karisseen opetussektorilta jo 15 vuotta sitten. Valmentaja voi hyvin pistää joukkueensa harjoittelemaan asioita, joita hän itse ei osaa. Lisäys 23.6.: FB:ssä käydyn keskustelun pohjalta tarkennan hieman. Oppilaiden on saatava kätensä saveen, mieluummin alemmillakin luokilla. Mutta opettajan ei ole pakko sitä tehdä, jos ei halua. Hän voi vain ohjata oppilaat sopivien resurssien äärelle ja katsoa, mitä tuloksia syntyy. Mutta samalla opettaja kyllä voisi itsekin tehdä ne harjoitteet ja kokea omakohtaisesti, miltä se koodaaminen tuntuu. Hänen ei kuitenkaan pidä olla koodauksen ammattilainen tai esikuva oppilaille.
Kolme vinkkiä opettajalle (päivitetty lokakuussa 2015).
- Tutustu Koodiaapiseen.
- Jos koodaus edelleen tuntuu pelottavalta, varaa yksi tunti aikaa ja käy pelaamassa/koodaamassa läpi Hour of Code. Minun 3-vuotias poikani osasi tämän, joten uskon, että jokainen suomalainen opettajakin sen osaa. Tämän jälkeen olet jo kokenut, mistä koodauksessa on kyse, perustasolla. Onnittelut, kykenet nyt valmentamaan oppilaitasi koodauksessa!
- Lue Koodi2016. Se on oikeasti hyvä opas, maksuton, suomeksi. Ota se vaikka kesälomalle laiturin nokkaan lukemisiksi.
Larux says
Erinomaista Tarmo!
Elias Aarnio says
Voisiko nyt pikkuhiljaa jo lopettaa sen FB:n promovoinnin? Tolkutonta keskustella tällaisista aiheista suljetussa ympäristössä. Ymmärrän sekä koodauksesta että liiketoimintamalleista sen verran, että FB kuuluu perustellusti kummassakin paarialuokkaan.
Tarmo Toikkanen says
BetaMax vs. VHS… Valitettavasti se Sometu-porukka on ajautunut tuohon FB:n ryhmään ja siellä se suomenkielinen keskustelu aiheesta nykyisin käydään. Tai ei juuri tällä hetkellä, koska FB kaatui. Mutta yleensä.
Tuija Salminen says
Kiitos tuosta Hour of code -vinkistä 🙂
Juuso Vuorinen says
Moi Tarmo
” Jotkut virheellisesti ajattelevat ohjelmointikieliä kuten vieraita kieliä. Tämä on väärin. Ohjelmointia ei opita samalla tavalla kuin kieliä, vaikka molemmissa onkin sanasto, lauseoppi ja kielioppi. Koodaus on ongelmanratkaisua ja loogista ajattelua, mutta myös luovaa ilmaisua.”
Ohjelmointi on todellakin myös kommunikaatiota – siinä kommunikoidaan järjestelmälle, miten sen tulee toimia. Ja kyllä sitä opitaan osin samalla tavalla – syntaksi on opeteltava. Aina on jokin symboli tai kirjaimia/numeroita, jotka on opeteltava, jotta koodia syntyy. Kielen käyttäminen on myös ongelmanratkaisua – miten löydän lentoasemalle – miten asettelen sanani, jotta kiinalainen ymmärtää, että pyydän häneltä neuvoja lentoasemalle. Aivan samanlaista tekemistä on paljon ohjelmoinnissakin. En ymmärrä miksi ohjelmointi nähdään tässä vain lähinnä loogisena päättelynä. Eri ohjelmointikieliä opitaan kuten luonnollisiakin kieliä – käyttämällä.
Kommunikaationäkökulma ohjelmointiin on tärkeä – ohjelmointikieliä ei sanota kieliksi huvin vuoksi 🙂 Missä kohtaa Tarmo ohjelmointi on luovaa ilmaisua?
Tarmo Toikkanen says
Hyvin perusteltu, että ohjelmointi on kommunikaatiota. En ole eri mieltä.
Väitän kuitenkin edelleen, että ohjelmointia ei pidä opettaa samalla tavalla kuin vieraita kieliä. Tai ainakin painotusten tulee olla erilaisia. Luonnollisissa kielissä kielioppi on monimutkainen ja vaatii vuosien treenausta. Ohjelmointikielissä kielioppi on säännönmukainen eikä sisällä yhtään poikkeusta tai epäsäännöllisyyttä. Luonnollisten kielien sanasto on erittäin laaja ja osin epäintuitiivinen. Ohjelmointikielien sanasto on hyvin tiivis, vain muutama kymmentä sanaa. Sanasto toki kasvaa, kun mukaan otetaan mahdolliset kirjastot ja alustat, joiden päälle koodataan ja tämä onkin ammattikoodaajalla se isoin työ: kuinka oppia ymmärtämään, miten tietyn laajan alustan kanssa tulee toimia, jotta ohjelmat toimivat sen suunnitteluperiaatteiden mukaisesti. Mutta tämä vaihe tulee vasta sellaisissa ohjelmointitehtävissä, joihin ei peruskoulussa tarvitse mennä.
Kysyit, miten ohjelmointi on luovaa ilmaisua? Aivan samalla tavalla kuin mikä tahansa viestintä on luovaa ilmaisua, paitsi että ilmaisumuotoja on paljon enemmän. Avasin tätä teemaa hieman enemmän Koodiaapinen-blogissa: http://koodiaapinen.fi/2015/08/14/suomalainen-koulu-ei-parjaa-ilman-koodaamista/
Juuso Vuorinen says
Niin. En tiedä mistä on tullut ajatus, että ohjelmointia tulisi opettaa kuten kieliä. Ehkä joku on kokeillut? Ilmeisesti tässä vielä pohditaan, mitä ohjelmointi ja ohjelmoinnin opetus ei ole, ennen kuin päästään pohtimaan, mitä se on.
Se on selvä, että alustojen ja kirjastojen käyttö ei kuulu perusopetukseen. Siksi perusopetuksessa tulisikin keskittyä erityisesti yksinkertaiseen ongelmanratkaisuun, mutta niin, että ongelmanratkaisuun liittyy jokin järki ts. ongelmaa ei ratkaista vain siksi, että se pystytään ratkaisemaan, vaan siksi, että nähdään, mihin ohjelmointitaitoa voidaan soveltaa. Myös monimutkaiset ammattimaiset ohjelmistonkehitysympäristöt ja työkalut, kuten tietyt kielet, pitäisin perusopetuksen ulkopuolella. Niihin toki edistyneille linkkejä ja vinkkejä, mutta tässä tarkkana. Ja uskoisin, että suomenkielinen oppimateriaali olisi tarpeen – monet koodi2016 oppaan linkeistä vie ulkomaisille sivuille. Se on kova pala opettajalle, joka vastaa opettelee alkeita.
Jotenkin ehkä ajattelen hieman eri lailla ohjelmoinnin luovuudesta. En näe ohjelmointia lähtökohtaisesti luovana tekemisenä, ohjelmoinnin tulokset voivat olla luovia: demoja, musiikkia, taidetta vaikka mitä. Näkisin kuitenkin ohjelmoinnin toisaalta myös matematiikkaan vivahtavana toimintana. Matematiikassakin usein etsitään “lyhintä” ja kompakteinta tietä esittää tietty asia. Pitkästä yhtälörimpsusta voidaan huomata, että se voidaan esittää lyhemmin ja silti ymmärrettävästi. Monet tosielämän ohjelmointiongelmat liittyvät juuri tehokkuuteen – miten ohjelma tulisi kirjoittaa, jotta se olisi mahdollisimman tehokas. Asia on sama kuin vaikkapa lääketieteessä: mikä hoito olisi tehokkain mahdollinen tietyssä tapauksessa. Ohjelmoinnissa on toki monia muitakin tavoitteita ja usein ne ovat ristiriidassa keskenään – paras ratkaisu on aina tilannekohtainen. Näyttävin demo voi syntyä tehokkaimman algoritmin seurauksena. Yritän sanoa, että tietokoneavusteisen luovuuden mukana on aina tietty määrämuotoisuus ja juuri tämän määrämuotoisuuden näkisin oleellisena oppia – se määrämuotoisuus seuraa mukana kaikissa ohjelmoinnin sovelluksissa aina musiikista insinööritöihin.
Aivan kaikkea en kuitenkaan laskisi ohjelmointiin, kuten Excelin käyttöä. Tässä puhuisin yleisesti tietokoneen ohjelmistojen käyttötaidosta. Exceliä voidaan toki ohjelmoida, mutta kuntien järjestäminen väkiluvun mukaan pienimmästä suurimpaan on ehkä hyvä erottaa ohjelmoinnista. Muutoin meillä on kohta joukko ihmisiä, jotka ajattelevat, että kaikki asiat ovat “tavallaan” koodausta. Laajasti määritellen ohjelmoinnissa tietokoneelle esitetään joukko symboleja, joiden perusteella kone tekee jotain. Tämä todellisuus ei ole muuttunut – onneksi. Minun mielestäni sellainen tekeminen on ohjelmointia, missä paljastuu yksi tai useampi ohjelmoinnin peruskäsitteistä. Kuntien järjestämisessä väkiluvun mukaan Excelin järjestä-toiminnon avulla ohjelmoinnin peruskäsitteet pysyvät piilossa. Sen sijaan Excelin soluun kirjoitettava ehto “jos solun arvo > 5, niin värjää solu punaiseksi” on ohjelmointia. Näin ajattelen, kun pyrin rajaamaan ohjelmoinnin käsitettä mielessäni. En äskeistä ehkä ihan ohjelmaksi kutsuisi, mutta ehkäpä “Excelin ymmärtämäksi koodinpätkäksi” kuitenkin. Joitain rajoja on kuitenkin pakko vetää – kaikki ei ole ohjelmointia.
Kokeileva oppiminen tietotekniikan ja ohjelmoinnin ymmärtämisen tukena kuulostaa tosi hyvältä, varsinkin ala-asteella, mutta miksei yläasteellakin. Tehdään ja kokeillaan, leikitäänkin. Yksinkertaisten laitteiden ohjelmointi yksinkertaisella työkalulla kuulostaa hauskalta – nähdään, että ohjelma tekee jotain konkreettista ja nähdään miten toiminta muuttuu, kun ohjelmaa muutetaan. 80-luvulla tuo piti tehdä itse kotona – hauskaa, jos sen voi nyt tehdä koulussa! Varmasti syntyy luovia ratkaisuja.
Tärkeänä pitäisin oppia, miten ohjelma ja laitteisto toimivat yhdessä – tulevaisuus on kuitenkin enemmän tai vähemmän niiden luovien tyyppien, jotka soveltavat asioita myös tuossa viitekehyksessä. Kehitys ei pysähtynyt iPadeihin, vaikka välillä näyttääkin siltä, että siitä on tullut jonkinlainen itseisarvo – se on kuin tähti galaksissa – uusia syntyy koko ajan. Englannin malli lienee tällä foorumilla tuttu. Tuo Guardianin kirjoitus osoittaa, että siellä on ehkä oppimistavoitteiden painospiste hiukan teknologiapainotteisempi ja samalla rajatumpi. http://www.theguardian.com/technology/2014/sep/04/coding-school-computing-children-programming
Jaana Seppälä says
Miten ohjelmointi on luovaa ilmaisua?
Jos on joskus jotain oikeasti koodannut työkseen, niin tietää miten. Sinun on koodilla ratkaistavat joku ongelma käyttäen tietyn ohjelmointikielen ominaisuuksia. Loppuratkaisu riippuu tekijästä, saman asian voi koodata monella eri tavalla. Tässä yksinkertaistettu esimerkki.
1. vaihtoehto:
If arvo=0 then Tee jotain()
If arvo=1 then Tee jotain_muuta()
If arvo=2 then Tee jotain_vielä_muuta()
2. Vaihtoehto:
If arvo= 0 then Tee jotain()
else If arvo=1 Tee jotain_muuta()
else Tee_vielä_jotain muuta()
3. Vaihtoehto:
Case arvo
0: Tee jotain()
1: Tee_jotain muuta()
2. Tee vielä jotain muuta()
Samaan lopputulokseen johtavat kaikki vaihtoehdot.
Koodarin on löydettävä kuhunkin ongelmaan sopiva tapa järjestellä koodi, eikö tämä juuri tarvi luovuutta 🙂
Ja bugien korjauksessa sitä luovuutta vasta tarvitaankin….
Näin ajattelen minä, voi tietyti olla toisin ajattelijoitakin 🙂
Tiina Jalava says
Jaaha. On pieni hetki siitä(5 vuotta), kun aktiivisesti olin tiedon pakeilla opiskelemassa ja nyt palatessani taas sorvin ääreen, tietotekniikka jyrää ja olo on kuin väärällä planeetalla. Dataa, koodausta, tekniikka…kyllä pakko ottaa pitkällä kaavalla selvää, ennen kuin tässä maailmassa pystyy uimaan kuin kala vedessa, jos koskaan.