koodiaapinen mooc - keynote
TRANSCRIPT
Koodiaapinen MOOCOPETTAJIEN OPISKELUVÄLINEENÄ
Tiina Partanen 10.6.2016 (korjattu 17.6.2016)
Koodiaapinen MOOC - syksy 2015
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
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
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
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
6
Koodiaapinen MOOCtalkootyö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.
Tarmo Toikkanen
VuokkoKangas
TeroToivanen
TiinaPartanen
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
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)
9
7. Luokan materiaaliOppilas harjoittelee kirjoittamaan ohjelmakoodia, joka suorittaa yksinkertaisia laskutoimituksia tai piirtää geometrisia kuvioita.
Oppilas harjoittelee vertailuoperaattoreiden käyttöä väite- ja ehtolauseissa tutustuessaan totuusarvoihin.
Seudullinen OPS
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.
Seudullinen OPS
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.
Seudullinen OPS
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)
13
Matematiikan käsitteet Peruslaskutoimitukset ja laskujärjestys
Mittasuhteet
Koordinaatisto
Kierto, skaalaus, peilaus
Tasogeometriset kuviot
Kulman suuruus (monikulmiot)
Totuusarvot, väitelauseet, vertailuoperaatiot
Kulmien nimeäminen
Kolmion kulmien summa
Pythagoraan lause
Pyöristäminen
Yksikkömuunnokset
Jakojäännös (modulo)
Boolen logiikka (and, or, not)
Polynomit, kuvaajan piirtäminen
Funktiot ja muuttujat
Määrittelyjoukko, arvojoukko
Pinta-alan kaavat (ml. ympyrä)
Avaruuskappaleiden levityskuvat
Trigonometriset funktiot
Muutosprosentti
Keskiarvo, mediaani, moodi
Alkuluvut, satunnaisluvut
Aritmeettiset lukujonot
Fraktaalit
14
Ohjelmoinnin käsitteetTietotyypit (luku, totuusarvo, kuva, merkkijono)
Funktio, argumentti, paluuarvo
Evaluointi
Vakioiden määrittely (globaalit muuttujat)
Kirjasto
Funktion määrittely, funktion parametrit muuttujina, funktion testaaminen
Totuusarvot, vertaisluoperaattorit, predikaatit, ehtolauseet, valintalauseet
Boolean operaattorit (and, or, not)
Rekursio (alkeistapauksen avulla, akkumulaatorin avulla, silmukkana)
Puhtaat funktiot vs. Sivuvaikutukset
Lokaalit muuttujat
Koodilohko
Listat
Higher Order - funktiot
* Call-back funktiot
* Eventit
15
Funktion suunnitteluportaat
How to design programs – design recipe
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
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
18
Racket MOOC kevät 2016https://plus.cs.hut.fi/aapinen-racket/K2016/
19
Materiaali
20
Kurssin sisältöJakso Sisältö
1 • Työkalut (DrRacket, WeScheme)• Peruslaskutoimitukset, koodin evaluointi• Kuvien piirtäminen (2htdp/image)• Muuttujan määrittely
2 • Funktion määrittely, kutsuminen ja testaaminen• Totuusarvot, vertailuoperaattorit, predikaatit ja ehtolause
3 • Boolean operaattorit, valintalause• Hiireen ja aikaan reagoiminen (2htdp/universe)
4 • Rekursio, päättymätön silmukka, lopetusehto• Lokaalit muuttujat, ohjelmalohko• Sivuvaikutukset (display-read kirjasto)
5 • Listat ja listan syöminen rekursiivisesti• Kuvatiedostojen käyttäminen ohjelmassa
6 • Higher order –funktiot• Turtle grafiikka
7 • OPS, pedagogiset ratkaisut, hyvät ohjelmointikäytänteet
21
1. KuvakoodausPalautusseinä (Rubyric)
22
2. Loogisia funktioitaVertaisarviointi (Rubyric)
23
3. Ehdollinen animaatio(palautusseinä)
http://www.wescheme.org/view?publicId=dt7UzDWgmb
24
4. Automaattinen automaattiVertaisarviointi (Rubyric)
Esimerkki kurssilaisen palauttamasta koodista:
http://www.wescheme.org/view?publicId=GsterQxRVj
25
5. Listallinen kysymyksiäPalautusseinällä WeScheme-linkit (Rubyric)
Esimerkki kurssilaisen palauttamasta koodista:
http://www.wescheme.org/view?publicId=K83HHMonx2
http://www.wescheme.org/view?publicId=bdDRSxD3U0
26
6. Kilpikonnan kiemurteluaPalautusseinä (Rubyric)
27
7. OPS ja muita totuuksiaVertaisarviointi (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.
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.
29
Jaksopalautteet: työmääräMielipiteesi jakson työmäärästä:1: aivan liian vähän 2: vähän 3: sopivasti 4: liikaa 5: aivan liikaa
sopivastisopivasti
1 2 3 4 5 6 71
1.5
2
2.5
3
3.5
4
4.5
5
Työmäärä (harjoitukset), ka. 3.09
1 2 3 4 5 6 71
1.5
2
2.5
3
3.5
4
4.5
5
Työmäärä (materiaali), ka. 3.02
Skaalaus korjattu 17.6.2016
30
Jaksopalautteet: haastavuus 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
sopivastisopivasti
1 2 3 4 5 6 71
1.5
2
2.5
3
3.5
4
4.5
5
Haastavuus (materiaali), ka. 3.04
1 2 3 4 5 6 71
1.5
2
2.5
3
3.5
4
4.5
5
Haastavuus (harjoitukset), ka. 3.18
Skaalaus korjattu 17.6.2016
31
Käytetty aika
0-1h 1-2h 2-4h 4-6h 6-8h 8-10h yli 10h0
5
10
15
20
25
30
Jakso 6 käytetty aika
0-1h 1-2h 2-4h 4-6h 6-8h 8-10h yli 10h05
10152025303540
Jakso 3 käytetty aika
0-1h 1-2h 2-4h 4-6h 6-8h 8-10h yli 10h0
10
20
30
40
50
60
Jakson 1 käytetty aika
32
Jaksopalautteet: hyödyllisyys ja innostavuusMielipiteesi jakson hyödyllisyydestä, innostavuudesta:1: ei lainkaan 2: vähän 3: kohtuullisesti 4: paljon 5: erittäin paljon
Kohtuullisesti/
paljon Kohtuullisesti/
paljon/
1 2 3 4 5 6 71
1.5
2
2.5
3
3.5
4
4.5
5
Hyödyllisyys, ka. 3.63
1 2 3 4 5 6 71
1.5
2
2.5
3
3.5
4
4.5
5
Innostavuus, ka. 3.60
Skaalaus korjattu 17.6.2016
33
Jaksopalautteet: soveltuvuusMielipiteesi jakson soveltuvuudesta:1: ei lainkaan 2: vähän 3: kohtuullisesti 4: paljon 5: erittäin paljon
Kohtuullisesti/
paljon
Skaalaus korjattu 17.6.2016
1 2 3 4 5 6 71
1.5
2
2.5
3
3.5
4
4.5
5
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%)
ilmoittautui
aloitti
1
2
3
4
5
6
7
suoritti loppuun
0 50 100 150 200 250 300 350
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)
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”
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ä)
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)
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)