maanantai 31. elokuuta 2015

Racket - iskuryhmä aloitti syksyn suunnittelulla

Racket - iskuryhmä kokoontui tänään Tampereen yliopistolla Koodausta kouluun - materiaalin suunnittelun ja testauksen tiimoilta.

Tutustuimme aluksi materiaalin tämän hetken tilanteeseen osoitteessa: http://racket.koodiaapinen.fi. Valmiina tällä hetkellä on vasta käsikirja, jossa on osiot: Racket BSL, Kuvat - 2htdp/image, Racket Turtle sekä sanasto. Totesimme, että sanasto on tärkeä, jotta opettajat ja oppilaat käyttäisivät oikeita termejä puhuessaan ohjelmointiasioista. Animaatiot ja pelit osio tulee käyttöön syysloman jälkeen.

Seuraavaksi sisältöä lisätään Oppilaan tehtävien alle, ja sovimme että materiaalin alku toteutetaan niin, että sama materiaali soveltuu aloituspaketiksi kaikille luokkatasoille (myös opettajille). Sen lähestymistapa on käytännönläheinen eli tehdään ensin jotain ja vasta sitten puhutaan teoriasta. Opettajan diat koettiin tarpeelliseksi ja ne liitetään jollakin tapaa myös oppilaan materiaalin yhteyteen. Funktiosta eteenpäin tehtäviä sovelletaan eri matematiikan oppialueisiin. Varsinaista jakoa 7. luokan, 8. luokan ja 9. luokan tehtäviin ei haluttu mutta niihin toteutetaan värikoodaus niin, että se ohjaa aloittamaan helpoimmista (vihreät, siniset, punaiset ja mustat tehtävät).

Opettajan materiaali kootaan Eliademyyn Koodausta kouluun - kurssin alle. Tänne tallennetaan mm. oppilaan tehtävien malliratkaisut.  

Racket - iskuryhmässä ovat mukana seuraavat koulut ja opettajat:
  • Takahuhdin koulu (Kirsi Ranta, Eija Kuusipalo)
  • Hatanpään koulu (Janne Koponen)
  • Lielahden koulu (Pauliina Kähönen, Juha Niemi, Tiina Partanen)
  • Ylöjärven Yhtenäiskoulu (Tuula Havonen, Eeva Uitti)
  • Linnainmaan koulu  (Eerikki Rönkkö)
  • Kämmenniemen koulu (Eero Takkinen)
  • Tesoman koulu (Jukka Vilén, Juuso Jehkinen)
  • Kaukajärven koulu (Nina Pukkila, Kaisa Poikela)
  • Moision koulu (Lena Laitamäki) 
Syyskuussa Racket - koodauksen aloittavat Hatanpää, Takahuhti, Lielahti, Kaukajärvi sekä Ylöjärven yhtenäiskoulu. Syysloman jälkeen aloittavat Linnainmaa, Kämmenniemi, Moisio sekä Tesoma. Mukana on sekä valinnaisen ATK:n ryhmiä kuin matematiikan ryhmiä jokaiselta luokka-asteelta. Matematiikan ryhmissä on mukana ns. tavallisia ryhmiä sekä painotusryhmiä.

Matematiikan aihepiirejä ensimmäisiin oppilaan tehtäville löytyi seuraavasti:
  • vihreät: laskujärjestys, jaollisuus, prosenttiosa, murtoluvut, tasogeometria
  • siniset: neliö-neliöjuuri, sanalliset tehtävät funktiolla, prosenttilaskenta  
  • punaiset: avaruusgeometria (automaatti, joka laskee tilavuuksia ja pinta-aloja), funktion kuvaaja, todennäköisyys
Racket - iskuryhmä kokoontuu syys- ja lokakuussa tehtävien suunnittelun ja harjoittelun merkeissä Lielahden koululla ja töiden hedelmiä voi seurata Koodausta kouluun materiaan sivuilta.

Siitä se lähtee!!

