Jaa jotain- tapahtuma: Tuntisuunnitelmia koodauksen alkeisiin alakoulussa

Nyt on meneillään Open Education Week 13vk/2017.
Datasepän koodikoulu haluaa osallistua viikkoon antamalla muiden käyttöön muutamia tuntisuunitelmiaan CC BY-SA lisenssillä.

Tässä tuntisuunnitelmat 1-4, joilla pääsee alkuun ohjelmoinnin alkeiden opettamisessa sellainenkin henkilö, jolla ei kokemusta ohjelmoinnin opettamisesta tai ohjelmoinnista yleensä. Nämä on käytännön tasolla kokeiltuja ja hyväksi havaittuja.

Ohjelmoinnin alkeita peruskoulussa:
https://drive.google.com/file/d/0B9NBzNK8wX3jemRsWHYwYVhJUFU/view?usp=sharing

Tietotekniikan perusteita leikinomaisesti koodauksen opettelun ohessa?

Mitä tarkoitan otsikolla?
Ohjelmoijan tulee tietää jotakin myös tietokoneista, jotta osaa käskyttää tietokoneita. Tässä yksinkertaisia esimerkkejä siitä, miten koodaus ja tietotekniikan perusasiat limittyvät yhteen:

  1. Tietokone on tyhmä.
  2. Tietokone ymmärtää vain nollia ja ykkösiä (=binääriluvut).
  3. Ihmisen on kerrottava koodaamalla tietokoneelle, miten sen pitää toimia (=ohjelmakoodi)
  4. Koodi tallennetaan tietokoneen muistiin (=tiedosto, kansio, tallennus tiedostoon ja kansioon).
  5. Tietokonekone suorittaa koodia prosessorilla (=prosessori).
  6. Ihminen komentaa tietokonetta eli käynnistää koodin esim. näppäimistöllä tai hiirellä tai koskeusnäytöllä (=näyttö, hiiri, näppäimistö).

Näinpä on luontevaa yhdistää koodaustunteihin tietotekniikan perusasioiden opiskelua jossain määrin. Tietotekniikan perusteisiin voi nykyää katsoa kuuluvan myös internetin toiminnan ymmärtämisen. Muutamalla kivasti toteutetulla harjoituksella opetusvuoden aikana voidaan innostaa oppilaita tietotekniikan pariin.

Kivoja esimerkkejä tarkoitukseen löytyy mm. Computer Science Fundamentals plugged sivustolta, joka tarjoaa valmiiksi suunniteltuja oppitunteja eri ikäisille. Kannaa tutustua, tekniikka ei ole aina tylsää!
Näitä tehtäviä tehdään ympäri maailman peruskoulussa, ja tehtäviä voi tehdä oli luokassa tietokoneet käytössä tai ei.

Pari esimerkkiä, jota olen onnistuneesti kokeillut 4.-6. luokkalaisten kanssa:

  • Sivustolla on mm. Internetin sanaston opiskeluun kiva esimerkki leikki. Se havainnollista sitä, miten viestit internetissä liikkuvat käyttäjältä toiselle ja ainahan viestit eivät edes mene perille 🙂
  • Toinen mielestäni hyvin oivallettu esimerkki on kertoa binääriluvuista kuvien avulla, kuten tämä linkin esimerkki.


Miten opettaa ohjelmoinnin peruskäsitteitä peruskoululaisille?

Jo useita vuosia on ollut olemassa oppimisympäristöjä, joilla ohjelmoinnin peruskäsitteet voi opetella pelaajaoppimalla ja leikinomaisesti. Mitä se tarkoittaa?
Se tarkoittaa, että opettaja ei esittele käsitteitä etukäteen, vaan osallistujat oppivat ne käytännön kautta tekemällä. Toki on varmasti hyvä, että opettajan avustuksella kerrataan käsitteet, jotka tuli opittua tehtävässä.

Jos en olisi käytännössä näitä asioita lasten kanssa kokeillut, niin en kyllä uskoisi. Mutta monen ryhmän kanssa asioita kokeiltuani täytyy tunnustaa tosiasia – pelaajaoppiminen toimii lasten kanssa.

Esimerkkejä tehtävistä ohjelmoinnin peruskäsitteiden opiskeluun:

Tässä pieni esimerkki Silent teacher tehtävästä, jossa lähestytään mielestäni nerokkaasti muuttuja- käsitettä. Lähestytään sen kautta, mitä oppija jo osaa:

Pelaajaoppiminen: Voiko sitä hyödyntää koodauksen opettelussa ?

Törmäsin viime syksynä ensimmäisen kerran termiin pelaajaoppiminen. Luin siitä Tero Toivasen blogista.
Tero on käsitellyt asiaa muutenkin mm. tässä linkin diasarjassa termi esitellään hyvin.

Itse olen työskennellyt koodauksen parissa noin 20 vuotta. Tietokonepelejä tai pelaamista en kuitenkaan ole koskaan juurikaan harrastanut. Mutta sana pelaajaoppiminen, ja se miten Tero sitä kuvasi sytyttivät idealampun päässäni. Tämähän on juuri sitä mitä koodaustyössäni teen. Koodari pääsee harvoin suunnittelemaan ja toteuttamaan ohjelmia alusta alkaen, vaan valmiiden ohjelmien kehittämisessä ja ylläpidossa on se suurempi työsarka. Ylläpidolla tarkoitan tässä kohtaa sitä, että on etsittävä koodista virheitä (=bugeja), jonka joku muu on sinne vahingossa kirjoittanut. Virheen etsiminen koodauksessa tarkoittaa, että kokeillaan miten ohjelma toimii. Ja kokeillaan millä tavalla virhe saadaan aikaan. Hauskin vaihe on sitten kokeilla ja keksiä miten virhe saadaan korjattua tai kierrettyä. Ratkaisua etsittäessä on järkevää etsiä valmiita malleja esim. netistä tai keskustelupalstoilta. Tätähän se pelaajaoppiminen on 🙂

Lasten kanssa koodausta opetellessa pelaajaoppiminen mielestäni korostuu. He ovat luovia, eikä heillä usein ole ennakkokäsityksiä asioista. Lapset menevät ja kokeilevat ensin, ja luonnolliseti oppivat siinä samalla. Koodaukseen tämä lähestymistapa on sopiva.

Oppimisympäristöjä pelaajaoppijalle:

  • Datasepän koodikoulussa ja ensi askelissa koodauksen maailmaan olen käyttänyt paljon visuaalista code.org oppimisympäristöä, jossa pelaajaoppiminen korostuu. Koodaustunti tehtävän voi helposti aloittaa 3-4 luokkalaisten kanssa ilman, että tekijä juurikaan tietää koodauksesta mitään. Tehtävän suorittanut on kuitenkin oppinut käyttämään jo kolmea ohjelmoinnin perusrakennetta: Lause, Ehtolause ja Silmukka.
  • Astetta vaativampi visuaalinen oppimisympäristö on esim. Tero Toivasen julkaisema Scratch- klubi, jossa on koodaushaasteita ratkottavaksi pelaajaoppijoille. Kokeilin ympäristöä kerholaisten kanssa, ja totesin sen sopivan ryhmäni 5-6 luokkalaisille. Lauseen, ehtolauseen ja silmukan lisäksi opitaan käyttämään: muuttujaa ja funktiota, ja tapahtumankäsittelyä. Klubin haasteet suoritettuaan oppilas on oppinut perusteet ohjelmoinnista ja voi siirtyä vaikka ”oikean” ohjelmointikielen käyttöön.
  • Code.org Koodaustunti ja Scratch- klubi ovat visuaalista ohjelmointia. Siitä seuraava askel on merkkipohjainen ohjelmointi. Tähän on myös helppokäyttöinen oppimisympäristö esim. Scratch-klubin tekijältä eli Python- klubi. Tälle en osaa ikäsuositusta kertoa, kun en ole vielä lasten kanssa kokeillut. Mutta veikkaisin 7. luokkaa ja sellaisia oppilaita, jotka ovat jo ohjelmoinnista kiinnostuneet enemmän!

Koodausharjoitus ilman tietokonetta: Miten koodataan liikennevalot?

Peruskoulussa opetetaan ohjelmointia, ja yksi tärkeä tavoite on oivaltaa mihin kaikkeen ohjelmoinnilla käytännössä voi vaikuttaa. Ohjelmointiharjoituksiin voi ottaa esimerkkejä vaikka lähiympäristöstämme.

