Ohjelmoinnin opetuksen merkityksestä.

Ohjelmoinnin opetus käynnistyy peruskouluissa ensi vuonna ja viimeisen vuoden aikana se on ollut useaan kertaan esillä mediassa. Reaktorin perustamat Koodikoulut ja Linda Liukkaan ja Juhani Mykkäsen Koodi2016-opas ovat erityisesti saaneet paljon julkisuutta ja herättäneet keskustelua. Ohjelmoinnin opetuksen alkaminen tuo myös tarpeen kouluttaa opettajia, sillä kovin harvalla on kokemusta ohjelmoinnista. Tähän tarpeeseen on vastannut mm. Koodiaapinen, joka on Aalto-yliopiston ja IT-yrittäjien yhteishanke. 

Olen omassa tutkimuksessani käsitellyt ohjelmoinnin opetusta, sekä koodin, tuon ohjelmia pyörittävän merkkijonon ymmärrystä viimeisien vuosien ajan.

Read More

Esitys ITK 2014 & Mediakasvatus.Nyt seminaarissa

Pidin ITK:n Tutkijatapaamisessa ja Mediakasvatus.Nyt seminaarissa esityksen Ohjelmoinnin lukutaidosta, sekä lyhyesti esittelin väitöskirjatutkimukseni aihetta Luovan ohjelmoinnin menetelmää. 

Ohessa esityksen diat ja alla pieni kirjallinen versio esityksestä. Kirjallinen versio on suoraan muokattu esityksen muistiinpanoista eikä sinällään siis oma artikkelinsa tai tieteellinen teksti vaan hyvin yleismuotoinen ja puhekielinen esitys. Esitykseni pituus oli myös vain 15 minuuttia, joka pakotti tiivistämään montaa asiaa, sekä jättämään paljon yksityiskohtia ulkopuolelle.


DIA1 Ohjelmoinnin lukutaito

Olen Tomi Dufva ja toimin Aalto yliopistossa, taiteen laitoksella jatko-opiskelijana ja teen väitöskirjatutkimusta Luovasta ohjelmoinnista.
Tutkimukseni on vasta aluillaan, mutta olen työskennellyt asian parissa noin 10 vuoden ajan.
Tässä esityksessa kuitenkin käsittelen tarkemmin ohjelmoinnin lukutaitoa,
joka on yksi oleellinen osa luovan ohjelmoinnin menetelmää 
ja sinälläänkin, mielestäni, kiinnostava katsantokulma ohjelmoinnin opettamiseen.

Dia2 Mikä ohjelmoinnin lukutaito?

Ohjelmointi ja sen opetus on ollut jonkin verran esillä ihan julkisessa mediassa.
Suomessa Krista Kiuru on puhunut sen tärkeydestä ja toisaalta erilaiset koodikoulut ovat olleet esillä mediassa.
Viro on ottanut ohjelmoinnin peruskoulun opetukseen,
Englannissa uusittiin tietotekniikan opetus ja siinä yhtenä alueena on ohjelmointi. Yhdysvalloissa on STEM ja STEAM-projektit, jne.

Usein ohjelmoinnin merkitystä opetuksessa perustellaan ongelman ratkaisun, loogisten kykyjen tai tulevaisuuden työpaikan näkökulmasta.
Mutta ohjelmoinnissa on itseasiassa kyse paljon laajemmasta asiasta. Tämän vuoksi käytänkin käsitettä “Ohjelmoinnin lukutaito.”
Ohjelmoinnin lukutaito ei sinänsä viittaa suoraan, tai pelkästään, ohjelmoinnin oppimiseen perinteisessä merkityksessä, vaan pikemminkin lukutaitoon. Samoin kuin kaikista tavallisen luku-ja kirjoitustaidon omaavista ei tule kirjailijoita ei ohjelmoinnin lukutaidon osaajista tule koodareita.

Mutta ohjelmoinnin lukutaito on tärkeää ajassamme, jossa yhteiskuntamme, kulttuuri, sosiaaliset suhteet ynnä muu toimii yhä enemmän digitaalisen tekniikan varassa. Ohjelmoinnin lukutaito on digitaalisen tekniikan luonteen ymmärtämistä ja lukemista.

Ajankohtainen esimerkki on esimerkiksi yksityisyys, tai oikeastaan sen puuttuminen digitaalisuudesta. Kaikki nämä yksityisyytemme rikkomiset ja vakoilut tapahtuvat digitaalisen tekniikan sisällä, koodissa, maailmassa jota käytämme jatkuvasti mutta joka on liian abstrakti käsitettäväksi.

Dia3 Digitaalisen tekniikan pohjalla on aina koodia

Digitaalisuus ilmenee meille monella tavoin ja vaikuttaa meihin monin tavoin. Ohjelmoinnin lukutaito keskittyy siihen että digitaalinen tekniikka nojaa aina koodiin.
Tämä digitaalisen tekniikan ohjelmoitu luonne tekee ohjelmointia ymmärtävistä ja ymmärtämättömistä eriarvoisia.
Kaikki on ohjelmoitua. Ja erityisesti jonkun ohjelmoimaa. Tämän vuoksi on hyvä katsoa mitä koodi on.

Dia4 Koodi on monimutkaisin ihmisien tekemä konstruktio

Ohjelmointi on täysin ihmisen tekemä konstruktio.
Monimutkaisin se on siinä mielessä että koko konstruktio on täysin ihmisen tekemä. Toisin kuin vaikka kynä, joka on ihmisen tekemä keksintö mutta materiaalit tulevat luonnosta. Siksipä kynä on ehdottomasti monimutkaisempi jos katsomme sen atomirakenteita ym. Mutta koodi on monimutkaisempi siinä mielessä että me rakennamme sen täysin, irrallaan ulkoisista materiaaleista. Koodiin pätevät luonnonlait vain toissijaisesti mikroprosessorien ja muiden komponenttien ominaisuuksien kautta, mutta nykyään sillä on yhä vähemmän merkitystä

Koodiin eivät siis päde luonnonlait samalla tavoin kuin muihin keksintöihimme. Kynä tai vaikka lentokone on maailmamme fysiikan lakien armoilla, mutta ohjelmassa, kuten vaikka tietokonepelissä voimme helposti poistaa vaikka painovoiman.

(- mielikuvitus/ taide /filosofiset ym. rakennelmat ovat myös aloja joihin nämä eivät päde mutta niillä ei suoraan rakennetta todellisuuden työvälineitä kuten pankkiohjelmia tai käyttöjärjestelmiä.)

Dia5 Koodi ei heijasta objektiivista totuutta vaan luo rakenteellaan digitaalisen maailman lakeja.

Koodi ja tätä kautta ohjelmat eivät ole siis luonnonlaki vaan plastinen malli joka heijastaa meidän yhteiskuntaa, -tai ohjelmoijan näkemystä siitä.
Käyttämiemme ohjelmien koodi luo rajoitteita ja toiminteita maailmaamme.

Olen tässä esityksessä jakanut nämä aspektit kolmeen eri luokkaan:
1. Koodin sisäsyntyisiin taipumuksiin
2. Yhteiskunnallisiin vaikutuksiin
3. Henkilökohtaisiin vaikutuksiin

Dia6 Our computers live in the ticks of the clock. We live in the big spaces between those ticks, when the time actually passes.

Koodin sisäsyntyiset taipumukset viittaavat niihin merkityksiin joita digitaalinen tekniikka tuo elämäämme itsessään. Mm. Mediateoreetikko Douglas Rushkoff on kirjoittanut näistä kirjassaan “Program or be programmed -Ten commandments for a digital age”

Yhtenä esimerkkinä on koodin suhde aikaan:
Ohjelmat eivät toimi ajassa, niille on aivan sama kirjoitanko tietokoneelle seuraavan kirjaimen tai tekstin nyt tai sadan vuoden päästä.
Koodi toimii suorituksesta toiseen kun taasme ihmiset toimimme ajassa. Digitaalisen tekniikan nopeus luo illuuusion digitaalisen tekniikan toimimisesta ajasta. Tämä taipumus luo paineita toimia myös yhtä tehokkaasti, vastata tuleviin viesteihin, jatkaa työskentelyä kunnes kaikki sähköpostit, twiitit yms. on läpikäyty.

Vielä olennaisempi esimerkki on digitaalisen tekniikan perusluonteesta: Kaikki koodi perustuu binääriseen koodiin, eli ykköseen ja nollaan. Kaikki ohjelmointi lähtee tästä dualisesta asettelusta kyllän ja ein välillä. Vaikkakin voimme luoda kompleksisia ohjelmia on tämän kaiken perustalla tämä kaksijakoinen näkemys. Emme voi vastata tietokoneelle että ehkä, ilman että se loppujen lopuksi tulkitaan kylläksi tai eiksi. Tietokoneen prosessori on eri asia kuin omat aivomme tai orgaaninen ja kompleksinen elämämme.

Dia6 Code is Law

Toinen aspekti koodissa on sen yhteiskunnallinen ulottuvuus.
Lessig muotoili tämän kirjassaan Code and other laws of Cyberspace jo vuonna 1999 että: “Code is law”

Tällä Lessig viittasi siihen että koodin kautta luotu rakenne muodostaa lakeja digitaaliseen ympäristöön.

Koodi myös heijastaa ohjelmien toiminnan kautta ohjelmoijan arvomaailmaa ja asenteita.

Digitaalisessa, ohjelmoidussa, maailmassa emme ole välittömässä kosketuksissa maailman tai toistemme kanssa vaan konstruoidussa ympäristössä jonka rakentamiseen emme ole voineet osallistua laisinkaan.

Dia7 ”Its architecture is its politics”

Mitch Kapor, (aikoinaan) menestyksekkään Lotus-ohjelmointifirman perustaja ja EFF:n-(Electronic Frontier Foundation )perustajajäsen muotoilikin asian näin.

Luomamme koodin arkitehtuuri määrittää sitä miten ja mitä voimme digitaalisessa maailmassa tehdä.

Dia8 Free software is software that respects your freedom and the social solidarity of your community. So it’s free as in freedom.

Tästä pääsemme kolmanteen aspektiin, henkilökohtaisuuteen, joka on suorassa suhteessa muihin aspekteihin. Tätä määrittää ehkä eniten vapauden käsite, jonka voisi kärjistetysti muotoilla näin:
Jos elämästäni suuri osa tapahtuu digitaalisessa maailmassa, miten voin ymmärtää elämääni ja vaikuttaa elämääni jos en ymmärrä eläämäni määrittävää tekniikkaa?

Tällaisen vapauden puolesta kampanjoi mm. Richard Stallman, Free Software Foundationin luoja. Hän näkee erityisen tärkeäksi vapaiden ohjelmistojen käytön. Vapaa ohjelmisto tarkoittaa vapaata siinä mielessä, että kenellä tahansa on mahdollisuus nähdä ohjelman lähdekoodi eli koodi jolla ohjelma on rakennettu. Lisäksi vapaita ohjelmia saa muokata haluamikseen ja jakaa vapaasti. Pääsy lähdekoodiin mahdollistaa ohjelman ymmärtämisen, sekä tarvittaessa ohjelman muuttamisen mieleisekseen. Yhteiskunnallisesta kannalta avoin lähdekoodi on perusehto demokratian toteutumiselle digitaalisessa yhteiskunnassa. Ilman mahdollisuutta edes nähdä lähdekoodia emme voi tasavertaisesti osallistua keskusteluun.

Lähdekoodi myös paljastaa ohjelmien luonteen: Ajatelkaapa vaikka Facebookkia tai muita vastaavia ohjelmia, tykkäisimmekö yhtä paljon ohjelmasta jos voisimme suoraan nähdä ja ymmärtää miten paljon ohjelma seuraa ja analysoi tekemisiämme?

Dia9 “If the structure does not permit dialogue the structure must be changed” 

Stallmannin vaatimukset voi hyvin lukea myös kriittisen pedagogiikan kontekstissa.
Freireä voi miltei suoraan lukea kritiikkinä vallitsevaan digitaaliseen kulttuuriimme.
Ohjelmoinnin lukutaito on emansipaation mahdollistaja digitaalisessa maailmassa.

Dia10 Lukutaito

Ohjelmoinnin lukutaito on siis kykyä ymmärtää elämäämme vaikuttavaa digitaalista arkkitehtuuria.
Samoin kuin tarvitsemme medialukutaitoa kuvavirtojen tulkitsemiseen ja ymmärtämiseen, tarvitsemme ohjelmoinnin lukutaitoa digitaalisen median ymmärtämiseen.

Lukemisen, lisäksi lukutaidollisen ihmisen tulee osata myös kirjoittaa, ohjelmoida.
* Tämä ei tarkoita että kaikista tulee ohjelmoijia. Opettelemmahan kirjoittamaan, eikä kaikista tule kirjailijoita
* Tämä tarkoittaa että omaamme käsityksen ympärillämme hahmottuvasta digitaalisesta maailmasta. Kaikki luodut rakenteet ympärillämme ovat keinotekoisia. Koodilla ei ole omaa luontoa, ellei sitä sille rakenneta. Ymmärtämällä koodia osaamme ymmärtää, vaatia, hahmottaa rakentaa digitaalista yhteiskuntaamme ja minämme suhdetta siihen.

Dia11 Luova ohjelmointi -creative coding

Ohjelmoinnin lukutaidon saavuttamiseksi on varmasti useita keinoja,
oma tutkimukseni pohjaa kehittämääni luovan ohjelmoinnin menetelmään. Luova ohjelmointi juontaa juurensa englanninkielisestä vastineesta Creative coding ja viittää pelkkää ohjelmointia suurempaan tekemisen muotoon.

Luova ohjelmointi sisältää koko digitaalisen kulttuurin elektroniikasta, uusista tuottamistavoista, kuten vaikka 3D-tulostuksesta, internetistä ja verkon hyötykäytöstä aina ohjelmointiin saakka.

Menetelmälläni on myös pohjansa taidekasvatuksessa erityisesti Marjo Räsäsen luomiin ajatuksiin kokonaisvaltaisesta tiedonkäsityksestä sekä integroivasta taidekasvatuksesta.
Taidekasvatuksen tapa tekemällä havainnoida, konkretisoida ja käsitteellistää asioita on erityisen tärkeä ja hyödyllinen väline digitaalisten tekniikoiden haltuunotossa.

Dia11 "Ajatus käsissämme" 

Seija Kojonkoski-Rännäli määrittelee käsityökasvatuksen voimaa osuvasti kirjassaan
"Ajatus käsissämme"
Samanlaiseen asiaan viittaa Seymor Papert, tietokoneavusteisen oppimisen pitkän linjan tutkija konstruktionistisellä opetusmenetelmällään.
Ja hyvin samantapainen oppimismenetelmä on nousevan Maker-kulttuurin taustalla.
Olennaista näille menetelmille on tekemällä oppiminen. Kokonaisvaltaisen tiedon tuottaminen ja ymmärtäminen.

Luova ohjelmointi käsittelee vaikeitakin teknologisia rakenteita käyttäen hyväksi näitä menetelmiä: ihmettelyn, kysymisen, kokeilun kautta voi syntyä vaikka robotti, taideteos, esitys tai mobiilisovellus. Tärkeää on, että oppilas oppii yhtä aikaa niin lukemaan kuin kirjoittamaankin omia tarinoita digitaalisen tekniikan avulla. Luova ohjelmointi toimii pedagogisena lähestymistapana, siltana digitaalisen tekniikan eri osa-alueiden – yhteiskunnan, tekniikan ja kasvatuksen – välillä.
Luova ohjelmointi tuo digitaaliseen tuottamiseen demokratisoivaa näkökulmaa, tehden tuottamiseen tarkoitettujen ohjelmistojen rakenteita näkyviksi ja ymmärrettäviksi samalla mahdollistaen digitaalisuuden luonteen ymmärtämisen sekä omien digitaalisten työkalujen rakentamisen.

Dia12 Käsityökoulu Robotti

Lopuksi haluaisin näyttää yhden esimerkin jossa sovellan menetelmääni käytäntöön.
Käsityökoulu Robotti on yhdessä mediakasvattaja Roi Ruuskasen kanssa perustama yhdistys, joka toimii tällä hetkellä Espoossa, taidetalo pikku auroran yhteydessä. Robotin idea on yhdistaa tiede-taide- ja tekniikkakasvatusta pitkälle kertomieni menetelmien mukaisesti. Tarjoamme Robotissa viikottaista opetusta sekä erilaisia työpajoja.
Teen tutkimustani design-tutkimuksena ja Robotti onkin yksi paikka kerätä materiaalia, kokemuksia ja testata uusia. Pienenä introna toimintaan ja luovan ohjelmoinnin menetelmään näytän helmikuiselta talvileiriltä koostamamme videon.

KIITOS! 

Esityksen lopussa olleen videon voi katsoa tästä:

http://vimeo.com/88007563