Juuso Vuorinen Asiasta ja sen vierestä.

Koodauksen korostaminen koulujen tietotekniikan opetuksessa on virhe

Ennen kuin alamme opettamaan ohjelmointia koko ikäluokalle ala-asteella ja yläasteella, otetaanpa pari askelta taaksepäin ja mietitään, onko jotain tärkeämpää opittavaa. On.

Olen opettanut ja ohjannut ohjelmoijia eri puolilla maailmaa vuodesta 2005. Jokaisen opettamani kurssin tavoitteena on ollut erilaisten ongelmien ratkaiseminen tietoteknisin keinoin. Yleensä kursseilla on käsitelty tiedon käsittelemistä eri tavoin ohjelmakoodin avulla tietyn systeemin puitteissa. Ohjelmointikieli on ollut usein tunnettu, mutta ongelmien ratkaisemisen kannalta on ollut yhdentekevää, mikä ohjelmointikieli tai muu väline on valittu, sillä ongelmat on ratkaistu lopulta tietoteknisen ajattelun käsittein.

Tietokonemaisen ajattelun kannalta esimerkiksi kyky pilkkoa ongelma pienempiin osiin on erittäin tärkeää välineistä riippumatta. Näitä välineitä ovat esimerkiksi ohjelmointikielet, kuten Python ja ohjelmointiympäristöt kuten lapsille suunnattu Scratch. Suomi on maa, jossa opetetaan käyttämään välineitä ennen kuin ymmärretään, miksi ne välineet ovat olemassa.

Koulussa tulisi ohjelmoinnin sijaan opettaa oppiainetta, joka on englanniksi computational thinking, vapaasti suomennettuna tietokonemainen ajattelu. Mitä tietokonemaisella ajattelulla sitten tarkoitetaan?

Tietokonemainen ajattelu opettaa meidät ymmärtämään, mikä tietokone on ja millaisia ongelmia tietokoneilla voidaan ratkaista. Ohjelmoinnin opetuksen korostaminen paljastaa, miten vähän ymmärrämme tietotekniikan tosiasiallista luonnetta. Ja se tosiasiallinen luonne ei paljastu suinkaan ohjelmointikieltä käyttäessä, vaan opettelemalla tapaa ajatella. Kyse on maailman näkemisestä tietokoneiden muodostaman systeemin näkökulmasta. Edelliseen lauseeseen viitaten voisi olla myös hyödyllistä opettaa kouluissa mikä on internet. Koodaus ja välineoppiminen näyttää kuitenkin päättäjien mielestä olevan tällä hetkellä tähdellisempää oivallettavaa.  

Ohjelmoinnin opetus vastaa kysymykseen kuinka jokin asia tehdään. Tietokonemainen ajattelu sen sijaan vastaa kysymykseen millaisia ongelmia tietotekniikalla voidaan ratkoa – missä tietokone on hyvä. Tietokonemaisen ajattelun oppiminen on kaiken a ja o, ei ohjelmakoodin tai verkkosivujen luominen.    

Tietokonemaisesti ajatteleva voi nähdä asiat algoritmeina, tietona, joita algoritmi käsittelee sekä keinoina suunnitella oikeat algoritmit oikeaan tarpeeseen. Yhtäältä nähdään prosessi, jolla ongelma ratkeaa ja toisaalta osataan erottaa prosessi ja sen tuottama lopputulos. Tietoteknisten ongelmien ratkaisemiseksi on usein tarpeen jakaa ongelma osaongelmiin. Kyky pilkkoa ongelma pienempiin osiin hukkaamatta kykyä nähdä kokonaisuutta lienee eräs tietokonemaisen ajattelun tärkeimpiä oppeja.

Ohjelmoinnin opetus ala-asteella on liian yksioikoinen ja suppea näkemys tietotekniikkaan. Tietokonemaisen ajattelun peruskäsitteiden oppiminen luo erinomaisen pohjan ja on mitä parhainta yleissivistystä.

Ohjelmoinnin opetus ala- ja yläasteella ilman vahvaa pohjaa tietokonemaisessa ajattelussa on hukkaan heitettyä aikaa ja pois tärkeämmiltä asioilta. Koulun tulee keskittyä sellaisten asioiden opettamisen, mistä olisi jatkossa iloa mahdollisimman monilla elämänaloilla. Tietokonemaista ajattelua voi soveltaa monella elämänalueella pitkälle tulevaisuuteen. Tietyn ohjelmointikielen osaamista ei ehkä voi soveltaa koskaan; ohjelmointikieli voi olla 10 vuoden päästä vanhentunut ja sitä ei enää käytetä. Kieli unohtuu, mutta tapa ajatella voi kulkea mukana ihmisen eliniän.

Tiedämme, että koodia on nykyään joka puolella: kännyköissä, autoissa, lentokoneissa, kelloissa, pakastimissa ja ties missä. Se ei silti tarkoita, että jokaisen pitäisi oppia kirjoittamaan koodia kelloon tai pakastimeen.  Se tarkoittaa sitä, että ymmärtäisimme miksi sitä koodia siellä pakastimessa on. Se koodi on siellä siksi, että sen avulla ratkaistaan jokin tietoteknisesti ratkaistavissa oleva ongelma. Laajasti ymmärrettynä sillä voidaan täyttää vaikkapa jonkin kuluttajan tarve.

Monet opettajat tuskissaan pohtivat mitä ja miten he voisivat opettaa oppilailleen ohjelmointia. Innokkaimmat opettajista viljelevät blogeissaan kokemuksiaan kilvan erilaisia kokeiluja erilaisten välineiden kanssa.

Tuska tulee jatkumaan siihen asti, kunnes joku tajuaa kysyä, miksi sitä ohjelmointia pitäisi opettaa ja selvittää itselleen ja oppilailleen ensin vastauksen tuohon kysymykseen. Kysymys on kuitenkin koulutuspolitiikasta päättävien kannalta hankala, sillä ohjelmoinnin nostaminen avainkäsitteeksi on jo tehty ja laaja-alaisemman ymmärryksen jakaminen tietotekniikan mahdollisuuksista ja erityisesti tietokonemaisesta ajattelusta (computational thinking) ei näytä ottavan tulta, koska asian merkitystä ei ole vielä tiedostettu. 

Suurin syy tähän lienee, että laaja-alaisemman koulutuksen suunnittelu ja toimeenpano vaatii muutakin kuin kykyä laatia koodioppaan, joka kertoo opettajalle kuinka monin eri ohjelmointikielin voi ohjelmoinnin opettamisen aloittaa ja kuinka hienoa tuo kaikki on.

Nyt pitäisi kiireen vilkkaa ymmärtää, että on tehty virhe ja korjata suuntaa nopeasti.  

jk.

Alla olevan linkin takana on juttu, joka kertoo hyvin missä Suomessa mennään. Kansan Uutisten jutusta välittyy kuva, että ohjelmointi olisi jotenkin erityisen tärkeää. Tosiasiallisesti perusohjelmointi on mitä rutiininomaisin osa tekemistä - ja se näyttää olevan kaiken keskipisteessä Suomessa. 

http://www.kansanuutiset.fi/uutiset/kotimaa/3412764/ohjelmoinnin-opetuks...


 


  

Piditkö tästä kirjoituksesta? Näytä se!

3Suosittele

3 käyttäjää suosittelee tätä kirjoitusta. - Näytä suosittelijat

NäytäPiilota kommentit (14 kommenttia)

Petri Muinonen

Esim. roolipelin kehittäminen kaikkine nopanheitoista ja pelaajien tekemistä valinnoista johtuvine tapahtumineen olisi varmasti se oikea "koodaamisen" opettamisen taso. Se antaisi koululaisille oikeasti vapautta käyttää luovuutta mielikuvitusympäristön, roolihenkilöiden ja näiden varustuksen osalta ja miettiä yhdessä tai joukkueina mahdollisia triggereitä erilaisten tarinapolkujen syntymiselle. Viimeistään naapuriluokan kehittämää roolipeliä pelatessa sitten aika moni suunnitteluun, algoritmeihin, logiikkaan ja vuokaavioihin liittyvä asia tulisi tutuksi hauskalla ja mielikuvitusta vähemmän kahlitsevalla tavalla

Käyttäjän magi kuva
Marko Grönroos
    «Olen opettanut ja ohjannut ohjelmoijia eri puolilla maailmaa vuodesta 2005.»

Toivottavasti osaat tuoda keskusteluun opetuksen kehittämisestä hyviä ajatuksia tämän opetuskokemuksesi pohjalta. Sanot kuitenkin, että olet opettanut ohjelmoijia. Tämä keskustelu kuitenkin koskee lasten opettamista, joista vain hyvin harvasta on edes tarkoitus tulla varsinaisia päätoimisia ohjelmoijia. Kuten Timo Kilpiäinen kommentoi, ohjelmoinnin kouluopetuksessa on keskeistä yleissivistyksen antaminen, ei teknisten asiantuntijoiden kouluttaminen.

Ohjelmointia varmastikin tekee elämänsä aikana paljon suurempi osa väestöstä kuin ohjelmoijiksi koulutetut. Viimeistään yliopistolla siihen joudutaan tutustumaan hyvin monialaisesti biologeista lääkäreihin ja kielenkääntäjiin. Biologit ja lääketieteen tutkijat joutuvat usein ajamaan kaikenlaisia mallinnuksia, ja kielenkääntäjät tietenkin kääntämään ohjelmistoja. Tällöin ei tarvita kovin laajaa ohjelmistoalan tuntemusta, kunhan kyetään tekemään yksinkertaisia asioita.

Mutta sekään ei ole kouluopetuksen tarkoitus. Tärkein ohjelmointiin tutustumisen anti on sen hahmottamisessa, miten tietokoneet toimivat. Aivan kuten fysiikan tai biologian tarkoitus on auttaa ymmärtämään, miten maailma ja ihmiset toimivat.

    «Suomi on maa, jossa opetetaan käyttämään välineitä ennen kuin ymmärretään, miksi ne välineet ovat olemassa.»

Muista nyt ne PISA-tulokset... Kyllä, niin usein tehdään, koska lapset kuten myös akuiset oppivat parhaiten tekemällä asioita, eivät lukemalla teoriaa. Abstraktioita on usein mahdotonta ymmärtää muuten kuin konkretioiden myötä – kognitiotieteessä puhutaan prototyypeistä tai eksemplaareista käsitteenmuodostuksen pohjana. Tällöin lähdetään niiden välineiden käytöstä ja siinä ohessa sitten katsotaan miten niillä saadaan tehtyä suuria kokonaisuuksia. Kirjoitustaitokin opetellaan koulussa aivan ensimmäiseksi, ennen kuin lähdetään opiskelemaan kirjallisuutta.

Mainitsemasi tietokonemainen ajattelu (käännetty myös laskennallinen tai ohjelmoinnillinen ajattelu), kuten myös Erkki Laitilan (Ahvenjärven kirjoituksen kommenteissa) mainitsema läheinen systeemiajattelu, ovat metavälineitä. Ne eivät ole mitenkään poissulkevia ohjelmointiin tutustumisen kanssa. Olet varmasti oikeassa siinä, että se on siitä hyvä lähestymistapa, että se ei sido opittua mihinkään lyhytikäiseen ohjelmointikieleen tai työkaluun. Ongelmana taas on se, että koska tietokonemaista ajattelua on liian abstraktia opettaa sellaisenaan, se täytyy opettaa jonkin konkreettisen myötä. Kuten siis ohjelmoinnin, matematiikan ja niin edelleen. Näin on ajateltu myös Koodi2016-oppaassa.