Mediakerholaiseni ovat 9-12 vuotiaita. He ovat opiskelleet jonkin verran koodauksen alkeita. Tänään kokeilin teettää heillä harjoituksen, jossa suunnitellaan millainen voisi olla liikennevalojen ohjelmakoodi. Koulumme lähellä kulkee rautatie, jossa on vartioitu tasoristeys (=liikennevalot, puomi, äänimerkki). Ohjelmakoodin tulee sytyttää punainen valo palamaan, laskea puomi alas ja päästä äänimerkkiä junan lähestyessä. Kun juna mennyt ohi, niin ohjelmakoodin tulee nostaa puomi ja sytyttää oranssi valo palamaan.

Kolmasluokkalainen Aleksi oli se, joka ensimmäisenä keksi, että tarvitaan kosketusanturi tunnistamaan junan saapuminen. Että arvaa kuinka vanhan koodarin sydäntä lämmitti, kun näki idealampun syttyvän usean kerholaisen silmissä koodia porukalla suunnitellessa !!

Tässä koodaustehtävä:
Junanradan ylitys, jossa on liikennevalo ja puomi. Kirjoita ohjelmakoodi, joka sytyttää punaisen valo palamaan junan saapuessa, sekä laskee puomin, ja päästää äänimerkkiä.Seuraavia kysymyksiä voidaan yhdessä pohtia:

  • Mikä on liikennevalojen tehtävä tässä tapauksessa ?
  • Miten tämä liikennevalo voisi toimia?
  • Montako valoa tarvitaan?
  • MItä muuta tietoa tarvitaan?

Tehtävän ratkaisussa piirretään paperille kuva junaradan ylittävästä tiestä, junaradasta, liikennevaloista yms. tarpeellisesta. Piirretään kosketusanturit ja saapuva juna/auto kuvaan. Ja kirjoitetaan yhdessä liikennevaloille koodi käyttäen koodauksen kolmea perusrakennetta: lause, silmukka ja ehtolause.

Tässä esimerkki tehtävän mukaisesta ohjelmakoodista:
Koodissa ei voi käyttää junan aikataulua apuna. Miksi ei?
Koska lapsikin sen tietää, ettei VR:n junat kulje aikataulujen mukaan 🙂

Käynnistä = 1;
Toista kunnes Käynnistä = 0
{
Näytä oranssi valo;
Jos juna koskee anturiin 1 tai 2, niin
{
Näytä punainen valo;
Laske puomi;
Anna äänimerkkiä;
Odota kunnes juna koskee anturiin 1 tai 2;
Nosta puomi;
Lopeta äänimerkin anto;
}
}

Code.org ympäristössä kerholaiset ovat oppineet käyttämään lausetta, ehtolausetta ja silmukkaa. Ja helposti ne saatiin ujutettua tähän ohjelmaan mukaan.

Testaamaanhan ei koodia käytännössä päästy, mutta uskotaan sen toimivan!

 

Koodarin työpäivä: millainen se on?

Lapsia ehkä kiinnostaa kuulla, mitä koodarin työpäivään kuuluu. Tässä kertomus tavalllisesta koodarin työpäivästä:

Herään klo 7:20, pimeys väsyttää kamalasti tänäkin aamuna. Onneksi ollaan menossa kohti kevättä ja valoa – myös täällä Raudaskylällä. Laitan aamupalaksi voileipiä, maitoa ja mustikoita. Huolehdin lapset kouluun. Kahvikupposen kanssa siirryn toimistoon kotini yläkerrassa.

Avaan nettiyhteyden ja ensimmäisen läppärin. On tsekattava onko Nivalan asiakkaalta tullut yhteydenotto liittyen toissapäivänä tekemääni ohjelmistopäivitykseen (=ERP). Ei ole yhteydenottoa. Tarkistan myös Skype:stä onko Jyväskylän asiakas saanut kokeiltua eli testattua eilisen ohjelmamuutoksen  jälkeen nettisivut (=Verkkkokauppa). On testannut, joten siinä ensimmäinen työtehtävä:

  • Avaan nettisivujen muokkaukseen tarvittavat ohjelmat (Notepad++, XAMPP ja Filezilla). Kopioin php-tiedostot työasemalta asiakkaan palvelimelle, ja testaan html-sivujen toimivuuden inernetissä. Asia kunnossa ja ilmoitan asiakkaalle Skypessä. Asiakas on tyytyväinen.

Avaan toisen läppärin, jossa odottaa Helsingin asiakkaani yhteydenotto. Heiltä  on tullut ilmoitus kriittisestä bugista eräässä ohjelmassa (=ERP-ohjelmisto). Tässä päivän toinen tehtävä. Kriittiset bugit on korjattava mahdollisimman pian, koska ne usein estävät asiakkaan töiden tekemisen.

  • Avaan Visual Studion ja alan debugata koodia, eli etsiä virhettä…
    Teen tätä lounastaukoon asti, mutta virhettä ei löydy. Lounaan jälkeen virhe löytyy, ja kirjoitan sen korjaamiseksi kaksi riviä koodia ohjelmaan. Toimitan käännetyn koodin asiakkaan järjestelmään. Asiakas on helpottunut.

On päivällisaika. Tuntiraportin tekeminen on tärkeää päivän lopuksi, jotta osaa laskuttaa asiakkaita oikein. Päivällisen jälkeen vetäydyn vielä hetkeksi työhuoneeseeni, ja paneuden omaan tuotteeseen Kiinteistönhallinta ERP:iin. On speksattava eli kirjoitettava mitä vaatimuksia asetetaan huoltomiehen mobiiliversion koodille.  Tänään koodarin päivä päättyy klo 18. Lähdemme lasten kanssa luistelemaan ja pelaamaan lätkää lähipuistoon. Ulkoilun jälkeen saunaan ja nukkumaan. Tämä oli hyvä päivä 🙂

Koodisatukirja: kokemuksia Hello Ruby kirjasta

 

helloruby_kansi

helloruby_tehtavat

 

 

 

 

 

 

 

Kerronpa esimerkin tosielämästä.

Viime viikolla oma tyttäreni 9v tuli koulusta ja kertoi lukeneensa koulussa Koodisatukirjan kokonaan läpi. Hän oli innostunut aiheesta ja halusi, että katsomme yhdessä kirjan tehtäviä. Kyseessä oli juurikin Hello Ruby- kirja!
Etenkin kartan piirtäminen kirjan päähahmon Rubin tyyliin ja ongelmien ratkominen tehtävissä tuntui hänestä kiinnostavalta. MUTTA, huomasin tytön ohittavan kirjan tehtävissä ohjelmoinnin termien määrittelyn ja siirtyvän suoraan tehtävään.

Olin hiukan hämmentyt asiasta, olinhan kokeilin koodisatukirjaa 1-4 luokkien kanssa Rauskin koodikoulussa Raudaskylällä. Juuri kukaan oppilaista eikä oma tyttärenikään tuolloin ollut kirjasta kovin innostunut…  tyttäreni ei ole ollut innostunut mistään koodausjutuista (on kuullut niistä liikaa kotona, olenhan puhunut koodikouluasioista 2014 vuodesta lähtien). Mutta nyt tämä kirja kolahti kunnolla!!

Nyt jälkikäteen pohdittuani minun lähestymistapani kirjaan koulun luokissa oli ehkä väärä: Eli minähän luin luokalle yhteisesti kirjaa pienen pätkän, ja osallistujat tekivät sitten muutamia harjoituksia. Yritin ennen harjoituksia selittää heille ohjelmoinnin termit, jota tehtävässä tulisi vastaan. VÄÄRIN meni. Parempi olisi antaa lasten lukea kirja kokonaan tai sitten lukea se heille pienessä porukassa. Ja tehtävien teossa ohjelmoinnin käsitteet on tarkoitettu ainoastaan opettajille, niitä ei tarvitse heti avata lapsille ollenkaan!!

Kokemuksesta viisastuneena NYT uskallan suositella Hello Ruby koodisatukirjaa muillekin!! Kannattaa kokeilla kirjaa, sen tehtävien avulla aikuinenkin voi tutustua koodauksen maailmaan. Kiitos kirjasta Linda Liukas 🙂

Kirjan saa ostettua mm. Adlibriksen verkkokaupasta – löytyy nimellä Linda Liukas.

Mytrendyphone PUHELINTARVIKKEET

Koodauspläjäys: hauskoja päättelytehtäviä

Koodauspläjäys

Koodauspläjäys on pakka puuhakortteja 7-12 vuotiaille. Kortit sisältävät päättelytehtäviä, jotka päättelykyvyn kehittymisen lisäksi opettavat ohjelmoinnin alkeita. Tehtävät ovat monentasoisia.

Pakan mukana tulee yksi vesiliukoinen tussi, jolla tehtävän voi tehdä suoraan korttiin. Valmiin tehtävän voi pyyhkiä kostutetulla paperilla pois. Kortteja on pakassa 100kpl, ja kortin molemmin puolin on yksi tehtävä. Tekemistä siis riittää!

Mediakerhossa (9-12 vuotiaiden kanssa) kokeilimme kortteja. Lapset tuntuivat tykkäävän kovasti.  Samasta pakasta pystyi yhtäaikaa tekemään koko kerhon porukka (11 lasta), kortteja vain välillä vaihdeltiin. Meillä ei ollut riittävästi vesiliukoisia tusseja, niin osa teki tehtäviä paperilla ja kynällä. Onnistui osa tehtävistä niinkin.

Loistavasti toteutettu paketti mielestäni, suosittelen muillekin! Tätä voisi käyttää luokkatilanteessa esim. matematiikan lisätehtävinä 3 – 6 luokkalaisille.

Hintakaan ei päätä huimannut. Kortteja saa esim. täältä: https://verkkokauppa.oppijailo.fi/koodausplajays-puuhakortit-7-12-v/564160/dp

 

Videoitten editointia 3.-6. luokkalaisten kanssa

Tiistai-iltasin pidettävässä (Ylivieskan) mediakerhossa on 13 innokasta kerholaista (tytöt 4/pojat 9). Vuoden 2017 aloitimme kuvaamalla videoita aiheesta Suomi100. Itsenäinen Suomi aiheena tuntui olevan hanskassa kaikilla. Aiheet videoille löytyi suht helposti ja huumoriakaan ei videoilta puuttunut. Koululla on uudet iPadit ja Cromebookit sekä vanhat Windows7 läppärit. Halusin kokeilla tällä kertaa Windows7 eli editointia PC:llä.

Videoitten kuvaaminen tehtiin kerholaisten omilla älypuhelimilla, jotka olivat sattumoisin Android- järjestelmällä kaikki. Kerholaisten puhelimista videot siirrettiin puhelimen latauskaapeleilla koulun vanhoille Window7 läppäreille, joihin olin muutamaan asentanut Windows:n MovieMakerin (ilmainen versio). Videointiin käytettiin yksi kerhokerta 1:15h.

Toisella kerhokerralla editoimme MovieMakerilla kerholaisten ottamat videot. Opiskelimme YouTube-videoilta hieman äänen leikkausta videolle. Opettelimme latamaan ääniä ja musiikkia mp3-muodossa netistä, ja siinä samalla kävimme tekijänoikeuksista rikasta keskustelua. Myös kuvan lisääminen videoon, tekstin lisääminen videon päälle, alkuotsikot ja loppuotsikot olivat peruskamaa kerholaisten videoilla.

Työt oli helppo tallentaa koulun palvelimelle, joka oli mapattuna jo valmiiksi kaikille läppäreille. Lopuksi luonnollisesti sammutettiin valot ja jännityksellä katsottiin valmiit videot!

YHTEENVETO:
Osalla kerholaisista oli hiukan kokemusta iPad:ien videoinnista ja iMovie:lla editoinnista. Kysyin käyttökokemusta heiltä. IMoviella aloittaminen on heidän mukaansa hiukan helpompaa, mutta samat jutut molemmilla (MovieMaker ja iMovie) heidän mielestään saa helposti tehtyä. Eli jos koulun kalusto ei ole uusinta uutta (tabletit, padit), niin videoita pääsee kyllä tekemään näillä kokeilluilla keinoin helposti myös.
Ja uskomattoman paljon saatiin aikaan pienessä ajassa! Lupasin, etten netissä julkaise kerhon videoita. Mutta työskentelystä sain luvan ottaa kuvia 🙂
20170117_162228 20170117_162305