2. OPS2014
vuosiluokilla 7.- 9.
Ohjelmointia harjoitellaan osana eri oppiaineiden opintoja.
(OPS2014, s. 284)
T20 ohjata oppilasta kehittämään algoritmista ajatteluaan
sekä taitojaan soveltaa matematiikkaa ja ohjelmointia
ongelmien ratkaisemiseen (OPS2014, s. 375)
Harjoitellaan väitelauseiden totuusarvon päättelyä.
Syvennetään algoritmista ajattelua. Ohjelmoidaan ja
samalla harjoitellaan hyviä ohjelmointikäytäntöjä.
Sovelletaan itse tehtyjä tai valmiita tietokoneohjelmia osana
matematiikan opiskelua. (OPS2014, s. 375)
KOODIAAPINEN MOOC - SYKSY 2015
3. OPS2014
Matematiikka 7.-9.
Arvosanan kahdeksan (hyvä) osaaminen:
Oppilas osaa soveltaa algoritmisen ajattelun periaatteita ja
osaa ohjelmoida yksinkertaisia ohjelmia. (OPS2014, s. 379)
KOODIAAPINEN MOOC - SYKSY 2015
4. Jotta OPS:ia voi toteuttaa on
selvitettävä itselleen mitä on:
1) ohjelmointi
2) algoritmi
3) algoritminen ajattelu
4) algoritmisen ajattelun soveltaminen
5) algoritmisen ajattelun periaatteet
6) hyvät ohjelmointikäytänteet
7) yksinkertainen ohjelma
8) soveltaa matematiikkaa ja ohjelmointia ongelmien ratkaisuun
KOODIAAPINEN MOOC - SYKSY 2015
5. Koodausta kouluun projekti
2014-2016
Koodausideoita matematiikan tunneille uuden OPS:in mukaisesti
Koodaus on matematiikkaa
Koodaus ei ole pois matematiikan opiskelusta, kunhan tehtävät on
suunniteltu oikein
Koodaus on luonnollinen tapa tuoda tietokoneet osaksi matematiikan
opiskelua
Matematiikan opettajien itse kehittämä materiaali
Testattu oikeilla oppilailla
Ilmainen suomenkielinen oppimateriaali, ilmaiset työkalut, opettajan opas
5
6. Koodiaapinen MOOC
talkootyöllä syntynyt avoin verkkokurssi
Syksy 2015 (beta)
- ScratchJr esi- ja alkuopetus
- Scracth – luokat 3. – 6.
- Racket – luokat 7. – 9.
Kevät 2016
- ScratchJr esi- ja alkuopetus
- Scracth – luokat 3. – 6.
- Racket – luokat 7. – 9.
- Python – luokat 7. – 9.
6
Tarmo
Toikkanen
Vuokko
Kangas
Tero
Toivanen
Tiina
Partanen
eEemeli kilpailun – kunniamaininta 2016
IT-kouluttajat ry
7. Miksi Racket?
Käytössä USA:ssa matematiikan opetuksessa perusopetuksessa
Bootstrap – project
”Teaching algebra by programming videogames”
Hyvät ilmaiset, open source työkalut
DrRacket (Win, Linux, MacOS)
WeScheme – selaimessa pyörivä ohjelmointiympäristö
Suunniteltu opetuksen tarpeisin
Kehitetty portaittain kehittyvä ”student language” (Beginning Student -> Advanced Student)
Uskomattoman selkeät virheilmoitukset
Tulkki ja stepperi
Monipuoliset ja opetukseen soveltuvat grafiikka- ja animaatiokirjastot
Helppoa tehdä itse laajennuskirjastoja (Racket Turtle, display-read)
Valmis pedagoginen malli
How to design programs, test-driven design
Voi koodata myös pelejä
Realm of Racket
7
8. Pedagogiset tavoitteet
Opettaa systemaattista ongelmanratkaisua, ei vain ”koodaustemppuja”
Opettaa automatisointiajattelun pääsisällöt, riittävästi että niillä voidaan toteuttaa
joitain yksinkertoisia toimivia ”sovelluksia”
Lähestyä aihetta visuaalisesti, kuvien ja animaatioiden kautta
Kannustaa luovuuteen ja oman koodin ”keksimiseen”
Painottaa funktionaalista ohjelmointiparadigmaa sekä test-driven design:ia
Tukea opettajaa uuden aihepiirin haltuunottamisessa (koodarin käsikirja, oppilaan
tehtävät, opettajan materiaali, malliratkaisut, tutoriaalivideot)
8
9. 7. Luokan materiaali
Oppilas harjoittelee kirjoittamaan ohjelmakoodia, joka suorittaa
yksinkertaisia laskutoimituksia tai piirtää geometrisia kuvioita.
Oppilas harjoittelee vertailuoperaattoreiden käyttöä väite- ja
ehtolauseissa tutustuessaan totuusarvoihin.
9
10. 8. Luokan materiaali
Oppilas oppii suunnittelemaan ja ohjelmoimaan algoritmin, jolla
voidaan ratkaista jokin ongelma tai tehtävä, joka voi olla esim.
animaatio tai peli.
10
11. 9. Luokan materiaali
Oppilas oppii käyttämään funktioita ja muuttujia ohjelmointitehtävissä.
Oppilas osaa jakaa ongelman osaongelmiin, ratkaista ne ohjelmoimalla
ja yhdistää osat yhdeksi ratkaisuksi.
11
12. Koodausta kouluun numeroina
70 ohjelmointiharjoitusta malliratkaisuineen
36 tutoriaalivideota ja animaatiota (yli 25 000 näyttökertaa)
15+ Power Point – esitystä
140 Koodiaapinen MOOC Racket - linjan suorittanutta syksyllä 2015
Kevään kurssilla arvioitu määrä 100-140 suoritusta
334 GitHub päivitystä (kaikki materiaali GitHub:issa)
12
16. Pedagoginen lähestymistapa
Oppilaalle on saatava mentaalimalli siitä miten ohjelmakoodi toimii.
Miten tähän päästään?
1. Käytetään
◦ käytetään valmiita piirtofunktioita (kuvat, Turtle)
2. Muokataan
◦ muokataan puolivalmiin funktion koodia eteenpäin
3. Luodaan
◦ määritellään oma funktio funktion suunnitteluportaat menetelmän kautta
(siirrytään abstaktioon vasta, kun konkreettinen esimerkki/testi on
kirjoitettu)
◦ määritellään oma ohjelma, joka jaetaan funktioihin
16
https://users.soe.ucsc.edu/~linda/pubs/ACMInroads.pdf
17. Opettajien
täydennyskoulutus?
Veso – koulutukset (2-3h):
◦ Kuvakoodausta ja vähän Turtleja
MOOC (n. 28h):
Kurssi kestää 7 jaksoa (yksi jakso keksimäärin 2 viikkoa, 4h opiskelua)
Jokaisella koodausjaksolla keskeiset asiat opetettaan videotutoriaalin avulla
n. 30 min videoita, joiden aikana kehoitettiin koodaamaan mukana
Jokaisella koodausjaksolla oli omatoimisia harjoitustehtäviä
malliratkaisuineen (4-8 kpl)
Jokaisella koodausjaksolla piti koodata ratkaisu avoimeen koodaustehtävään,
ja palauttaa se oppimisympäristöön (= jakaa tuotos muille kurssilaisille)
Viimeisellä jaksolla keskityttiin pedagogiaan sekä oman opetuksen
suunnitteluun
17
27. 7. OPS ja muita totuuksia
Vertaisarviointi (Rubyric)
A - työssä reflektoit OPS:ia ja tämän MOOC kurssin sisältöjä yleisellä tasolla
(55%)
B - työssä suunnittelet yhden uuden ohjelmointiharjoituksen (20%)
C - työssä suunnittelet ohjelmoinnin opintokokonaisuuden oman oppiaineesi
sisältöihin liittyen (24%)
Ote yhdestä diplomityöstä:
Tärkeimpänä näen, että oppilas oppii jakamaan ongelman pienempiin osiin ja
koostamaan niistä ratkaisun, jota voi soveltaa samankaltaisiin ongelmiin.
Lisäksi, että oppilas oppii dokumentoimaan ratkaisunsa niin, että muutkin
ymmärtävät sen. Pitäisi myös pyrkiä ohjelmakoodin pitämiseen
mahdollisimman yksinkertaisena. Näitä samoja taitojahan tarvitaan myös
matemaattisten ongelmien ratkaisuissa. Sisällöistä minusta muuttujien,
funktioiden käyttö sekä ehto- ja toistolauseet ovat yläkoululaiselle sopivia.
Rekursio voi olla eriyttävänä osana. Ohjelmoinnissa on pakko eriyttää ja
antaa mahdollisuus oppilaiden yksilölliseen etenemiseen.
27
28. Poimintoja diplomitöistä...
Mulla on ollut vähän vastentahtoista tämä tekeminen. Olen kuitenkin
huomannut, että kyllä tästä selviää ja motivaatiokin paranee, kun
pääsee paremmin sisään aiheeseen. Ei tämä nyt niin vaikeaa olekaan
kunhan vaan sinnikkäästi tekee.
Mielestäni kurssitehtävät olivat mielekkäitä, erityisesti sen takia, että
itse sai päättää mitä jakson aikana koodaa. Kun vihdoin sai tehtävänsä
valmiiksi, oli joka kerta ns. voittaja fiilis, tein sen jälleen!
Parasta antia MOOC-kurssilla olikin itsensä haastaminen tehtävissä ja
oman työn tekeminen. Koodin kirjoittaminen ja koodissa olleet virheet
turhauttivat usein, mutta tunne oli mitä parhain, kun ohjelman sai
lopulta valmiiksi ja toimimaan. Tämän saman kipinän sytyttäminen
oppilaassa on erittäin tärkeää ja tavoitteellista, kun uusia oppisisältöjä
mietitään ja kun ohjelmointi otetaan mukaan osaksi opetusta uudessa
opetussuunnitelmassa.
28
29. Jaksopalautteet: työmäärä
29
Mielipiteesi jakson työmäärästä:
1: aivan liian vähän 2: vähän 3: sopivasti 4: liikaa 5: aivan liikaa
1
1.5
2
2.5
3
3.5
4
4.5
5
1 2 3 4 5 6 7
Työmäärä (harjoitukset), ka. 3.09
1
1.5
2
2.5
3
3.5
4
4.5
5
1 2 3 4 5 6 7
Työmäärä (materiaali), ka. 3.02
Skaalaus korjattu 17.6.2016
30. Jaksopalautteet: haastavuus
30
Mielipiteesi jakson haastavuudesta:
1: aivan liian vähän 2: vähän 3: sopivasti 4: liikaa 5: aivan liikaa
Mielipiteesi jakson vaikeudesta ja haastavuudesta
1
1.5
2
2.5
3
3.5
4
4.5
5
1 2 3 4 5 6 7
Haastavuus (materiaali), ka. 3.04
1
1.5
2
2.5
3
3.5
4
4.5
5
1 2 3 4 5 6 7
Haastavuus (harjoitukset), ka. 3.18
Skaalaus korjattu 17.6.2016
31. Käytetty aika
31
0
5
10
15
20
25
30
0-1h 1-2h 2-4h 4-6h 6-8h 8-10h yli 10h
Jakso 6 käytetty aika
0
5
10
15
20
25
30
35
40
0-1h 1-2h 2-4h 4-6h 6-8h 8-10h yli 10h
Jakso 3 käytetty aika
0
10
20
30
40
50
60
0-1h 1-2h 2-4h 4-6h 6-8h 8-10h yli 10h
Jakson 1 käytetty aika
32. Jaksopalautteet: hyödyllisyys ja
innostavuus
32
Mielipiteesi jakson hyödyllisyydestä, innostavuudesta:
1: ei lainkaan 2: vähän 3: kohtuullisesti 4: paljon 5: erittäin paljon
1
1.5
2
2.5
3
3.5
4
4.5
5
1 2 3 4 5 6 7
Hyödyllisyys, ka. 3.63
1
1.5
2
2.5
3
3.5
4
4.5
5
1 2 3 4 5 6 7
Innostavuus, ka. 3.60
Skaalaus korjattu 17.6.2016
33. Jaksopalautteet: soveltuvuus
33
Mielipiteesi jakson soveltuvuudesta:
1: ei lainkaan 2: vähän 3: kohtuullisesti 4: paljon 5: erittäin paljon
Skaalaus korjattu 17.6.2016
1
1.5
2
2.5
3
3.5
4
4.5
5
1 2 3 4 5 6 7
Soveltuvuus, ka. 3.56
34. Kurssin osallistujamäärä
Syksyllä 2015, kurssin suoritti 140 hlö (aloitti 369, suoritusprosentti 38%)
Keväällä 2016, kurssin suoritti 100 hlö (aloitti 171, suoritusprosentti 58%)
34
0 50 100 150 200 250 300 350
ilmoittautui
aloitti
1
2
3
4
5
6
7
suoritti loppuun
Racket kurssin osallistujat
35. Syksy vs. kevät
Alusta vaihtui Eliademystä Aalto yliopiston omaan viritelmään:
A+/Rubyric/Piazza
Otettiin mukaan vertaisarviointi. Tämä mahdollisti ”hyvien
ohjelmointikäytänteiden” opettamisen (code review)
Lisättiin uutena asiana rekursio ja listat (yksi jakso lisää)
Aikataulu oli löysempi, syksyllä yritimme vielä seurata kevyempiä
Scratch/ScratchJr linjoja
Syksyllä asiat opetettiin ”yksi asia syvällisesti”, nyt käsiteltiin useampaa
asiaa samassa jaksossa, asiaa syvennettiin useamman jakson aikana (ei
kaikkea kerralla)
Keväällä paljon vähemmän kysymyksiä keskustelupalstalla (Eliademy vs.
Piazza)
35
36. Mitä opin MOOC:sta
1. Opettajat haluavat oppia ohjelmoimaan
2. Opettajat haluavat ymmärtää KAIKEN
3. Opettajat haluavat soveltaa oppimaansa
4. Opettajille ei kelpaa pelkkä ”kevyt puuhastelu”, sisällön on oltava niin
kattava, että sillä voi koodailla oikeasti jotain hyödyllistä
5. Kun opettajan saa ymmärtämään miten ohjelmoimalla voi helpottaa
omaa elämäänsä, opettajan saa motivoituneeksi opettamaan
ohjelmointia myös oppilailleen
6. Asioita pitää tulla sopivasti per viikko, että niillä voi koodata jotan
järkevää, mutta liika on liikaa (-> pidennettävä kurssia)
7. Opettajan pitää kokea ”oppilaana olemisen tuska” mutta myös
”oivaltamisen riemu”
36
37. Ajatuksia...
Onko oikein, että opettajat opetetaan ohjelmoimaan talkoovoimin?
Kuka vastaa opetuksen tasosta MOOC kurssilla, entäpä sitten
kouluissa?
MOOC – kurssia ei voi tehdä ”kertalaakista” oikein, jatkuva palautteen
kerääminen on tärkeää, iteroinnilla maaliin
Suurin työ on tehtävien ideoinnissa, malliratkaisujen tekemisessä
Videot aluksi työläitä (suunnittelu, kuvaaminen, editointi) mutta mutta
niiden tekeminen muuttuu nopeasti rutiiniksi (yhden jakson videot, 30
min, sai valmiiksi 2 päivässä)
37
38. Ajatuksia...
MOOC:in voi pistää pystyyn ”kuka tahansa”
Ei vaadi ”automatisoitua tehtävien tarkistamista” (kurssilaiset arvioivat
toistensa työt tai esittelevät ne palautusseinillä)
Ei vaadi assistentteja, kurssilaiset neuvovat toisiaan
Tarvittavat välineet:
Läppäri + ohjelmointiympäristö (mielellään sekä asennettava, että nettiselaimessa toimiva)
Camtasia – ohjelma opetusvideoiden tekemiseen
Hyvä mikrofoni ja äänikortti
Videokamera ”palaute/motivointi”-videoiden tekoon
Youtube – tili (videoiden jakaminen)
PowerPoint ja Slideshare – tili (PowerPointien jakaminen)
Wordpress – blogi (kurssimateriaalin kokoaminen A+:aan)
Github (tehtävien ja malliratkaisujen jakamiseen)
38
39. Tiivistelmä
Koodaus voi pelastaa matematiikan
Luovuus on otettava alusta alkaen mukaan (motivaatio)
Ei opeteta vain koodaamista (temppuja) vaan systemaattista
ongelmanratkaisua
Opetetaan automatisointiajattelua, esim. kirjoita laskukaava kerran
funktioksi, kutsutaan monta kertaa
Materiaalin on oltava kohderyhmälle kehitettyä, laadukasta ja
innostavaa
Täydennyskoulutus MOOC:in voi tehdä pienilläkin resursseilla
Opettajaksi opiskelevat pitäisi kouluttaa jo nyt (työn ohessa se on liian
raskasta)
39