Käyttäjän JuusoVuorinen kuva
Juuso Vuorinen

Moi Marko!

Ja kiitos kommentistasi. Koskien kirjoittamaasi kappaletta "Toivottavasti osaat tuoda keskusteluun opetuksen kehittämisestä hyviä ajatuksia tämän opetuskokemuksesi pohjalta. Sanot kuitenkin, että olet opettanut ohjelmoijia. Tämä keskustelu kuitenkin koskee lasten opettamista, joista vain hyvin harvasta on edes tarkoitus tulla varsinaisia päätoimisia ohjelmoijia. Kuten Timo Kilpiäinen kommentoi, ohjelmoinnin kouluopetuksessa on keskeistä yleissivistyksen antaminen, ei teknisten asiantuntijoiden kouluttaminen."

Oliko tekstissä jokin erityinen opetuksen sisältöideointiin liittyvä kohta, jossa viitattiin "asiantuntijoiden kouluttamiseen" tai joka sisällön puolesta viittasi (ohjelmoinnin) "asiantuntijoiden kouluttamiseen". Kirjoitinko jossain kohtaa teknisten asiantuntijoiden kouluttamisesta?

Onko tämä "Tärkein ohjelmointiin tutustumisen anti on sen hahmottamisessa, miten tietokoneet toimivat." oma mielipiteesi? Miten tietokoneen toimintaperiaate hahmottuu erittäin korkean tason ohjelmointikielellä kuten Scratchillä?

Käyttäjän magi kuva
Marko Grönroos
    «Oliko tekstissä jokin erityinen opetuksen sisältöideointiin liittyvä kohta, jossa viitattiin "asiantuntijoiden kouluttamiseen"»

Kirjoitit: «Olen opettanut ja ohjannut ohjelmoijia». Ymmärsin "ohjelmoijan" tässä ammattinimikkeeksi ja koulutetut ohjelmoijat ovat ohjelmoinnin asiantuntijoita verrattuna maallikoihin, joilla ei ole koulutusta ohjelmoinnista. Ymmärsinkö ilmauksesi väärin?

    «Onko tämä "Tärkein ohjelmointiin tutustumisen anti on sen hahmottamisessa, miten tietokoneet toimivat." oma mielipiteesi?»

Niin, kait tuo on oma mielipiteeni, vaikka samaa tässä nyt on esitetty muidenkin taholta. En nyt tiedä onko "tärkein"-korostus perusteltua, mutta tärkeä kuitenkin.

    «Miten tietokoneen toimintaperiaate hahmottuu erittäin korkean tason ohjelmointikielellä kuten Scratchillä?»

Eiköhän siitä aika hyvin näy se keskeisin asia, että ohjelmistot rakentuvat parametreistä, tiloista, ehdollisista lausekkeista ja funktioista. Näemmä sillä saa tehtyä rekursiotakin ihan helposti. Siten tuo on täysin universaali ohjelmointialusta, jolla voi tehdä vaikka rakettitiedettä. Olioita siinä ei taida olla. En nyt tiedä mikä tekisi siitä "erittäin" korkean tason ohjelmointikielen verratuna tavanomaisiin skriptikieliin. Korkean tason multimediarajapinta tietenkin mahdollistaa lapsille kivojen juttujen tekemisen helposti.

Sinällään aivan upea systeemi; joskus 20 vuotta sitten kehitin vähän samanlaisella konseptilla toimivan visuaalisen ohjelmointikielen, mutta tuossa se on viety parikymmentä vuotta pidemmälle.

Käyttäjän JuusoVuorinen kuva
Juuso Vuorinen Vastaus kommenttiin #6

Moi Marko!

Kiitos kommentistasi. Ymmärsit ihan oikein, että sellaisia töitä olen tehnyt. Tästä huolimatta, sen takia tai jostain muusta syystä en pidä ohjelmointia tietotekniikkaan liittyvistä tulevaisuuden taidoista tärkeimpänä. Pidän tärkeämpänä kyvyn asettaa ohjelmoinnin suurempaan asiayhteyteen muun tietoteknisen tiedon ja taidon rinnalla.

Kysyn tässä vielä kerran "Oliko tekstissä jokin erityinen opetuksen sisältöideointiin liittyvä kohta, jossa viitattiin "asiantuntijoiden kouluttamiseen"?" Lyhyt henkilöesittely, jossa kerron lyhyesti taustastani, ei sisällä ajatuksia oppisisällöistä, vaan ne muut tekstin kappaleet. Löytyykö niistä kappaleista asioita, jotka eivät sovellu peruskouluun vaan soveltuvat vain "asiantuntijoille"?

Korostan vielä, että en ole tässä nyt ideoimassa sisältöä ammattilaisille, vaikka olen sellaistakin tehnyt vrt. pappi, joka osallistuu keskusteluun ateismista tms. Ihan lasten ja nuorten asialla olen, pidän vain eri asioita tärkeinä.

Käyttäjän magi kuva
Marko Grönroos Vastaus kommenttiin #7

Kas, hämmennyin kysymyksestäsi niin en lukenut sitä tarkkaan. Ei, ei sisältöideoinnissasi siihen viitattu. Katsoit kuitenkin aiheelliseksi tuoda esille opetuskokemuksesi ja noteerasin, että kokemuksesi oli aikuisten asiantuntijoiden, ei lasten opetuksesta, kuten nyt vaikkapa Kilpiäisen ja monen muun opettajakommentaattorin osalla.

Ei tässä nyt olla tuomassakaan ohjelmointia tärkeimmäksi koulussa opetettavaksi asiaksi, ei edes omaksi oppiaineekseen, vaan ylipäätään tuomaan sitä mukaan osaksi opetusta tuhannen muun koulussa käsiteltävän aiheen joukkoon. Onko se enemmän tai vähemmän tärkeämpää kuin höylän tai taltan käytön opettelu teknisessä työssä, mitkä minusta ovat aivan tärkeitä taitoja nekin, on sitten parempi kysymys. Kuten Kilpeläinen ja monet muut opettajat ovat sanoneet, lapset ovat varsin innoissaan opetuksesta ja jos innostus on suurempaa kuin höylän ja taltan käyttö, voi opittu muodostua käytännön hyödyksi ehkä helpommin.

Kuten ehkä huomasit, tuo 2016-ohjelmakin lähtee tietokonemaisen ajattelun opettamisesta ja sen tueksi ja lisäksi siinä mennään aktuaalisen ohjelmoinnin konkretiaan. Sikäli jos ohjelmointia sovelletaan taideaineissa, matematiikassa ja fysiikassa, ohjelmointi varmastikin pääsee niissä johonkin asiayhteyteen. Onko se asiayhteys sitten riittävän "suuri", on tietenkin pohdiskelun arvoista.

Jari-Matti Mäkelä

Scratch ei kylläkään ole mikään erittäin korkean tason ohjelmointikieli. Ei se, että koodi esitetään värikkään graafisen palikan päällä tee siitä välttämättä sen korkeamman tason kieltä. Scratch on käytännössä Fortran visuaalisessa muodossa. Jopa C on korkeamman tason kieli - C mahdollistaa esim. käyttäjän määrittelemät data-abstraktiot. Erittäin korkea tason kielet mäppäytyvät sukupolviajattelussa 4.-5. sukupolville http://www.cs.utu.fi/knuutila/okp98/node20.html

Scratch on itse asiassa heikompi kieli kuin entisaikojen opetuskielet Logo ja Pascal ja tukee abstraktia ajattelua vähemmän. Logo lispinä mahdollistaa vapaat kontrolliabstraktiot, minkä lisäksi luonnollisesti data-abstraktiot. Pascal mahdollistaa data-abstraktiot, mutta esim. oman if-then-elsen määrittely on vaikeaa kielen evaluointimallin takia. Molemmat kielet pystyisi esittämään myös visuaalisesti. Esim. Snap on monipuolisempi kieli kuin Scratch http://snap.berkeley.edu/

Käyttäjän JuusoVuorinen kuva
Juuso Vuorinen Vastaus kommenttiin #11

Moi Jari!

Kiitos kommentistasi! Tuo on ihan totta. Sekoitin asioita. Se ei todellakaan ole korkean tason kieli kielen rakenteiden kannalta. Siinä työkalussa on kuitenkin käsitteitä, jotka ovat hyvin lähellä esim. oliokeskeisten kielten käsitteitä. Scratchin "hahmoilla" on ominaisuuksia ja nämä "ominaisuudet" näyttävät saavan "arvoja". Lisäksi hahmot käsittelevät "tapahtumia" ja työkalussa lähetetään "viestejä" hahmolta toiselle (vrt. olioiden kommunikointi).

Käytintermiä "korkea taso" kovin väljästi, piittaamatta termin tietojenkäsittelyteoreettisesta määritelmästä.

Käyttäjän anttialfthan kuva
Antti Alfthan

Poltin hieman päreitäni Ahvenjärven ketjussa kun esimerkeiksi algoritmeistä tarjottiin virkkausta ja ruuanlaittoa :) Ihminenhän ei ole kone. Algoritmiä voidaan havainnollistaa vaikkapa käsien pesulla, mutta sekään ei ole hyvä esimerkki. Sen sijaan perinteinen esimerkki hissin toiminnasta on, mielestäni. Hallinnan kohteena on kone. Hissillä ei matkustella luovasti, toivottavasti. Pesukoneen toiminta voisi olla toinen toimiva, vaikka vuokaaviona, kunhan ei haeta kovin monimutkaista pesua ja linkousta. Tämän tapaiseen lähestymiseen ei tarvita itse tietokonetta lainkaan, ja katsoisinkin että käsin piirretty ja raapusteltu malli olisi suotavampi.
Kirjaimia opettelevat lapset ovat usein samaan aikaan kiinnostuneita myös liikennemerkeistä, symboleista yleensä. Vuokaavion olennaisimmat symbolikuviot ovat "salmiakki", tapahtuu valinta, ja "loota", tapahtuu se mikä kuuluukin, seuraavaksi, mutta vain yhteen suuntaan. Lisäksi pitää päästä aloittamaan ja lopettamaan. Eri ikäluokalle ja ehkä matematiikkaan (taskulaskimen toimintaan) liittyen voisi olla sitten aikanaan vinoneliöt. Syötetään jotain ja saadaan jotain.
Kaikki muu krääsä mitä tietotekniikan opetus aikuisille pyrkii ehkä tarjoamaan, kuten lukujärjestelmät, tietokoneiden historia, ei ole pienille lapsille. Ei monelle aikuisellekaan. Binääriluvut on helppo havainnollistaa, mutta kaikki aikanaan.
Kuten kirjoittaja tuossa korostaa, olennaista on päästä ajattelemaan miten kone toimii, ja se että kone tekee täsmälleen sen mitä sille sanotaan. Kun tämä on sisäistetty, voidaan ruveta kokeilemaan vaikka pelin rakentamista, sen eri osa-alueita. Tässäkin on taas, oikeastikin, paljon käyttöä kynälle ja paperille, ehkä myös värikynille. Ja tässä pääsee luovuus oikeuksiinsa, nyt ihminen ohjaa konetta, parhaimmillaan interaktiivisesti.

No joo. Menen nyt muistelemaan aikaa kun tietokoneen keskusyksikkö (CPU) oli rautaa.

Käyttäjän JuusoVuorinen kuva
Juuso Vuorinen

Moi Antti!

Ja kiitos kommentistasi. Niin todellakin on, että ajattelua voi opettaa hauskasti ja hyvinkin pitkälle ilman tietokonetta. Vuokaavioista voi olla montaa mieltä, mutta joka tapauksessa algoritmi pitää ensin joko kuvata päässään tai kirjoittaa paperille/koneelle/mihin tahansa, jossa "ajatus" on jonkin muunkin arvioitavissa.

Siinä annetaan koneelle toimintaohjeet. Syöte-prosessointi-tulos -ajattelu on edelleen tarpeellinen. Olisi myös hyvä jo alusta asti kertoa, että toiminnan tekee aina jokin fyysinen kone tai laite, ettei koodi aivan ilmassa ala leijua.

Mutta ennen laitteita voidaan tehdä tuntikaupalla, mitä mielenkiintoisimpia harjoituksia ihan kynillä ja papereilla - vaikka koko luokan kanssa. Ja nyt en tarkoita sellaisia harjoituksia, joissa kirjoitetaan koodia, vaan joissa simuloidaan tietokoneen toimintaa ihmisten avulla ja kanssa.

Kun ala-asteella on rakennettu hyvä pohja, yläasteella on mukava ottaa käyttöön jokin oikea ohjelmointikieli, muun tietotekniikan oppimisen rinnalla ellei niin ole käynyt jo ala-asteella.

Tietokoneen perusosien tunteminen ja internetin ja tietoverkon käsittäminen edes jollain tasolla kuuuluisivat myös ilman muuta perusopetukseen, mutteivät taida mahtua.

Se rauta on aina jossain. Välillä tosin miettii, että onko toiset pilvessä, kun sanovat, että rautaa ei enää ole. :)

Jari-Matti Mäkelä

Näen itse tässä sen ongelman, että computational thinking -konseptin alle koitetaan ympätä aivan valtava määrä eri asioita ja kuitenkin opetusresursseja on hyvin rajallisesti.

Ohjelmoinnista: Jos opiskelet tietojenkäsittelytiedettä, käsitys tietotekniikan mahdollisuuksista rakentuu pikku hiljaa opintojen edetessä ja paketissa on kuitenkin useamman vuoden opinnot pelkästään tästä aihepiiristä. Pelkästään imperatiivisen ohjelmoinnin alkeisiin menee aikuisopiskelijoilla useita opintoviikkoja, kun "diginatiivit" oppivat alkeet Scratchilla opettajien mukaan 1-2 tunnissa. Ilmeisesti it-alan valinneet aikuisopiskelijat ovat kaiken juopottelun jälkeen jo älyllisesti täysin vajaavaisia, kun kuka tahansa ipana oppii asiat paljon nopeammin. Ohjelmoinnissa isoimpia haasteita on oppia abstraktioita. Ilman käsitystä abstraktioista ei voi asemoida ohjelmointia osaksi kokonaisuutta. Ohjelmoinnissa on sekä data- että kontrolliabstraktioita. Scratch ei mallinna näitä ollenkaan hyvin. Ohjelmoinnin oikea ymmärtäminen edellyttää myös käsitystä laskettavuudesta ja laskennan kustannuksista (aika- ja tilakompleksisuus).

Datasta: Maailma muuttuu kovaa tahtia. Tallennus- ja laskentakapasiteetti kasvavat eksponentiaalisesti. Prosessit käsittelevät entistä isompia datamääriä ja korkeampia abstraktiotasoja. Abstraktiotason kasvaessa prosessoinnit muodotkin monipuolistuvat. Asioiden ymmärtäminen vaatii tietoa biteistä ja tavuista, mutta myös gigatavujen ja teratavujen kokoisista kokonaisuuksista. Tavutasolla voit muokata dataa paikallaan tai kopioida. Ison datan parissa dataoperaatiot ovat ihan erilaiset. Ei näitä voi yleistää niin, että jos osaat kopioida Turing-koneella bittijonon, niin osaat replikoida ja kryptata dataa turvallisesti pilvessä. Pilvilaskennan myötä datan käsittelyssä on syntynyt ihan uusia mahdollisuuksia ja ongelmia. Pilvi ei ole mitään tulevaisuutta vaan lähes kaikki tietotekniikkaa nojautuu siihen nykyään. Jopa uudet Barbie-nuket on kytketty pilveen. Tietoverkot ovat myös monimutkaistuneet. On multicast/broadcast-verkkoja ja ad-hoc mesh-verkkoja.

