39
Koodiaapinen MOOC OPETTAJIEN OPISKELUVÄLINEENÄ Tiina Partanen 10.6.2016 (korjattu 17.6.2016)

Koodiaapinen MOOC - keynote

Embed Size (px)

Citation preview

Page 1: Koodiaapinen MOOC - keynote

Koodiaapinen MOOCOPETTAJIEN OPISKELUVÄLINEENÄ

Tiina Partanen 10.6.2016 (korjattu 17.6.2016)

Page 2: Koodiaapinen MOOC - keynote

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)

Page 3: Koodiaapinen MOOC - keynote

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)

Page 4: Koodiaapinen MOOC - keynote

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

Page 5: Koodiaapinen MOOC - keynote

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

Page 6: Koodiaapinen MOOC - keynote

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

Page 7: Koodiaapinen MOOC - keynote

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

Page 8: Koodiaapinen MOOC - keynote

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)

Page 9: Koodiaapinen MOOC - keynote

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

Page 10: Koodiaapinen MOOC - keynote

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

Page 11: Koodiaapinen MOOC - keynote

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

Page 12: Koodiaapinen MOOC - keynote

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)

Page 13: Koodiaapinen MOOC - keynote

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

Page 14: Koodiaapinen MOOC - keynote

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

Page 15: Koodiaapinen MOOC - keynote

15

Funktion suunnitteluportaat

How to design programs – design recipe

Page 16: Koodiaapinen MOOC - keynote

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

Page 17: Koodiaapinen MOOC - keynote

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

Page 18: Koodiaapinen MOOC - keynote

18

Racket MOOC kevät 2016https://plus.cs.hut.fi/aapinen-racket/K2016/

Page 19: Koodiaapinen MOOC - keynote

19

Materiaali

Page 20: Koodiaapinen MOOC - keynote

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

Page 21: Koodiaapinen MOOC - keynote

21

1. KuvakoodausPalautusseinä (Rubyric)

Page 22: Koodiaapinen MOOC - keynote

22

2. Loogisia funktioitaVertaisarviointi (Rubyric)

Page 23: Koodiaapinen MOOC - keynote

23

3. Ehdollinen animaatio(palautusseinä)

http://www.wescheme.org/view?publicId=dt7UzDWgmb

Page 24: Koodiaapinen MOOC - keynote

24

4. Automaattinen automaattiVertaisarviointi (Rubyric)

Esimerkki kurssilaisen palauttamasta koodista:

http://www.wescheme.org/view?publicId=GsterQxRVj

Page 25: Koodiaapinen MOOC - keynote

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

Page 26: Koodiaapinen MOOC - keynote

26

6. Kilpikonnan kiemurteluaPalautusseinä (Rubyric)

Page 27: Koodiaapinen MOOC - keynote

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.

Page 28: Koodiaapinen MOOC - keynote

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.

Page 29: Koodiaapinen MOOC - keynote

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

Page 30: Koodiaapinen MOOC - keynote

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

Page 31: Koodiaapinen MOOC - keynote

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

Page 32: Koodiaapinen MOOC - keynote

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

Page 33: Koodiaapinen MOOC - keynote

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

Page 34: Koodiaapinen MOOC - keynote

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

Page 35: Koodiaapinen MOOC - keynote

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)

Page 36: Koodiaapinen MOOC - keynote

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”

Page 37: Koodiaapinen MOOC - keynote

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ä)

Page 38: Koodiaapinen MOOC - keynote

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)

Page 39: Koodiaapinen MOOC - keynote

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)