Tiina

    keskiviikko 3. kesäkuuta 2015

    Pohdintaa OPS:in sisällöiksi ohjelmoinnin osalta luokilla 7-9

    Valtakunnallinen opetussuunnitelma ei ota kantaa siihen, mitä ja miten ohjelmointia pitäisi opettaa. Tässä on oma yritykseni avata ohjelmoinnin sisältöjä matematiikan OPS:in sisältöihin liittyen.

    Ohjelmoinnin perusteet voidaan käydä läpi monella eri ohjelmointikielellä tai ympäristöllä. Taulukkoon on avattu matematiikan OPS:ssa mainittuja aihepiirejä ohjelmoinnin näkökulmasta. Ohjelmoinnin opetuksessa yläkoulussa pääpaino on tekemisessä, uusiin käsitteisiin tutustutaan ohjelmoimalla niiden avulla jotakin. Ohjelmointiympäristöinä käytetään ohjelmoinnin opetukseen suunniteltuja graafisia ohjelmointityökaluja tai lausekielisiä ympäristöjä, joihin on tuotu opetukseen tarkoitettuja ohjelmointia helpottavia kirjastoja. Ohjelmoinnin opetuksen tarkoitus on tutustua laskennallisen ajattelun maailmaan yhden tai useamman ohjelmointiympäristön avulla. 


    7. luokan ohjelmointi
    ohjelmoinnin alkeet
    ·         lauseke, lausekkeiden yhdistäminen
    ·         lausekkeiden evaluointi (esim. stepperillä tai käsin)
    ·         tietotyypit (esim. numerot, merkkijonot, kuvat, boolean arvot)
    ·         aritmeettiset operaattorit (+, -, *, / )
    ·         loogisten virheiden ja syntaksivirheiden etsiminen ja korjaaminen
    ·         ohjeiden antaminen järjestyksessä

    Oppilas osaa kirjoittaa ohjelmakoodia, joka suorittaa järjestyksessä yksinkertaisia toimintoja, kuten laskee aritmeettisia lausekkeita tai  piirtää yksinkertaisia geometrisia kuvioita.
    väitelauseiden totuusarvon päättely

    looginen perustelu

    looginen päätteleminen

    muuttujan käsite


    ·         boolean arvot (true/false)
    ·         vertailuoperaattorit numeroille (<, <=, >, >=, =)
    ·         vertailuoperaattoreita muille kuin numeroille (esim. merkkijonot)
    ·         boolean operaattorit (and, or, not)
    ·         muuttujan käyttäminen

    Oppilas osaa kirjoittaa muuttujia sisältäviä ehtolauseita, joissa käytetään vertailuoperaattoreita numeroille tai merkkijonoille sekä boolean operaattoreita (and, or ,not).
    sääntöjen ja riippuvuuksien etsiminen

    sääntöjen ja riippuvuuksien esittäminen
    ·         haarautuva koodi ehtolauseen (if-then-else rakenne) tai valintalauseen avulla (case/cond)

    Oppilas osaa ohjelmoida haarautuvaa koodia.


    8. luokan ohjelmointi
    muuttujan käsite

    funktion käsite

    mallintaminen




    ·         funktion käsite, funktion parametri muuttujana, funktion paluuarvo
    ·         funktion määrittely- ja arvojoukko
    ·         funktion arvoon vaikuttavien parametrien (muuttujien) identifiointi

    Oppilas osaa suunnitella ja ohjelmoida funktioita, jotka ottavat  sisäänsä yhden tai useamman parametrin (muuttujan) ja palauttavat ulos yhden arvon (funktion arvon).  
    lausekkeen arvon laskeminen




    ·         funktion toiminnan testaaminen
    ·         abstraktio (muuttuja) – konkretia (testitapaus)

    Oppilas osaa testata kirjoittamansa funktion toiminnan (validoida, että funktio toimii kuten sen pitääkin).
    sääntöjen ja riippuvuuksien etsiminen

    sääntöjen ja riippuvuuksien esittäminen

    mallintaminen


    ·         tilan käsite
    ·         tilan muuttuminen ulkoisen tapahtuman johdosta
    ·         systeemin mallintaminen identifioimalla tilaan vaikuttavat parametrit

    Oppilas osaa suunnitella ja ohjelmoida yksinkertaisen tilakoneen, jonka tila muuttuu jonkin ulkoisen tapahtuman johdosta (esim. näppäimen painallus, sensorin arvon muuttuminen tai timerin laukeaminen).
    looginen perustelu

    looginen päätteleminen




    ·         ratkaisualgoritmin suunnittelu yhden tai useamman  muuttujan systeemille

    Oppilas suunnittelee ja ohjelmoi algoritmin, jolla voidaan ratkaista jokin ongelma (esim. ohjelmoi yksinkertaisen animaation, pelin tai sensoreilla varustetun robotin toiminnon).

    9. luokan ohjelmointi
    muuttujan käsite




    ·         laajennetaan muuttujan käsitettä muuttujiin, joita voi olla ennalta määrittelemätön määrä (esim. lista, taulukko)

    Oppilas osaa käyttää muuttujaa, johon voidaan tallentaa ennalta määrittelemätön määrä arvoja.
    lausekkeen arvon laskeminen




    ·         lausekkeen arvon laskeminen, kun muuttujan arvoja voi olla ennalta määrittelemätön määrä

    Oppilas osaa käyttää silmukkarakennetta ennalta  määrittelemättömän suuruisen datajoukon käsittelemiseen (while, for, rekursio, map tms.).
    sääntöjen ja riippuvuuksien etsiminen

    sääntöjen ja riippuvuuksien esittäminen


    ·         ongelman ja sen ratkaisun jakaminen osiin
    ·         toistuvien rakenteiden tunnistaminen ja erottaminen uudelleen käyttöä ajatellen

    Oppilas osaa jakaa ongelman osaongelmiin, ratkaista osaongelmat ohjelmoimalla ja yhdistää ohjelmalliset osat yhdeksi ratkaisuksi. 
     

    tiistai 19. toukokuuta 2015

    Opettajien Racket - iskuryhmä aloitti Tampereella!

    Koodausta kouluun - projekti lähtee rytinällä liikkeelle syksyllä 2015, kun Racket - ohjelmointia ryhdytään jalkauttamaan yhdeksässä koulussa Tampereella ja Ylöjärvellä. Huhtikuussa perustettu yläkoulun matikisteista koostuva "Racket - iskuryhmä" kokoontui ensimmäisen kerran Tampereen Yliopistolla 21.4. Ryhmään kuuluu tällä hetkellä 12 yläkoulun opettajaa.

    Ryhmän vetäjänä ja Racket - ohjelmointimateriaalin tuottajana toimii lehtori Tiina Partanen Lielahden koulusta. Hän jää osittaiselle virkavapaalle syksyllä Teknologiateollisuuden 100v - säätiön apurahan turvin. Syksyllä kehiteltävää materiaalia käytetään yläkoulun matematiikan (fysiikan ja tietotekniikan) tunneilla ja iskuryhmä toimii sen testaajana sekä ideoijana.

    Iskuryhmän työ lähti liikkeelle Racket - ohjelmointikoulutuksella Lielahden koululla 18.5. Syksyllä on luvassa lisää ohjelmointikoulutusta yläkoulun matikisteille yhteistyössä Osaava:n kanssa.

    Tässä vielä diat, jotka esittelin Racket - iskuryhmän ensimmäisessä tapaamisessa. Niistä käy ilmi millaista materiaalia on suunnitteilla: Racket - iskuryhmä 21.4.2015.





    perjantai 17. huhtikuuta 2015

    Koodausta Kouluun ITK-2015:ssä

    Kiitos kaikille jotka kävivät tutustumassa Laskennalliseen ajatteluun ITK-torilla. Tässä vielä jakoon KooMa - diat, jotka pyörivät Racket demojeni taustalla.




    keskiviikko 18. helmikuuta 2015

    Koodausta kouluun - projektin ensimmäisen Workshopin antia

    Koodausta kouluun - projekti lähti käyntiin 23.1.2015 ensimmäisen Workshopin myötä. Ohjelmoinnin opettamisen problematiikkaa oli Tampereen Yliopistolle kokoontunut pohtimaan yhdeksän opettamisen ja/tai ohjelmoinnin osaajaa. Päivän tavoitteena oli saada selkeämpi kuva siitä, mitä ohjelmoinnin opetuksen pitäisi pitää sisällään ja miten sitä pitäisi yläkouluikäisille opettaa.

    Ensimmäisenä pohdimme kysymystä: "Miksi ohjelmointia pitäisi ylipäätään opettaa peruskoulussa?". Ryhmän ajatukset jakautuivat kolmen pääkohdan alle:

    1. Laskennallisen ajattelun opettaminen
    • Käsitys siitä mitä tietokoneella voi tehdä, automatisointi (R-koodia, Excel-makroja)
    • Ongelman jakaminen osiin on tärkeä yleistaito
    • Mallintaminen (tunnistetaan vaikuttavat asiat, niiden suhteet, todellisuuden abstrahointi)
    • Syy-seuraus-suhteet  
    • Voidaan tehdä todenmukaisia simulaatioita (poistaa rajoituksen ”liian vaikea laskea”) 
    2. Opiskelumotivaation tai oppimisen laadun parantaminen
    • Väline on motivoiva oppilaille 
    • Antaa mahdollisuuden ottaa aiheita nuorten maailmasta
    • Onnistumisen iloa, hauskempaa kuin perusmatikka
    • Oppilas itse suunnittelee, työskentelee, ei mekaanista
    • Asian oppii paremmin, kun yrittää ohjelmoida sen (ongelma täytyy ymmärtää)
    • Havainnollistaa ja konkretisoida koodilla matemaattisia asioita (ei jää uskon varaan)
    • Uusi tapa ilmaista itseään (vrt. käsityö, kuvis)
    3. Työelämätaidot
    • Työelämään kouluttaminen
    • Osaisi olla asiakkaana ohjelmistoprojektissa
    • Opitaan ymmärtämään ympäröivää maailmaa
    Tämän jälkeen ryhdyimme miettimään tarkemmin millaisissa tilanteissa ohjelmointia oppilaille jatkossa opetetaan. Koodausta kouluun - projektissa on tarkoitus tehdä opetusmateriaalia kolmeen erilaiseen opetustilanteeseen: ohjelmointi matematiikan tunnilla, ohjelmointi oppiaineiden yhteisissä projekteissa sekä valinnaisaine- ja kerhotilanteissa. Jakauduimme ryhmiin ja mietimme Edukata-menetelmällä millaisia haasteita (punaiset) ja mahdollisuuksia (vihreät) em. opetustilanteisiin liittyy sekä mitkä rakenteet/resurssit tukevat ohjelmoinnin opettamista (keltaiset). Myös joitakin alustavia ideoita oppimisaktiviteeteiksi löytyi (siniset).

    Skenaario I: Ohjelmointi matematiikan tunnilla

    Ensimmäinen skenaario oli ohjelmoinnin opettaminen matematiikan opetuksen sisällä (1-3h jaksoissa), kun käsitellään ko. matematiikan aihepiiriä (läsnä kaikki oppilaat) tai eriyttävänä omatoimisena toimintana nopeasti edistyville oppilaille. 

    Ohjelmointi matematiikan tunnilla
    Tässä skenaariossa nähtiin eniten mahdollisuuksia. Suurin osa uhkista voidaan nähdä myös mahdollisuuksina, mm. vaatimus englannin osaamisesta tai ryhmän heterogeenisuudesta voidaan kääntää mahdollisuuksiksi, samoin ohjelmointi ei välttämättä tuo vain "vaikeaa opeteltavaa lisää" vaan sen kautta voidaan ymmärtää jotain muuta asiaa helpommin. Ohjelmointi tuo myös kaivattua vaihtelua matematiikan opiskeluun ja voi antaa onnistumisen iloa sellaisillekin, jotka kokevat olevansa huonoja "perusmatematiikassa". 

    Uudessa OPS:ssa ohjelmointi  mainitaan erityisesti matematiikan tavoitteena (T20):
    ohjata oppilasta kehittämään algoritmista ajatteluaan sekä taitojaan soveltaa matematiikkaa ja ohjelmointia ongelmien ratkaisemiseen.

    Skenaario II: Ohjelmointi matematiikan ja toisen oppiaineen yhteisessä projektissa

    Toisessa skenaariossa ohjelmoinnin sisällöt yhdistetään matematiikan ja jonkin toisen (tai toisten) oppiaineiden yhteiseen opintojaksoon (tai projektiin). Mahdollisia yhdistelmiä voisivat olla esim. matematiikka-kuvataide, matematiikka-äidinkieli, matematiikka-musiikki, matematiikka-englanti jne.

    Ohjelmointi matematiikan ja jonkin toisen aineen yhteisessä projektissa
    Tässä skenaariossa nähtiin eniten uhkia, jotka syntyvät nykyisestä oppiainejakoisesta lukujärjestyksesta sekä aineenopettajien harjaantumattomuudesta tehdä yhteistyötä yli oppiainerajojen. Nämä eivät sinänsä ole vain ohjelmointiin liittyviä haasteita, vaan näiden asioiden kanssa joudutaan painimaan myös muiden vastaavien opintojaksojen suunnittelussa. Sinänsä ohjelmointi voidaan integroida moneen asiaan, joten mahdollisuuksia tällaiseen yhteistyöhön löytyy.

    Ohjelmointi voidaan sijoittaa uuden OPS:in kuvailemaan monialaiseen oppimiskokonaisuuteen. Tällainen voidaan toteuttaa mm. teemapäivän tai tapahtuman muodossa, "suunnittelemalla monialaisia, pidempikestoisia oppimiskokonaisuuksia, joiden toteuttamiseen osallistuu useampia oppiaineita" tai "muodostamalla oppiaineista integroituja kokonaisuuksia".

    Skenaario III: Ohjelmointi, kun matematiikka ei ole pääroolissa

    Viimeisessä skenaariossa ohjelmointia opetetaan valinnaisaineen kurssilla tai koulun jälkeen järjestettävässä kerhossa. Valinnaisainekurssi voi sijoittua esim. 8. tai 9. luokalle (36h). Kerhossa voi puolestaan olla oppilaita eri luokka-asteilta esim. 5.-9.luokat.

    Ohjelmointi valinnaisaineen tai kerhon muodossa
    Tässä skenaariossa nähtiin yllättävän vähän mahdollisuuksia siihen nähden, että valinnaisaineen ja kerhon oppilaat ovat valikoituneita (harrastuneisuus) ja motivoituneita (ainakin aluksi). Tällaisen toiminnan kipupisteiksi nähtiin se, että kun ohjelmoinnissa mennään pintaa syvemmälle, oppilaille myös valkenee kuinka työlästä/hidasta esim. oman pelin koodaaminen voi olla. Toisaalta tähän toimintaan löytyy jo paljon valmista (tosin usein englannin kielistä) materiaalia. Aiheesta innostuneille oppilaille voi toisaalta antaa ohjelmoitavaksi lähes "mitä tahansa", koska opetussuunnitelma tai osaaminen eivät rajoita tekemistä.

    Uuden OPS:in puitteissa voidaan edelleenkin järjestää valinnaisia ohjelmointikursseja, mutta koska valinnaisuus yläkoulussa pienenee ja oppilaat pääsevät ohjelmoimaan muillakin oppitunneilla, ryhmien syntyminen voi  entisestäänkin vaikeutua.

    Lounaan jälkeen mietimme tarkemmin mitä ja miten ohjelmointia pitäisi peruskoululaisille opettaa. Tätä työskentelyä varten jakauduimme kahteen ryhmään. Työskentelyä varten ryhmät saivat käyttöönsä esimateriaalia, josta he saivat ottaa mukaan asioita tai olla ottamatta.

    1. Mitä ohjelmoinnin opetuksen pitäisi pitää sisällään?

    Sisältöryhmä rajasi ohjelmoinnin sisältöjä tiedon mallintamiseen sekä tiedon automaattiseen käsittelyyn algoritmien ja logiikan avulla. Ohjelmistotuotannon asioiden kuten uudelleen-käytettävyyden tai modulaarisuuden (ohjelmistoarkkitehtuuritasolla) ei nähty kuuluvan tämän tasoiseen opetukseen, koska niiden hyötyä olisi vaikea nähdä eivätkä ne suoranaisesti liity matematiikkaan. Saman tuomion saivat myös internetin toiminnan ja laitetekniikan opetus vaikka niiden nähtiinkin kuuluvan yleissivistykseen. Mihin oppiaineeseen nämä sitten kuuluvat, on mielenkiintoinen kysymys.

    Linkki dioihin (PDF).





    Sisältöryhmän pohdittavana oli myöskin se, mitä matematiikan osa-alueita ohjelmoinnin avulla pitäisi opettaa. Tähän asiaan ryhmä ei ottanut muuta kantaa kuin sen että boolen logiikka jo sinänsä on matematiikkaa ja että geometrian asioita kuten pythagoraan lause ja trigonometria, voidaan käyttää hyödyksi mm. peliohjelmoinnissa. Matematiikan osuuden ohjelmoinnissa nähtiin siis olevan pikemminkin metatasoista ongelman ratkaisua, algoritmista, loogista ja eksakstia ajattelua, kuin varsinaista tiettyjen matematiikan sisältöjen opettelua ohjelmoinnin avulla.

    2. Miten ohjelmointia pitäisi opettaa
     
    Tämä ryhmä keskusteli paljon, koska aihe oli ilmeisen vaikea. Tämän aiheen työstämistä jatkamme seuraavassa Workshopissa mutta tässä ryhmän ajatuksia:


    Suuret kiitokset kaikille Workshop:iin osallistuneille. Toivottavasti keskustelu tästä aiheesta jatkuu, myös laajemmalla porukalla, ja asiat kirkastuvat ja konkretisoituvat tässä kevään ja kesän myötä.  Keskustelu ja ajatusprosessi  on kuitenkin saatu alkuun ja tästä on hyvä jatkaa. 

    -------------------------------------------------------------------------------------------------------------------------
    Workshopissa esitetty materiaali: