Tässä osiossa:


Luet Koodi2016:n verkkoversiota. Olemme halunneet tarjota oppaan koko sisällön selaimella ja älypuhelimilla luettavana tekstinä, josta on helppo halutessaan leikata ja liimata sisältöä muualle. Jos kaipaat visuaalisesti näyttävämpää esitystä – ja vaikket kaipaisikaan – kannattaa tutustua myös oppaan näköisversioon!


Koodauksen opetus on ajattelun opettamista

Tämä osio antaa käsityksen siitä, miten ohjelmoinnin opetusta voi lähestyä peruskoulussa. Kyseessä ei ole oppimateriaali vaan kokoelma esimerkkejä, jotka toivottavasti sekä informoivat että inspiroivat opettajaa.

Tässä osiossa lähestytään ohjelmoinnin opettamista peruskoulussa kahden pääharjoituskategorian kautta. Nämä ovat yhtäältä leikit sekä toisaalta erilaiset verkossa tarjolla olevat ympäristöt ohjelmointia ja sen opiskelua varten.

Jotta opettaja ja oppilas ymmärtäisivät, miksi esitellyt leikit tai verkkoharjoitukset auttavat oppimaan ohjelmoimaan, on syytä käydä läpi, mistä niin kutsutussa ohjelmoinnillisessa ajattelussa on kyse.

Ohjelmoinnillinen ajattelu on hiukan hapuileva suomennoksemme englannin kielen termistä computational thinking. (Toinen mahdollinen suomennos voisi olla vaikkapa algoritminen ajattelu. Computational thinkingistä löytyy oivallinen tulostettava luokkahuoneharjoitus Code.org-sivustolta: learn.code.org/unplugged/unplug2.pdf)

Ongelman palastelua osiin tarvitaan arkielämässä ja ohjelmoinnissa.

Ohjelmoinnilliselle ajattelulle on erilaisia määritelmiä, mutta usein sen esitetään koostuvan esimerkiksi seuraavassa esitetyn kaltaisista osa-alueista, jotka kaikki liittyvät siihen, minkälaisia ajattelutaitoja ihminen tarvitsee pystyäkseen ratkaisemaan ongelmia tietokoneen avulla.

Huomionarvoista on, että listatut taidot eivät ole ainoastaan ohjelmointiin liittyviä. Samanlaisia ongelmanratkaisun taitoja tarvitaan koulussa esimerkiksi filosofian, matematiikan ja vieraiden kielten tunneilla – arkisesta elämästä puhumattakaan.

Ongelman purkaminen osiin

Ongelman purkaminen osiin (decomposition) on taito, jota tarvitaan sekä arkielämässä että ohjelmoinnissa, kun ongelma on hiukankin monimutkaisempi ratkaistavaksi kerralla.

Tyypillinen esimerkki ongelman purkamisesta osiin on, kun joku kysyy sinulta ajo-ohjeita Helsingin keskustasta luoksesi. Jos et asu Kolmen sepän patsaalla, on mahdotonta antaa yksikäsitteistä ohjetta yhdellä virkkeellä. Ongelma on hajotettava osiin: ”Lähde ensin Mannerheimintietä pohjoiseen. Kansallisoopperan kohdalla käänny oikealle. Jatka puoli kilometriä…” Ja niin edelleen.

Toinen esimerkki ongelman purkamisesta osiin olisi esimerkiksi siinä, kun maistat ystäväsi tekemää lihakeittoa ja haluat hahmottaa, miksi se on niin hyvää. Näet silmin, että liemessä on porkkanaa ja kaalia. Makuaistisi avulla pyrit tunnistamaan muita mausteita kuten suolan, pippurin ja vaikkapa valkosipulin.

Matematiikassa luvun 273 voi purkaa satoihin, kymmeniin ja ykkösiin: 2 x 100 + 7 x 10 + 3 x 1 Ohjelmoidessa vaikkapa verkkopankkia on välttämätöntä purkaa ongelma osiin: Ketkä pankkia käyttävät? (Ihmiset, yritykset jne.)

Mitä käyttäjät haluavat pankissa tehdä? (Maksaa laskun, ottaa lainaa jne.) Mistä toimenpiteet koostuvat? (Laskun maksaminen koostuu tunnusluvun antamisesta, summan syöttämisestä, vastaanottajan tilinumeron antamisesta jne.)

Kaavojen tunnistaminen

Kaavojen ja toistuvien sääntöjen tunnistaminen (pattern recognition) auttaa ratkaisemaan arkipäiväisiä ongelmia. Kun itkevä vauva hiljeni viime kerralla saadessaan tutin, sama ratkaisu voi auttaa tälläkin kerralla. Märkä puu näyttää syttyvän huonommin kuin kuiva.

Ohjelmoinnissa kykyä tunnistaa ongelmissa esiintyviä kaavoja on hyvin hyödyllinen, koska yhtäältä se auttaa ajattelussa kuten missä tahansa arkipäiväisessä ongelmassa, ja toisaalta kone on ongelmien ratkaisijana täydellisen kaavamainen: se toimii aina tarkalleen ja täydellisesti samalla tavalla suorituskerrasta toiseen. Siksi kerran oivallettua kaavaa voidaan soveltaa koneella yhä uudestaan oikein.

Algoritmien luominen

Algoritmilla tarkoitetaan kuvausta jonkin tehtävän suorittamiseksi tarvittavista toimenpiteistä. Kun arkielämässä huippukokki kirjoittaa ylös parhaan lihakeittonsa ainekset, niiden määrät ja suhteet sekä ohjeet ainesten valmistamiseksi keitoksi asti, kyseessä on paitsi keiton resepti myös sen valmistamiseen liittyvän algoritmin kuvaus.

Kokin kirjaamaa algoritmia tarkalleen toistamalla kuka vain voi kerta toisensa jälkeen tehdä yhtä hyvää lihakeittoa kuin huippukokki.

Ohjelmoinnissa ohjelmoija on kokki ja tietokone on apuri. Se tekee tarkalleen, mitä reseptissä eli algoritmissa lukee. Ohjeet riittää kirjoittaa kerran, jonka jälkeen kone toteuttaa ne joka kerta napin painalluksella.

Ratkaisun yleistäminen ja automatisointi

Esimerkiksi matematiikassa pyritään ongelmia ratkaistaessa yleiseen muotoon. Lukiolainen saa toisen asteen yhtälön 2x2 - 3x + 1 = 0 ratkaisut selville suoraan toisen asteen yhtälön ax2 + bx + c = 0 yleisestä ratkaisukaavasta (ei esitetty tässä), johon voimme sijoittaa luvut 2, -3 ja 1 lukujen a, b ja c tilalle.

Ohjelmoinnissa ongelmille haetaan hyvin usein yleistettyjä ratkaisuja. Kun ohjelman halutaan piirtävän näytölle suorakaiteen, olisi typerää kirjoittaa ohjelma siten, että se osaa tehdä vain suorakaiteita, joiden sivujen pituudet ovat aina 3 ja 5. Sen sijaan ohjelma on järkevää kirjoittaa siten, että se osaa piirtää minkä tahansa kokoisen suorakaiteen riippuen siitä, mitkä mitat käyttäjä ohjelmaan syöttää.

Parasta ohjelmoinnissa on, että ratkaisuja voi automatisoida sälyttämällä vastuun niistä koneen harteille. Kun ihminen ratkaiseen toisen asteen yhtälöä, hän joutuu sijoittamaan luvut kaavaan yhä uudestaan. Kun koneelle opettaa kaavan kerran, se antaa ajasta ikuisuuteen oikeat yhtälön ratkaisut nanosekunnissa riippumatta siitä, mitkä luvut a:n, b:n ja c:n tilalle laittaa.

Kun opettaja lähtee yksin tai luokan oppilaiden kanssa perehtymään tässä osiossa jäljempänä esiteltyihin leikkeihin tai harjoituksiin, hän huomaa pian, että ne kaikki opettavat tai harjoittavat yhtä tai useampia yllä esitetyistä taidoista: ongelman pilkkomista, kaavojen hahmottamista, algoritmien luomista ja ratkaisujen esittämistä yleistettävässä muodossa. Ohjelmoinnin opettaminen onkin pohjimmiltaan näiden taitojen opettamista.

Toki: ohjeet annetaan tietokoneelle ohjelmointikielellä, jonka säännöt ja merkintätavat on myös tunnettava. Mutta mitä pidempään ihminen ohjelmoi, sitä pienemmäksi muuttuu syntaksin muistamisen rooli ja sitä enemmän korostuu yllä kuvattujen taitojen merkitys.

Ohjelmoinnin oppiminen on tekemistä

Toinen hyvin keskeinen asia ohjelmoinnin opettamiseen liittyen on, että ohjelmointia ei todella voi oppia muuten kuin itse tekemällä.

Tässä mielessä ohjelmointi on kuin kuvaamataito, matematiikka, englanti, puutyöt tai vaikka jalkapallon pelaaminen. Kuka vain voi selostaa taustalla olevaa teoriaa ja sitä, mistä noin periaatteessa on kyse laveerauksessa, yhtälön ratkaisemisessa, keskustelemisessa britin kanssa, lankun höyläämisessä tai keskityksen antamisessa. Silti todellinen osaaminen tulee vain oman yrityksen ja erehdyksen kautta.

Ohjelmoijien kyvyt ovat usein pitkälle verrannollisia siihen, minkä verran ihminen on ohjelmoinut. Millaisia ongelmia hän on kohdannut, kuinka monta tuntia sinnikkäästi niiden parissa puurtanut ja intohimoisesti etsinyt parasta mahdollista toteutusta.

Lasten päästävä heti tekemään ja näkemään työnsä tulokset.

Samasta syystä ohjelmoinnin opetuksen peruskoulussa ei tämän oppaan kirjoittajien näkemyksen mukaan ole syytä olla teorian tankkaamista. Päinvastoin: lasten ja nuorten on päästävä saman tien tekemään, saman tien kokemaan ja saman tien näkemään työnsä tulokset näytöllä.

Siksi seuraavassa läpikäytävät harjoitukset ja työkalut keskittyvät kaikki tekemiseen – eivät ohjelmoinnin syvälliseen filosofiaan tai vielä peruskoulutasolla esimerkiksi erilaisiin sovelluskehityksen suunnittelumalleihin.

Ennen harjoitusten aloittamista

Sekä itse ohjelmointi että erilaiset ohjelmointikielet ovat ihmisten luomuksia. Niiden taustalla olevat ajatusmallit ovat kehittyneet enimmäkseen viime vuosikymmeninä ja elävät jatkuvasti. Siksi ne muuttuvat peruskoulumaisen opetuksen kannalta huomattavasti enemmän kuin esimerkiksi matematiikan tai biologian lainalaisuudet.

Myös ohjelmoinnin opettamiseen liittyvät työkalut kehittyvät jatkuvasti. Siksi ei ole yhtä oikeaa ja vakiintunutta tapaa opettaa ohjelmointia. Lisäksi erilaisille oppijoille sopivat erilaiset työkalut – toiset oppivat visuaalisesti, toiset puhetta kuuntelemalla, kolmannet kirjoista teoriaa lukemalla ja neljännet tekemällä.

Seuraaville sivuille on koottu esimerkkejä resursseista, joiden avulla opettaja pääsee alkuun ohjelmoinnin opettamisessa.

Käytännössä suurin osa listatuista työkaluista toimii netin välityksellä. Se tarkoittaa, että varsinaisia työkaluja ei ladata omalle tietokoneelle, vaan niitä käytetään Internet Explorerin, Firefoxin, Chromen tai Safarin kaltaisella nettiselaimella menemällä tiettyyn verkko-osoitteeseen – aivan kuin menisi Hesarin verkkosivuille lukemaan uutisia tai Telkku.comiin katsomaan tv-ohjelmatietoja.

Yksi selaimella verkossa tekemisestä saatava hyöty on, että harjoitusympäristöjen alkuperäiset luojat voivat päivittää niitä jatkuvasti netissä yhä helppokäyttöisemmiksi ja paremmin toimiviksi. Opettajan – kymmenistä oppilaista puhumattakaan – ei siis tarvitsee päivittää ohjelmistoja omalla koneellaan.

Harjoitusympäristöt saattavat vaatia käyttäjälle oman profiilin tekemistä, mutta tästäkin seuraava hyvä puoli on, että tehdyt harjoitukset ja oppilaan kehitys säilyvät verkossa (siellä paljon puhutussa ”pilvessä”) tallessa ilman pelkoa tietojen katoamisesta fyysisen tietokoneen hajotessa.

Jos oppilaat ovat liian nuoria rekisteröitymään esimerkiksi omalla sähköpostiosoitteella, voi useimpia harjoituksista tehdä myös ilman rekisteröitymistä.

Jokaisessa alla luetelluista kategorioista on tässä oppaassa valittu esittelyyn yksi suositeltava opetuksen työkalu. Lisäksi on kerrottu siitä, minkä ikäisille työkalu soveltuu, miten tuntiin kannattaa valmistautua ja mitä työkalu vaatii käytettävältä laitteistolta. Lisäksi on annettu lyhyitä esimerkkejä muista työkaluista.

Opetusmateriaaleja on esitelty seuraavissa kategorioissa:

  • Leikit – erilaisia ohjelmointiajattelua opettavia leikkejä, erityisesti luokka-asteille 1–2.
  • Visuaaliset ohjelmointiympäristöt – luokka-asteille 3–6 sopivia työkaluja, jotka opettavat ohjelmointiajattelua ilman, että oppilaan tarvitsee kirjoittaa ohjelmakoodia.
  • Ohjelmointikielet – luokka-asteilla 7–9 perehdyttäväksi tarkoitettuja oikeita ohjelmointikieliä, joista oppilaan on tarkoitus ymmärtää yläkoulun aikana perusteet.
  • Mobiiliapplikaatiot – erityisesti älypuhelimille ja tableteille tarkoitettuja ohjelmoinnin oppimisen työkaluja.
  • Lisäksi osoitteessa Koodi2016.fi/koodauspaiva on esitelty resurssien pohjalta esimerkkejä niin kutsutuista koodauspäivistä, joita koulussa voidaan pitää eri luokka-asteilla.


    1.–2. luokka: Nyt leikitään!

    Ohjelmointiin sopivien ajattelumallien opettaminen ei vaadi aina tietokonetta. Peruskäsitteitä ja toimintatapoja voi opetella leikkien kautta.

    Useimmissa ohjelmointiajattelua opettavissa leikeissä lapsi oppii ymmärtämään, millä tavalla tietokonetta on ohjeistettava, jotta se osaa ratkaista ongelmia. Tällöin leikissä pyritään siihen, että tietyt toimet suoritetaan tietyssä järjestyksessä tehtävän ratkaisemiseksi.

    Luokanopettajan on hyvä hahmottaa, miten eri leikit liittyvät myöhemmillä luokilla esille tuleviin käsitteisiin, ja miten eri aineissa voi hyödyntää erilaisia leikkejä. Lapsille tärkeintä on tekemisen ilo ja myönteinen, innostunut altistuminen ohjelmointiin liittyville ajattelumalleille.

    Kun lapsi etsii lyhimmän reitin ulos sokkelosta tai lajittelee laulut aakkosjärjestykseen, hän oppii myös ohjelmoinnissa hyödynnettäviä taitoja.

    CS Unplugged

    Verkkosivusto CS Unplugged on kokoelma opettajien toistensa avuksi suunnittelemia ohjelmointia opettavia leikkejä, joiden leikkimiseen ei tarvita lainkaan tietokonetta tai muuta tekniikkaa. Sen sijaan CS Unpluggedin harjoitukset opettavat ohjelmoinnin perusteita pelien, liikunnan, paperille piirrettävien harjoitusten tai vaikkapa pingispallojen avulla.

    Suureen osaan harjoituksista liittyy video. Harjoituksia tekevät vapaaehtoiset opettajat ympäri maailmaa. Opettajille on myös tehty oma, kevyt opaskirja.

    Miten pääsee alkuun: Mene osoitteeseen csunplugged.org ja selaile sivustolla esitettyjä harjoituksia. Seuraavassa on myös esimerkki eräästä CS Unpluggedin harjoituksesta.

    CS Unplugged -sivuston vasemmasta laidasta löytyy lista erilaisia ohjelmointia opettavia harjoituksia, joiden tekemiseen ei tarvita konetta. Opettaja voi ladata yksittäiset harjoitukset – kuten kuvassa esitetyn Harold-robotti-harjoituksen – tulostettavana pdf-tiedostona oikean laidan linkistä.

    Esimerkki: Harold-robotti-harjoitus

    Eräs esimerkki CS Upluggedin sisältämistä harjoituksista on nimeltään Harold-robotti (csunplugged.com/programming-languages-0).

    Harjoituksessa opettaja esittää robottia, joka tottelee lapsia täydellisesti. Lapset puolestaan yrittävät saada opettajan suorittamaan jonkin tehtävän kuten kokoamaan palikoista tornin, tekemään voileivän tai juomaan kahvikupin.

    Opettajan tehtävä on toimia tarkalleen lasten ohjeiden mukaisesti. Lapset oppivat pian, että komentojen on oltava hyvin tarkkoja, tai robotti toimii väärin.

    Harjoitus opettaa – edelliseen kappaleeseen viitaten – esimerkiksi ongelman pilkkomista osiin sekä algoritmista ajattelua.

    Harjoitus voisi kulkea esimerkiksi seuraavasti:

    Opettaja asettaa yksinkertaisen, esimerkiksi viisikerroksisen tornin kokoamiseen tarvittavat puupalikat luokan eteen pöydälle. Opettaja seisoo paikoillaan tönkkönä ja alkaa esittää Harold-robottia. Harold pystyy vastaamaan vain tiettyihin komentoihin. Näitä komentoja ei anneta lapsille etukäteen.

    Opettaja pyytää lapsia ohjaamaan Haroldia yksiselitteisillä komennoilla, kuten ”siirrä kättäsi vasemmalle” tai ”valitse kätesi vieressä oleva palikka”. Jos lapsi yrittää liian monimutkaista komentoa tai komentoa, joka ei sisälly Haraldin sanavarastoon (esimerkiksi ”laita kolme palikkaa päällekäin), opettaja pudistelee päätänsä.

    Tehtävä on valmis, kun torni on rakennettu. Opettaja keskustelee lasten kanssa siitä, mihin komentoihin robotin voi olettaa voivan vastata ja mitä tietokonemaista robottia todennäköisesti ei voi pyytää tekemään.

    Tavoite: Lapsi oppii, minkälaisia ohjeita tietokone pystyy seuraamaan, ja miten kirjaimellisesti ohjeet on annettava, jotta aivoton kone voi seurata niitä. Kenelle: Alakouluikäisille. Vaatimukset ja valmistautuminen: Ei teknisiä vaatimuksia. Vaatii valmistautumista – opettaja ohjaa leikin. Kieli: Englanti. Hinta: Ilmainen, halutessaan voi ostaa kirjan jossa harjoituksia on kuvattu vielä yksinkertaisemmin. Osoite: csunplugged.org

    Muita 1–2-luokille sopivia resursseja


    Robottileikki Computer Sciencein-a-Box: Unplug Your Curriculum Computer Science for Fun
    Lyhyesti Kuuluisa labyrinttileikki, jossa lapset ohjaavat robottia kohti maalia. CSUnplugged.orgsivuston pohjalta koottuja harjoituksia. Aktiviteetteja alakouluikäisille brittiopettajilta.
    Luokka 1–6 1–6 1–6
    Valmistautuminen Vaatii valmistautumista, mutta harjoitukset ovat helppoja. Vaatii valmistautumista – sisältää vastaukset ongelmiin ja pohjustavia videoita. Vaatii valmistautumista – opetusmateriaalin valmistus.
    Lyhyesti Kuuluisa labyrinttileikki, jossa lapset ohjaavat robottia kohti maalia. CSUnplugged.orgsivuston pohjalta koottuja harjoituksia. Aktiviteetteja alakouluikäisille brittiopettajilta.
    Vaatimukset Paperia, teippiä. Luokkahuoneessa löytyvää tarpeistoa (paperia, magneetteja, liituja). Paperia, pelikortit, videoprojektori.
    Hinta Ilmainen. Ilmainen. Ilmainen.
    Kieli Ohjeet englanniksi. Ohjeet englanniksi. Ohjeet englanniksi, saksaksi, ranskaksi ja venäjäksi.
    Osoite http://drtechniko.com/2014/02/04/how-to-train-your-robot-to-jump/ ncwit.org/resources/computer-science-boxunplug-your-curriculum cs4fn.org/teachers/activities

    3.–6. luokka: Visuaalinen ohjelmointiympäristö

    Verkosta löytyy useita lapsille suunnattuja visuaalisia ohjelmointiympäristöjä sekä miniohjelmointikieliä. (”Miniohjelmointikieli” viittaa englannin termiin educational programming language, jonka voisi kääntää myös ”opetuskäyttöön luoduksi ohjelmointikieleksi”, mutta tässä käytetään lyhyempää muotoa ”miniohjelmointikieli”.)

    Visuaalisia ohjelmointiympäristöjä ovat esimerkiksi Logo ja Scratch, jotka opettavat koodaamisen perusteita omassa näkymässään. Visuaalisia ohjelmointiympäristöjä käyttämällä ei voi koodata vaikkapa iPhonelle, mutta ne opettavat ajatusrakenteita ja taitoja, joita voi hyödyntää myöhemmin niin sanotusti oikeasti ohjelmoidessa.

    Esimerkiksi Scratchin avulla tehdyt pelit ja muut tuotokset voi myös jakaa internetissä vaikkapa kavereiden ja sukulaisten saataville. Visuaalisessa ympäristössä on varsinaista ohjelmointiympäristöä helpompi välttää virheitä, jotka vievät aloittelijan motivaation: Kun ohjelmoinnissa pilkku menee väärään paikkaan tai jostain puuttuu kirjain, sitä kutsutaan kirjoitusvirheen sijaan syntaksivirheeksi. Ne saattavat turhauttaa vasta-alkajaa, sillä yksikin virhe saattaa estää koko ohjelman toiminnan. Visuaalisissa ympäristöissä komentoja annetaan esimerkiksi raahaamalla ruudulla erilaisia palikoita. Sitä kautta päästään tekemisiin suurten linjojen kanssa, eikä pieniä tarkkuusvirheitä pääse syntymään.

    Miniohjelmointikielet puolestaan näyttävät oikealta ohjelmoinnilta, mutta ne ovat oikeita kieliä helpompia ja nopeampia oppia. Monissa oikeissa ohjelmointikielissä on valtava määrä ominaisuuksia, joita tarvitaan ammattilaisten työympäristöissä monimutkaisia ohjelmistoja kehitettäessä. Tällöin yksinkertaisenkin asian tekeminen voi vaatia paljon koodia ja kokonaisen ohjelmointiympäristön hallintaa.

    Miniohjelmointikielissä keskitytään yksinkertaisiin alkeisiin. Ne opettavat ohjelmoinnin perusteita nopeasti ja näkyvin tuloksin. Monet miniohjelmointikieliin perustuvat ajatukset liittyvät tutkija Seymour Papertin työhön, ja lähes kaikista suosituista ohjelmointikielistä löytyy yksinkertaistettu aloittelijaversio. Pitkä lista näistä ohjelmointikielistä löytyy Wikipediasta: en.wikipedia.org/wiki/Educational_programming_language

    Scratch

    Scratch on tätä kirjoittaessa tunnetuin visuaalinen ohjelmointiympäristö, joka on – mahtavaa! – saatavilla keskeisiltä osin myös suomeksi.

    Arvostetussa yhdysvaltalaisessa teknisessä yliopistossa MIT:ssä kehitetty Scratch on ilmainen ohjelmointiympäristö, joka opettaa ongelmanratkaisutaitoja ja alkeellista ohjelmointia. Scratchista on myös tätä kirjoitettassa tulossa alle kouluikäisille suunnattu tablettiversio, ScratchJR.

    Scratchin ajatus on, että oppilas ei kirjoita koodia. Sen sijaan asiat tehdään pääosin hiirellä raahaamalla: esimerkiksi ruudulle luodaan hahmoja ja liitetään niihin toiminnallisuuksia. Toiminnallisuuskia eli palikkamaisia työkaluja käyttämällä ja yhdistelemällä oppilas voi muodostaa esimerkiksi pelejä ja tarinoita. Samalla hän oppii ohjelmoinnillista ajattelua kuten ongelmien pilkkomista, algoritmeja ja toistettavuuden perusteita.

    Scratchia käyttävät opettajat ympäri maailmaa, ja sen ympärille on syntynyt paljon harjoituksia. Scratchin yli neljän miljoonan (!) esimerkin joukosta löytyvät ohjelmointiohjeet esimerkiksi oman sähköisen pianon, joulukortin tai seikkailupelin luomiseen.

    Opettajan on syytä tutustua Scratch-ympäristöön ainakin parin tunnin ajan etukäteen ja valita alkuun yhteinen harjoitus. Harjoituksia voi valita joko Scratchin omasta ympäristöstä tai lukea muiden opettajien suosituksia esimerkiksi suomalaisen Scratch Klubin sivuilta (sites.google.com/site/scratchklubi) tai kansainväliseltä Scratched-sivulta (scratched.media.mit.edu).

    Oppilaita kannattaa myös kannustaa jakamaan ja selittämään omia ohjelmiaan.

    Scratchin peruskonseptin ymmärtää parhaiten esimerkin avulla:

    Esimerkki: Interkatiivisen tervehdyskortin tekeminen Scratchilla

    Esimerkiksi valitussa Scratch-harjoituksessa tehdään interaktiivinen tervehdyskortti, esimerkiksi äitienpäiväkortti. Harjoitus kestää noin oppitunnin.

    1. Ohjaa aluksi oppilaat osoitteeseen scratch.mit.edu/projects/editor/?tip_bar=hoc (Huom.! Kaikki harjoitusten osoitteet ja mitkä tahansa www-osoitteet voi lyhentää vain muutaman kirjaimen mittaiseksi dy.fi-osoitteesta löytyvän palvelun avulla. Lyhyet osoitteet on huomattavasti helpompi jakaa oppilaille.)

    2. Selitä oppilaille, että oppitunnin tarkoituksena on harjoitella ohjelmointia luomalla jaettava sähköinen tervehdyskortti (esimerkiksi äitienpäiväkortti, joulukortti, pääsiäiskortti tms.). Kerro, että sähköisestä, nettiselaimessa toimivasta kortista tulee sellainen, jota klikkaamalla sen hahmot liikkuvat, kortista kuuluu ääniä tai muita jännittäviä asioita tapahtuu sen mukaan, millaisen kortin kukin oppilas haluaa tehdä.

    3. Harjoituksessa on keskeistä nimenomaan lisätä korttiin erilaisia toiminnallisuuksia, jotta oppilaat pääsevät harjoittamaan ohjelmoinnillista ajatteluaan: mitä minun pitää käskeä tietokonetta tekemään, jotta ruudulla tapahtuu haluamani asia.

    4. Aloittakaa vaihtamalla Scratchin kieli suomeksi klikkaamalla sivuston vasemmasta ylänurkasta maapallon kuvaa ja etsimällä valikosta sana ”suomi”. Jos oppilaat ymmärtävät englantia, voitte katsoa yhdessä oikeassa laidassa olevan videon, joka esittelee Scratchin perusideaa sekä joulukorttiharjoitusta.

    5. Kortin tekeminen koostuu vaiheista: aluksi näytölle lisätään hahmo, sitten hahmoon liitetään toiminnallisuus. Tämän jälkeen kortille lisätään taustakuva ja lopuksi kortti jaetaan ystäville.

    Scratchin perusnäkymä. Vasemman ylänurkan maapallokuvakkeesta vaihdetaan kieleksi suomi.

    6. Hahmon lisääminen aloitetaan tuomalla näytölle jokin Scratchin tarjoamista valmiista kuvioista, jotka löytyvät Uusi hahmo -palkista. Scratchissa kaikki ohjelmat perustuvat hahmoihin ja niiden toimintaan. Hahmo voi olla valittu valmiista galleriasta, itse piirretty tai vaikkapa oppilaan oma valokuva itsestään. (Näytöllä valmiiksi olevan kissahahmon voi poistaa klikkaamalla ensin yläpalkin saksikuvaketta ja klikkaamalla sitten kissaa.)

    7. Oheisessa kuvassa ruudulle tuotu hahmo on koira. Kun hahmo on tuotu ruudulle, siihen voidaan liittää erilaisia toiminnallisuuksia. Tämä on Scratchin koko konseptin ydin: oppilaan ei tarvitse kirjoittaa ohjelmakoodia, vaan hän valitsee valikosta erilaisia valmiita toiminnallisuuksia ja yhdistelee niitä sekä toisiinsa että näytöllä oleviin objekteihin mielensä mukaan. Toiminnallisuuksia käytetään yksinkertaisesti raahaamalla ne hiirellä valikosta toiseen ikkunaan.

    8. Tehkää aluksi esimerkin vuoksi yhteinen toiminnallisuus, jota oppilaat voivat muokata. Pyydä oppilaita valitsemaan Tapahtuma-välilehdeltä ”Kun tätä hahmoa klikataan”-toiminnallisuuden sisältävä palikka ja raahaamaan se näkymän oikeanpuoleiseen osaan.

    9. Seuraavaksi pyydä oppilaita menemään Ulkonäkö-välilehdelle ja raahaamaan edellisen palikan alle uusi toiminnallisuus nimeltä ”Ajattele ‘TÄHÄN VALITSEMANNE TEKSTI’ 5 sekunnin ajan”.

    Eri värisiä toiminnallisuuspalikoita raahataan oikeanpuoleiseen ikkunaan, jolloin niistä syntyy toiminnallisuuksia vasemmassa ikkunassa näkyvälle koiralle. Kuvassa koiralle on lisätty toiminnallisuus, jonka mukaisesti koiraa klikkaamalla ruudulle ilmestyy puhekupla: ”Hmm, tänään on äitienpäivä…”

    10. Klikatkaa hahmoa. Hahmolle syntyy puhekupla, jossa valittu teksti lukee.

    11. Tässä vaiheessa oppilas on saanut peruskäsityksen Scratchin toiminnallisuudesta. Seuraavaksi kukin voi kokeilla yhdistellä erilaisia toiminnallisuuksia.

    12. Erilaisia vaihtoehtoja ovat esimerkiksi hahmon taustan muokkaus. Hahmon voi laittaa myös toistamaan komentoja, liikkumaan ja puhumaan. Oheisessa kuvassa hahmolle on lisätty seuraavaksi toiminnallisuus, jossa se liikkuu ruudun poikki ja toteaa äitienpäivän kunniaksi: ”Lähdenkin tästä onnittelemaan!” Lisää inspiraatiota löytyy myös 2 500 muusta kortista.

    Koiralle on lisätty uusi toiminnallisuus, jonka mukaisesti koiraa klikkaamalla se liikkuu 10 kertaa peräkkäin 30 pienen pykälän verran oikealle. Liikkeen jälkeen koiralle ilmestyy puhekupla: ”Lähdenkin tästä onnittelemaan!”. Projektin voi tallentaa vasemman ylänurkan Tiedosto-nimisestä valikosta.

    13. Kehota oppilaita jakamaan projektinsa ystävilleen tai vanhemmilleen ”Jaa”-painikkeesta näytön oikeasta ylänurkasta. Tämä avaa projektin omaan ikkunaansa, jonka linkin voi jakaa kavereille sähköpostina tai vaikkapa Facebook-viestinä.

    14. Jos ja kun haluatte palata projekteihinne, muistakaa tallentaa ne klikkaamalla hiirellä vasemman ylänurkan valikosta: ”Tiedosto” > ”Tallenna nyt”.

    Ohjeita opettajalle löytyy osoitteesta scratch.mit.edu/hoc

    Miten pääsee alkuun:> Scratch-ympäristö on tätä kirjoittaessa suomennettu jo suurelta osin.

    Kenelle: Alakouluikäisille, mutta myös vanhemmille.

    Vaatimukset: Moderni selain sekä Adobe Flash Player. Scratch on ladattavissa myös Windows-, OS X- (eli Mac-) ja Linux-koneille.

    Kieli: Englanti, osin suomennettu.

    Hinta: Ilmainen.

    Osoite: scratch.mit.edu

    Muita 3–6-luokille sopivia resursseja


    Kodu Alice App inventor Logo Turtle Roy HacketyHack, KidsRuby, TryRuby.org
    Lyhyesti Microsoftin kehittämä visuaalinen ohjelmointiympäristö, jossa ohjelmoidaan pelejä. 3D-opetusympäristö, jossa opetellaan olioohjelmoinnin alkeita. MIT:ssä kehitetty visuaalinen ohjelmointiympäristö, jolla voi tehdä Androidpuhelimissa toimivia applikaatioita. 1960-luvulla kehitetty ohjelmointiympäristö, joka on suunniteltu opettamista varten. Suomalainen Logoon perustuva ohjelmointiympäristö, jota on käytetty osana Koodikoulua. Lapsille suunnattu versio Ruby-kielestä.
    Luokka 7–9 3–6 4–9 3–9 1–6 7–9
    Valmistautuminen Videotutoriaaleja esim. youtube.com/watch?v=KWUyPpwQllE Tutoriaaleja, esim. alice.org/3.1/index.html Vaatii valmistautumista – opettajalla tulisi olla hyvä käsitys materiaalista appinventor.mit.edu/explore/teach.html Vaatii valmistautumista – internetissä useita e-kirjoja. Hyvä tutustua komentoihin etukäteen. Vaatii valmistautumista
    Vaatimukset Windows-käyttöjärjestelmä. Windows-, OS X- (Mac) tai Linuxkäyttöjärjestelmä. Google-tili, Androidpuhelin tai emulaattori. Moderni verkoselain. Moderni verkoselain. Asennettava koneelle etukäteen, vaatii opettajalta valmistautumista.
    Hinta PC-versio maksuton, Xboxille viitisen euroa. Ilmainen. Ilmainen. Ilmainen. Ilmainen. Ilmainen.
    Kieli Englanti. Englanti. Englanti. Englanti. Englanti. Englanti.
    Osoite kodugamelab.com alice.org/index.php appinventor.mit.edu/explore el.media.mit.edu/logo-foundation/ github.com/raimohanska/turtle-roy hackety.com/
    tryruby.org
    kidsruby.com

    7.–9. luokka: Oikea ohjelmointikieli!

    Opetussuunnitelman luonnoksen mukaan yläkoulussa aletaan perehtyä johonkin oikeaan ohjelmointikieleen.

    OPH:n suunnitelma ei ota kantaa käytettävään kieleen. Käytännössä mahdollisia vaihtoehtoja ovat esimerkiksi Python, Ruby tai JavaScript. Nämä ovat nykyaikaisia, eri käyttötarkoituksiin sopivia mutta ammattilaistenkin käyttämiä kieliä, joiden alkeet ovat ymmärrettävissä yläkoulutasolla.

    Haasteena varsinaiseen ohjelmointikieleen hypättäessä on antaa oppilaalle hyvä ensikokemus ohjelmoinnista, ja saada hänet näkemään nopeasti työn tulokset, mikä motivoi jatkamaan kielen tutkimista ja oppimista. Avainasemassa on tässä tarjota tunne jatkuvasta edistymisestä ja ottaa niin pieniä edistysaskelia, ettei oppilas tipahda kyydistä.

    Alla listattuja ohjelmointikieliä voi opettaa asentamalla kyseisen ohjelmointikielen omalle pöytäkoneelle tai läppärille. Toisaalta ohjatut, selainympäristössä toimivat tuotteet tarjoavat usein sekä valmiita neuvoja harjoitusten läpiviemiseksi että automaattisen tarkastuksen kirjoitetulle koodille. Suomenkielistä kirjallisuutta yläkouluikäisille on ikävä kyllä toistaiseksi tarjolla niukasti.

    Tärkeintä on ottaa riittävän pieniä askelia ja tarjota oppilaalle tunne jatkuvasta edistymisestä.

    Khan Academy

    Mikä: Khan Academy on voittoa tavoittelematon sivusto, joka opettaa ohjelmoinnin lisäksi esimerkiksi matematiikan perusteita. Khan Academyssä opetettava kieli on nimeltään JavaScript. JavaScriptiä käytetään lähes kaikilla verkkosivuilla, kun sivustolle halutaan ohjelmoida interaktiivisia toiminnallisuuksia, animaatioita, pelejä tai muuta vastaavaa. Khan Academy opettaa kielen perusteet interaktiivisten harjoitusten ja videoiden avulla.

    Khan Academyssä oppilas katsoo ensin videon (talk-through), jossa seuraavaksi tehtävän harjoituksen sisältö selitetään. Kaikkiin teemoihin liittyy myös niin sanottu haaste (challenge), jossa interaktiivisessa ympäristössä kokeillaan käytännössä aiemmin selitettyä. Harjoituksiin liittyy myös niin sanottu projekti (project), jossa opittua sovelletaan.

    Khan Academy toimii erityisen hyvin itseopiskelussa. Harjoituksissa opitaan JavaScript-kielen perusteita koodaamalla lautasmalleja ja muistipelejä, mutta tutustutaan myös ohjelmoijiin työssään.

    Ohjelmointiin liittyviä harjoituksia ei löydy vielä tätä kirjoittaessa suomeksi, mutta muuta sivuston sisältöä on jo vapaaehtoisvoimin käännetty suomeksi.

    Esimerkki: Väritysharjoitus JavaScriptillä

    Tältä näyttää harjoitus, joka liittyy JavaScriptillä värittämiseen Khan Academyssä. Vasemmalla näkyy koodia ja oikealla se, mitä koodi tekee (piirtää näytölle palloista, suorakaiteista ja viivoista koostuvan ukkelihahmon).

    Play-nappia painamalla voi seurata videota, jossa naisääni selittää koodin toiminnallisuutta ja tekee muutoksia koodiriveihin. Selostus on englanniksi, mutta hammasratasta klikkaamalla saa näkyville tekstitykset. Tekstityksiä ei vielä tätä kirjoittaessa ole suomennettu.

    1. Harjoitus kannattaa aloittaa kuuntelemalla ohjeistus. Selostuksen voi pysäyttää milloin tahansa. Näkymän alareunasta voi myös tarkistaa, minkälaisia kysymyksiä muilla on ollut aiheeseen liittyen, minkälaisia versioita samasta ohjelmasta on tehty, ja mitä dokumentaatiota on tarjolla.

    2. Selostuksen jälkeen on haasteen vuoro. Tässä kohden oppilas pääsee kokeilemaan taitojaan. Oheisessa kuvassa esitetyssä haasteessa muutetaan ensin koodin avulla kirsikka punaiseksi ja sen jälkeen askel askeleelta koko jäätelö. Kaikki komennot löytyvät näkymän alareunasta, ja tarvittaessa haasteisiin löytyy myös vinkkejä.

    Toinen väritysharjoitus JavaScript-kielellä. Vasemmalla olevaa koodia muuttamalla väritetään oikealla olevan kakun osien värejä.

    Kolmas väritysharjoitus JavaScript-kielellä. Vasemmalla olevaa koodia muuttamalla luodaan oikealla olevalle lautaselle yksinkertaisia geometrisia muotoja, jotka edustavat ruokaa.

    3. Niin kutsutun projektin ideana on soveltaa aiemmin opittua ja tarjota ympäristö kokeilemiseen. Projektin voi tallentaa. Kuvassa esitetyn projektin tarkoituksena on piirtää koodia käyttämällä lautaselle erilaisia yksinkertaisista geometrisista muodoista koostuvia ruokia.

    Kenelle: Khan Academy soveltuu yläkouluikäisille ja sitä vanhemmille.

    Vaatimukset: Toimii lähes kaikilla tietokoneilla ilman asennusta.

    Miten pääsee alkuun: Khan Academy on hyvin ohjattu ympäristö, ja motivoitunut oppija käy ohjelmoinnin perusteet läpi ajatuksella muutamassa päivässä. Opettajan on hyvä kokeilla ensimmäiset harjoitukset läpi itse.

    Kieli: Englanti.

    Hinta: Ilmainen. Takana on voittoa tavoittelematon yhteisö.

    Osoite:
    khanacademy.org/computing/cs

    Muita 7–9-luokille sopivia resursseja


    W3 Schools Udacity Codecademy Code School EdX Helsingin yliopiston MOOC MIT OpenCourseWare
    Lyhyesti Verkon sanakirja. Sisältää HTML-, CSS-, JavaScript-, XML-, PHP ja SQL-termejä ja niihin liittyviä interaktiivisia koodipätkiä. Useita amerikkalaisten yliopiston ohjelmointikursseja, joita seurataan videoiden ja harjoitusten kautta. Interaktiivisia selaimessa suoritettavia harjoituksia. Kielivaihtoehtoina HTML, CSS, JavaScript, Python, Ruby ja PHP. Sopii itseohjautuvalle Pidemmälle edistyneille syventäviä kursseja JavaScriptin, HTML:n, CSS:n Ruby:n ja iOS:n maailmasta. Oppilaat oppivat videoiden ja selaimessa tehtävien harjoitusten avulla. Videoita Python-, Ruby-, C++-kielistä sekä koneälystä. Yhdistelmä pdftiedostoja, tutoriaaleja ja kysymyssarjoja. Helsingin yliopisto järjestää avoimia verkkokursseja ohjelmoinnista. MIT:n ohjelmointikursseja – sisältää erityisesti kehuttuja teoriakursseja, lukumateriaalia, harjoituskysymyksiä sekä luentovideoita.
    Luokka 6–9+ 9+ 6–9+ 9+ 9+ 9+ 9+
    Valmistautuminen Toimii parhaiten lunttilappuna. Soveltuu erityisen edistyneille itseopiskeluun. Hyvää opiskelumateriaalia myös opettajalle. Soveltuu erityisen edistyneille itseopiskeluun. Kurssit käynnissä vain tietyn aikaa. Kurssit käynnissä vain tietyn aikaa. Soveltuu itseohjautuvalle.
    Vaatimukset Tietokone, internetselain. Tietokone, internetselain. Tietokone, internetselain. Tietokone, internetselain. Tietokone, internetselain. Tietokone, internetselain. Tietokone, internetselain.
    Hinta Ilmainen. Ilmainen, mutta sertifikaatti maksaa. Ilmainen. Ilmainen. Ilmainen. Ilmainen. Ilmainen.
    Kieli Englanti. Englanti. Englanti. Englanti. Englanti. Englanti, osassa suomi. Englanti.
    Osoite w3schools.com udacity.com codecademy.com codeschool.com edx.org mooc.cs.helsinki.fi ocw.mit.edu/index.htm
    http://ocw.mit.edu/courses/intro-programming/

    Lisää 7–9-luokille sopivia resursseja

    Processing Coursera Code Avengers Code Combat ruby warrior Dash Kinestethic Learning Activities
    Lyhyesti Kiinnostava vaihtoehto lapselle, joka on jo kokeillut JavaScriptin perusteet ja kaipaa visuaalisempaa oppimisympäristöä. JavaScriptin, Pythonin ja tietokantojen perusteet. Perustuu yliopistokursseihin. Selaimessa pelattava peli, jossa opitaan JavaScriptin, HTML:n ja CSS:n perusteita. Selaimessa pelattava seikkailupeli, jossa opitaan JavaScriptin perusteita. Selaimessa pelattava seikkailupeli, jossa opitaan Rubyn perusteita. HTML:n ja JavaScriptin perusteet interaktiivisten harjoitusten perusteella. Leikkejä, jotka opettavat ohjelmoinnin peruskäsitteitä. Soveltuvat myös vanhemmille oppilaille.
    Luokka 6–9+ 9+ 3–9+ 6–9 6–9 6–9+ 7–9
    Valmistautuminen Ei etene lineaarisesti, vaatii opetajalta perehtymistä. Soveltuu itseohjautuvalle. Opettajan on hyvä pelata itse läpi ensin. Soveltuu myös opettajien itseoppimismateriaaliksi. Vaatii valmistautumista – opettajan on hyvä lukea koko harjoituksen kuvaus.
    Vaatimukset Tietokone, internetselain. Tietokone, internetselain. Tietokone, internetselain. Tietokone, internetselain. Tietokone, internetselain. Tietokone, internetselain.
    Hinta Ilmainen. Ilmainen. Ilmainen. Ilmainen. Ilmainen. Ilmainen. Ilmainen.
    Kieli Englanti. Englanti. Englanti. Englanti. Englanti. Englanti. Ohjeet englanniksi.
    Osoite processing.org coursera.org/course/cs101 codeavengers.com codecombat.com bloc.io/ruby-warrior dash.generalassemb.ly cs.ubc.ca/~kla

    Sopivaa luokasta riippumatta: Mobiilisovellukset

    Älypuhelimet ja tabletit ovat tulleet kiinteäksi osaksi arkeamme, ja mobiililaitteille on alkanut löytyä työkaluja myös ohjelmoinnin opettamiseen. Puhelimilla ja tableteilla voi monipuolistaa harjoituksia, mutta yksinään ne eivät vielä opeta ohjelmointia. Monet mobiilisovellukset ovat pulmapelejä, jotka muuttuvat haastavammiksi kierros kierrokselta.

    Puhelimilla ja tableteilla voi monipuolistaa harjoituksia. Monet mobiilisovellukset ovat pulmapelejä.

    Mobiilisovellukset ovat tuotteina uusia, niiden hinnat vaihtelevat, eikä saatavilla ole yhtä ehdotonta vaihtoehtoa. Siksi olemme nostaneet esille kaksi erilaista sovellusta. Tätä kirjoitettaessa myös aiemmin esitellystä Scratchista on tulossa ScratchJR-niminen tablettiversio.

    Tynker

    Tynker on Scratchin inspiroima iPad-sovellus, joka opettaa lapselle koodauksen perusteita ongelmapelien avulla. Tynkerin harjoitukset vaikeutuvat kenttä kentältä. Harjoituksissa seikkailevat esimerkiksi koira, jonka pitää ohjelmoida tiensä takaisin kotiin sekä robotti, joka ohjaa avaruuskonetta.

    Pelaaminen Tynkerillä on hyvin ohjattua. Käyttöliittymä ja komennot ovat englanniksi, mutta ne ovat hyvin yksinkertaisia. Tynker sisältää paljon työkaluja opettajia varten. Oppilaita voi jakaa ryhmiin, ja tekemisen tahtia voi seurata oppilastasolla. Erilaisia opintokokonaisuuksia on kuusi, joissa jokaisessa on noin 45 minuuttia sisältöä. Lisää materiaalia saa maksua vastaan. Tynkeristä löytyy myös maksullinen verkkoversio, jota voi pelata iPadin sijaan pöytäkoneen tai kannettavan tietokoneen selaimessa.

    Tynker-iPad-sovellus. Koiran on selvitettävä tiensä esteiden yli oppilaan antamilla komennoilla.

    Kuvassa esitetyssä tehtävässä lapsen tehtävänä on ohjata koira lakin luo. Vasemmalla olevaan ikkunaan raahataan Scratchista tuttuja komentopalikoita. Matkalla olevia esteitä kuuluu väistää.

    Komentopalikoista muodostuva koodi vaikeutuu taso tasolta. Tässä esimerkissä harjoitellaan niin kutsutun silmukan käsitettä eli saman asian toistamista yhä uudelleen. Oranssin ”repeat 3” -palikan sisälle raahataan violetti ”run”-komento. Näiden yhteisvaikutuksesta koira ottaa aina kolme askelta, hyppää esineen yli ja toistaa taas saman kolmen askeleen ja hypyn toiminnon. Kuten edellisen sivun kuvasta näkee, koira päätyy tällöin hyppäämään sekä kurpitsan että lippalakin yli.

    Play-nappia painamalla oppilas pääsee kokeilemaan palikoista luomaansa koodia. Ohjelma myös antaa vinkkejä, jos oppilas jumiutuu. Tasoja voi ratkaista eri tavoin.

    Kun taso on päästy läpi, oppilas näkee muun muassa, kuinka kauan ratkaisemiseen meni, ja olisiko tason voinut ratkaista muilla tavoin.

    Hopscotch

    Hopscotch on Tynkeriä monipuolisempi iPad-ympäristö, jossa lapsi voi kokeilla visuaalista koodaamista. Hopscotch muistuttaa myös edellä esiteltyä Scratchia.

    Koodipalikoista muodostuvat projektit voivat olla pelejä, tarinoita tai vaikka taidetta. Muiden rakentamia projekteja voi tutkia ja katsoa, miten ne on rakennettu. Tällä hetkellä Community-osiosta löytyy esimerkiksi peli, jossa eläimet juoksevat kilpaa, kun oppilas tökkää ruutua.

    Hopscotch on ilmainen. Sitä varten on myös kirjoitettu opettajan opas, jonka saadakseen on jätettävä sähköpostiosoitteensa. Opettajan oppaaseen sisältyy kalvoja, joissa selitetään Hopscotchin avulla esimerkiksi mitä on ohjelmointi, mitä ovat silmukat, mitä on satunnaisuus ja mitä ovat ehtolauseet.

    Hopscotchissa jokaiseen hahmoon liittyy sääntöjä. Kuvassa yllä apinaan liitetään sääntö, jonka perusteella se tanssii, kun projekti aloitetaan ja hyppää, kun apinaa tökätään. Lisäksi kaikilla hahmoilla on joukko kyvykkyyksiä, joka ovat ennalta ohjelmoituja koodipätkiä, joita voi käyttää sellaisenaan. Apina voi esimerkiksi tanssia, kasvaa tai leijua. Omia kyvykkyyksiä voi myös tallentaa.

    Koodia kirjoitetaan raahamalla Scratchista tuttuja liikkumiseen, piirtämiseen, ulkonäköön ja ehtoihin liittyviä palikoita ohjelmointialueelle. Erilaisia ohjelmapätkiä voi kirjoittaa useampia. Esimerkiksi tässä määritellään mielikuvituksellisesti, että ohjelman alkaessa karhuhahmo (ks. seuraavan sivun kuva) kasvaa 125 prosenttia, katoaa hetkeksi, liikkuu näytöllä 761 kuvapisteen verran ja pyörii 360 asteen ympyrää viisi kertaa.

    Kun painaa edellisen kuvan oikean ylänurkan Play-nappia, ohjelmakoodin toiminnallisuutta pääsee kokeilemaan käytännössä. Tässä tarinan alku karhuineen.

    Muita mobiiliresursseja


    CargoBot Kodable Hakitzu
    Lyhyesti Peli. Pelaajat oppivat logiikkaa siirtelemällä kontteja robottikädellä. Tasojen muuttuessa vaikeammiksi pelaajan pitää muodostaa funktioita ja käyttää jäljellä olevat siirrot tehokkaasti. Kodable on ilmainen iPad-peli, joka opettaa yksinkertaisten logiikkaharjoitusten kautta ohjelmointia. Sopii parhaiten pienille. Pelaajat oppivat JavaScriptin perusteet ohjaamalla taistelevia robotteja.
    Luokka 3–6 1–2 5–9
    Valmistauminen Ohjelman asennus. Ohjelman asennus. Opettajan materaali:
    dropbox.com/s/doj9fug23eymsgf/Hakitzu%20Teachers%20Guide.pdf
    Vaatimukset iPad, iPhone. iPad, iPhone. iPad, iPhone, Androidlaite
    Hinta Ilmainen. Ilmainen. Ilmainen.
    Kieli Englanti. Mm. englanti, suomi, ruotsi. Englanti.
    Osoite twolivesleft.com/ CargoBot kodable.com/ kuatostudios.com

    Open tarkistuslista ensimmäiselle tunnille

    Oli kyseessä sitten leikki tai verkkoresurssi, opettajan kannattaa käydä oheinen lista läpi ennen ensimmäistä ohjelmointiharjoitusta.

    1. Valitse sopiva harjoitus

    Valitse sopiva harjoitus tai tutoriaali hyödyntäen esimerkiksi jotain aiemmin tässä osiossa esiteltyä verkkoresurssia tai leikkiä. Käy harjoitus läpi itse, jotta tunnet sen kulun.

    2. Varaa tarvittavat resurssit

    Tarkista, että harjoitus / sivusto / tutoriaali toimii oppilaan käytössä olevalla laitteella (mukaan lukien ääni ja kuva).

    Jos harjoitus vaatii ääntä, eikä koululla ole tarjota kuulokkeita, pohdi, onko harjoitusta mahdollista käyttää tilassanne, vai tuleeko hälyä liikaa. Oppilaita voi myös pyytää tuomaan omia kuulokkeitaan oppitunnille.

    Jos laitteita ei ole riittävästi, ohjaa kaksi tai useampia oppilaita saman laitteen ääreen. Kun oppilaat työskentelevät yhdessä, he auttavat toisiaan ja nojaavat vähemmän opettajaan. He oppivat myös, että ohjelmointi on ihmisten välistä yhteispeliä.

    3. Selitä oppilaille, miksi ohjelmointia opetellaan

    Selitä ohjelmoinnin ajatus ja tarkoitus yksinkertaisella tavalla: ihminen käskee tietokonetta, koska kone osaa tehdä monia asioita ihmistä nopeammin ja varmemmin. Käytä esimerkkejä, joista sekä pojat että tytöt välittävät (ihmisten auttaminen ja elämien pelastaminen, ihmisten yhdistäminen toisiinsa, oppilaan käyttämän puhelimen toiminta ja sen sovellukset, pelit, elokuvat, musiikki).

    Sano esimerkiksi: ”Ajatelkaa asioita, joita näette joke päivä: Älypuhelin. Mikroaaltouuni. Tabletti. Liikennevalo. Facebook. WhatsApp-viestiohjelma. Kaikki ne voivat toimia vain siksi, että joku on osannut ohjelmoida ne."

    Tai: ”Ohjelmointi auttaa yhdistämään ihmisen luovat ideat ja tietokoneen tarjoamat voimavarat. Ohjelmoijia tarvitaan kehittämään uusia lääkkeitä, tekemään tietokonepelejä, luomaan animaatioelokuvia, rakentamaan robotteja, tutkimaan vieraita planeettoja tai kehittämään itseään ajavia autoja.”

    Voit myös käydä läpi sivuilla 26–31 esiteltyjä esimerkkejä siitä, mitä kaikkea ohjelmoija voi luoda maailmaan.

    4. Ohjaa oppilaat harjoituksen pariin

    Kirjoita harjoituksen aloittamisen ohjeet näkyville.

    Varmista, että kaikki saavat harjoituksen auki.

    Pyydä oppilasta kysymään ensin kolmelta kaverilta ja vasta sitten opettajalta.

    5. Kun oppilas kohtaa ongelman

    Kun oppilaalla on ongelma, voit sanoa: ”Kysy ensin kolmelta luokkakaverilta. Jos heillä ei ole vastausta, kysy sitten minulta.”

    Tavalliset pedagogiset keinot toimivat myös ohjelmointiharjoituksissa. Rohkaise opiskelijoita onnistumisista: ”Hienoa Pörri, sinähän onnistuit! Kokeile saatko seuraavankin sujumaan!”

    On täysin sallittua vastata oppilaalle: ”Enpä osaa vastata tuohon suoralta kädeltä. Katsotaan ongelmaa yhdessä.”

    Voit myös muistuttaa oppilaita: ”Ohjelmoimaan oppiminen on kuin uuden kielen oppimista: kukaan ei osaa kaikkea sujuvasti saman tien.”

    6. Mitä tehdä oppilaille, jotka ovat selvästi muita edellä?

    Oppilaat voivat kokeilla muita harjoituksia joko saman sovelluksen parissa tai muualla. Esimerkkejä sopivista harjoituksista löytyy tämän oppaan sivuilta 98–99 ja 106–109.

    Ensimmäisinä harjoituksista selvinneet oppilaat voivat myös auttaa muita.

    Lista mukailee Code.org-sivuston opettajille suunnattua Quick Tips -listaa:
    code.org/learn (sivun alalaita)


    Tietokulma: Milloin opitaan tekemään verkkosivuja?

    Monet vasta-alkajat luovat verkkosivustoja nykyään valmiita sivustopohjia muokkaamalla. Jos sivut haluaa kuitenkin rakentaa itse tai oppia muokkaamaan valmiita pohjia monipuolisesti, HTML- ja CSS-kielistä on hyötyä.

    HTML eli HyperText Markup Language ja CSS eli Cascading Style Sheets eivät ole kirjaimellisesti ohjelmointikieliä, vaan niin kutsuttuja kuvauskieliä.

    HTML on merkkauskieli, jota käytetään internetissä julkaistavan verkkosivuston luomiseen. Perusmuodossaan HTML:llä merkitään esimerkiksi, mikä osa verkkosivuston sisällöstä on tekstiä, mikä on otsikkoa, ja mihin kohden tulee kuva tai taulukko. CSS:ää puolestaan käytetään verkkosivuston ulkoasun muokkaamiseen. CSS:llä voi muuttaa tekstin kirjasintyyppiä, otsikon väriä, sivuston elementtien sijoittelua ja niin edelleen.

    Näiden lisäksi hyvin yleinen sivustojen kehittämisessä tarvittava työkalu on JavaScript-kieli, jota käytetään esimerkiksi vuorovaikutusta sivustolle tuovien toiminnallisuuksien luomiseen.

    Monille lapsille oman verkkosivuston tekeminen on innostavaa ja helposti ymmärrettävää, koska visuaalista sivustoa luodessa sille tehdyt muutokset näkee heti ruudulla. Siksi verkkotyökalujenkin opettamisen voi aloittaa jo alakoulussa, jos vain aikaa ja intoa riittää.

    Oman verkkosivuston tekeminen on monille lapsille innostavaa.

    HTML:ää, CSS:ää ja JavaScriptiä voi hyvin opetella vaikkapa pienoisverkkokursseilla. Näitä tarjoavat esimerkiksi Codecademy (codecademy.com) ja Khan Academy (khanacademy.org).


    Ohjelmointi ja muut oppiaineet

    Uudessa opetussuunnitelman luonnoksessa ohjelmoinnin opetteluun otetaan aikaa lähtökohtaisesti matematiikan tuntijaosta. Samaan aikaan on ilmeistä, että koska ohjelmoinnilla on sovelluksia sekä tieteessä, taiteessa että esimerkiksi urheilussa, niin sitä voi myös sivuta lähes kaikissa kuviteltavissa olevissa oppiaineissa.

    Alla on muutama satunnaisesti valittuihin oppiaineisiin liittyvä esimerkki, jotka toivottavasti herättävät ajatuksia siitä, miten ohjelmointiin ja ohjelmien kehittämiseen liittyviä asioita voidaan ottaa esille innostavalla, arkielämän konkretiaa painottavalla tavalla.

    Yhteiskuntaoppi

  • Yläkoulun yhteiskuntaopissa voidaan perehtyä erilaisiin yhteiskunnallisesti merkittäviin asioihin verkosta löytyvien informaation visualisointien avulla. Esimerkiksi Apps4Finland-kisassa palkitut työt ovat hyvä alku: apps4finland.fi/voittajat-2013. Vaikka oppilaat eivät koodaisi itse, he näkevät konkreettisesti, miten ohjelmointitaitoja ja avointa dataa eli julkisesti saatavilla olevia tietovarantoja yhdistelemällä voi esittää kiinnostavia asioita maailmasta.
  • Yhteiskuntaopissa voisi harkita opetussuunnitelman puitteissa teettää koe-esseitä myös tieto- ja viestintätekniikkaan sekä ohjelmointiin liittyvistä asioista:
    • Miten ihmisen rooli työelämässä on muuttunut, kun tietokoneista on tullut yhä ”älykkäämpiä”?
    • Miten internet syntyi? Keitä ihmisiä ja tahoja kehitykseen liittyi?
    • Miten ensimmäiset tietokoneet syntyivät ja kuka niitä käytti?
    • Miten ilmainen tietosanakirja Wikipedia tai verkon musiikin ja elokuvien laittomat latauspalvelut ovat muuttaneet ihmisten elämää?

    Matematiikka

  • Matematiikkaa voisi – uudessa maailmanjärjestyksessä – opiskella tietokoneiden ja ohjelmointitaitojen avulla aivan nykyisestä poikkeavalla tavalla. Siinä keskityttäisiin varsinaisen laskemisen sijasta ongelman ymmärtämiseen ja muotoiluun – ja laskutoimitusosan ratkaisemiseen käytettäisiin tietokonetta. Kun tietokone hoitaa laskut, itse ongelmat voisivat olla laskutoimituksellisesti huomattavasti vaikeampia, ja tämän ansiosta niillä voisi olla yhä useammin selvä, ymmärrettävä ja motivoiva yhteys tosielämään, esimerkiksi biologiaan, maantietoon tai fyysisen maailman ilmiöihin.
    • Matemaatikko Conrad Wolfram on pitänyt aiheesta loistavan, huikealla tavalla silmiä avaavan puheen: youtube.com/watch?v=60OVlfAUPJg
    • Wolframin ja kumppaneiden ehdotukset uudenlaiselle, tietokonepohjaiselle matematiikan opetussuunnitelmalla löytyvät osoitteesta computerbasedmath.org

    Liikunta

  • Esimerkiksi alakoulun liikuntatunnilla voidaan leikkiä mitä tahansa yksikäsitteisten ohjeiden antamista vaativaa leikkiä. Tällainen voisi olla vaikkapa esterataleikki, jossa urheilukentälle kootaan renkaista ja tötsistä koostuva reitti. Oppilaiden on ohjeistettava tarkoin komennoin toisensa liikkumaan sen läpi sokkona, ja nopeimman parin aika voittaa.
  • Erilaisia leikkejä on esitetty esimerkiksi CS Unplugged -sivustolla (csunplugged.org).
  • Kuvataide

  • Kuvataiteessa voidaan kokeilla suunnitella käyttöliittymä omalle mobiilisovellukselle tai piirtää luonnoksia omiksi kotisivuiksi.
  • Toinen kuvataiteen tunnilla mahdollinen harjoitus on pyytää oppilasta antamaan toiselle oppilaalle ohjeita tietynlaisen kuvan piirtämiseksi. CS Unplugged -sivustolla on esimerkiksi harjoitus, jossa oppilaan tulee saada toinen oppilas piirtämään suorakaiteen ja rastin sekä oppilaan oman nimen sisältämä kuvio antamalla vain tarkkoja suullisia ohjeita ja näkemättä, mitä toinen piirtää. Toinen ei myöskään saa esittää kysymyksiä.
  • Yläkouluikäiset voivat opettaa tietokoneen luomaan taideteoksia Processing-ohjelmointiympäristön avulla: openprocessing.org/classroom/855
  • Musiikki

  • Musiikkitunnilla voidaan perehtyä musiikin tekemiseen tietokoneella – tai ihmetellä esimerkiksi EMI-nimisen tietokoneohjelmiston säveltämiä Frédéric Chopinia matkivia masurkoita
  • Käsityö

  • Käsityötunnilla voidaan puhua siitä, millä tavoin neulominen on itse asiassa algoritmista toimintaa, joka on suhteellisen helppoa opettaa myös tietokoneelle.
  • Vieraat kielet

  • Vieraissa kielissä voidaan pohtia esimerkiksi sitä, mitä tietokoneelle pitäisi sanoa, jotta se oppisi muodostamaan ruotsin tai ranskan säännöllisen verbin perusmuodosta eri persoonamuotoja. (Vinkki: koneen on opittava lisäämään perusmuotoon sopivia päätteitä.)