Prosesseista: Syöte-prosessointi-tulos selittää vain osittain nykyiset järjestelmät. Esim. web-käyttöliittymät ovat reaktiivisia ja interaktiivisia. Yksi tapahtuma voi aktivoida monta asynkronista prosessia eri paikoissa. Tätä kaikkea ei pysty tiivistämään muutamaan hassuun oppituntiin. Mikä on se paradigma, jota pitäisi opettaa? Nykyään on käytössä kymmeniä. Imperatiivinen peräkkäisohjelmointi ei ole pitkään aikaan ollut mikään valtavirtajuttu. Webissä laskentaa hajautetaan ja rinnakkaistetaan, tietokannoissa on relaatioalgebra taustalla, kyselykielissä voi olla loogista rajoitelaskentaa. Funktionaalinen ohjelmointi on myös yleistynyt lähes kaikissa kielissä.

Tämän kaiken päälle on rakentunut korkean tason järjestelmiä. Esim. voit ostaa parilla eurolla osaamista, jos haluat Wordpress-blogin ja sinne verkkokauppa. Rentacoderit tekevät hikipajoissa lisää koodia ja open sourcen ja wiki-ohjeiden avulla kuka tahansa tarpeeksi uskalias pystyy rakentamaan järjestelmiä, joiden takana on miljoonia rivejä koodia. Kaikki tämä ihan webbiselaimen sisällä esim. tabletilla.

Siis.. on ihan kiva, että osaa jotain, mutta maailma on monimutkaistunut ihan valtavasti ja tietotekniikan syvällinen ymmärrys vaatii koko ajan enemmän ja enemmän. Tosiaan kun noita tukipalveluitakin on ja globalisaation ansiosta hintataso voi olla todella alhaalla, niin en näe vaan kustannustehokkaana osata ja tehdä itse kaikkea tai edes yhtä teknistä asiaa, jos ostaakin voi. Verkkokaupan perustajalle paljon tärkeämpi tieto on tuntea valmiiden alustojen laadusta ja ominaisuuksista kuin osata itse koodata HTTP-palvelin. Tämä on nyt. Millainen tilanne mahtaa olla 9-20 vuoden päästä, kun nyt koulun aloittavat aloittavat työelämässä?

Käyttäjän DanielMalinen kuva
Daniel Malinen

Jos "computational thinking" tarkoittaa ongelman pilkkomista ratkaisun helpottamiseksi meillä käytettiin koulussa termiä "prosessoitu ajattelu" ja "ongelmien prosessoitu ratkaiseminen". Mutta niinkuin kaikki muukin prosessoitu kuten maito ja valmisruuat sekin lienee saanut vanhemmilta vastustusta kun näyttää jääneen kolmessavuodessa pois.

Käyttäjän grohn kuva
Lauri Gröhn

Ongelma on juuri tuossa ongelmallistamisessa. Ei kirjailija, taiteilija, säveltäjä, luova suunnittelija ... ole ratkaisemassa ongelmia, vaan luomassa artefakteja. Kysymykset ovat tärkeämpiä kuin vastaukset.

Käyttäjän JuusoVuorinen kuva
Juuso Vuorinen

Jari-Matti: Nyt 4.11.2017 näyttää siltä, että juuri noin on käynyt. Computational thinking on saanut liikaa ulottuvuuksia ja paketti on levinnyt "käsiin".

Toimituksen poiminnat