Tämän syksyn viimeisessä workshopissa kehittelimme tutustuimme Koodiaapinen MOOC:in Racket osion toteutukseen ja ideoimme tehtäviä todennäköisyyslaskennan, polynomilaskennan sekä suoraan- ja kääntäen verrannollisuuden opiskelemiseen.
1) Suoraan verrallisuuden havainnollistamiseen ideoitiin mopon kulutuksen koodaamista funktioksi, pisteiden laskemista ja plottaamista sekä suoran piirtämistä samaan kuvaan. Tämä vaatii lisäyksiä plot2D-kirjastoon.
2) Todennäköisyyslaskennasta voisi tehdä nopanheittosimulaattorin, eli arpoa 10, 100 ja 1000 nopan silmälukua ja piirtää niistä palkkidiagrammit ja verrata lähenevätkö ne laskettua todennäköisyyttä. Keskustelimme paljon siitä, tuottaako tietokone aidosti satunnaisia lukuja ja päätimme, että tämä täytyy vain testata.
3) Todennäköisyyttä voisi havainnoida myös radioaktiivisten atomien puoliintumisajan simulaation tai "tuplaa-panos"-pelisimulaation avulla (pienillä korteillä 1-6 tai isoilla korteilla 8-13 voittaa, 7 häviää aina).
4) Tutustuimme myös siihen miten Turtlelle saadaan generoitua map:in avulla pitkiä komentolistoja, ja teimmekin "random-Turtlen", joka kulki satunnaisen matkan satunnaiseen suuntaan. Tämä oli hauska eikä ollenkaan vaikea toteuttaa!
5) Lopuksi vielä pohdimme miten polynomilaskentaan voisi tuoda ohjelmointia, ja totesimme että lähdemme liikkeelle lausekkeen arvon laskemisesta ja teemme sitten jonkun oikeaan mittausdataan liittyvän polynomisovitteen kuvaajat.
Uusia ideoita siis syntyy jatkuvasti kun tämä joukko kokoontuu, nyt pitäisi vain työstää nämä tehtävien muotoon...
Tähän asti materiaalista on testattu peruslaskut ja peruskuvat, sekä geometriaan liittyviä funktioita ja ehtolauseista piilokuvat. Ensiviikolla testaukseen siirtyvät animaatiot sekä Turtle. Funktioiden parempi testaus siirrettiin keväälle, koska se tulee 9. matematiikassa esille vasta keväällä.
Random-Turtle kulkua (500 kierrosta):
Koodi:
(require teachpacks/racket-turtle)
(define (kierros i)
(list (turn-left (random 360))
(forward (random 20))))
(define RANDOM-TURTLE (map kierros (range 0 500 1)))
(draw RANDOM-TURTLE)
tiistai 24. marraskuuta 2015
maanantai 23. marraskuuta 2015
Racket - iskuryhmän toinen workshop
Racket - iskuryhmän toisessa workshopissa tutustuimme animaatioihin, joissa muuttujana on aika. Teimme ensin ufon laskeutumisanimaation, sitten laitoimme sen "rullaamaan" käyttämällä moduloa. Sitten käänsimme ufon kulkusuunnan nousuun, ja lopuksi teimme samaan animaatioon molemmat. Tässä harjoituksessa käytettiin ehtolauseita (if), valintalauseita (cond) sekä vertailuoperaattoreita (<, >, <=, >=, =). Kun systeemi oli selvillä iskuryhmän opettajat kokeilivat tehdä omia animaatioita, suurenevia ja pieneneviä palloja, väriä vaihtavia ja pyöriviä propelleja ja syntyi myös yksi pomppiva pallo joka "jousti" pompatessaan (litistyi ellipsiksi).
Animaation tekeminen havaittiin yllättävän matemaattiseksi harjoitukseksi, siinä joutui tekemään kuvan piirtofunktion (joutui miettimään muuttujia ja vakioita), miettimään jakojäännöstä (modulo) ja suunnittelemaan ehdollista suorittamista.
Käytimme tässä harjoituksessa big-bangiä, vaikka animate - funktio olisi toiminut aivan vastaavalla tavalla.
Tässä ufo-esimerkkianimaatio WeScheme:llä:
http://www.wescheme.org/view?publicId=f6lWg5Hmdg
Animaation tekeminen havaittiin yllättävän matemaattiseksi harjoitukseksi, siinä joutui tekemään kuvan piirtofunktion (joutui miettimään muuttujia ja vakioita), miettimään jakojäännöstä (modulo) ja suunnittelemaan ehdollista suorittamista.
Käytimme tässä harjoituksessa big-bangiä, vaikka animate - funktio olisi toiminut aivan vastaavalla tavalla.
Tässä ufo-esimerkkianimaatio WeScheme:llä:
http://www.wescheme.org/view?publicId=f6lWg5Hmdg
![]() |
| Yksinkertainenkin ufon lennättäminen vaatii matematiikkaa! |
maanantai 21. syyskuuta 2015
Racket - iskuryhmän syksyn ensimmäinen Workshop
Eilen illalla Lielahden koulun ATK-luokka täyttyi Racket - iskuryhmän koodariopettajista. Workshop:ien idea on opiskella Racket - ohjelmointia yhdessä, jakaa kokemuksia ja vinkkejä sekä kehitellä uusia tehtäviä. Uusia opettajia oli saatu mukaan: Eeva Uitti (Ylöjärven yhtenäiskoulu), Kaisa Poikela (Kaukajärven koulu) sekä Sara Viertola (Pirkkalan yläaste).
Tällä kerralla esittelin ryhmälle DrRacket:in "pakettipalvelun", eli Package Managerin. Sen avulla asensimme koulun koneisiin koodaamiani apukirjastoja ml. Racket Turtlen sekä Display-read:in. Display-read kirjaston avulla voi kysellä helposti käyttäjältä tietoja, ja näiden avulla harjoitella vaikka if - rakennetta. Tämä kirjasto on vasta kehitteillä, joten siitä ei ole olemassa vielä valmiista käsikirja sivustoa. Racket Turtlen avulla taasen voi piirtää Turtle grafiikkaa, ja suurin osa iskuryhmää tutustuikin Turtlen ohjailemiseen Koodausta kouluun käsikirjan avulla.
Tässä joitakin illan aikana kehiteltyjä ja testattuja tehtäväideoita:
1) Ohjelma, joka kysyy käyttäjältä särmiön sivujen pituudet käyttäen display-read - funktiota, ja sen jälkeen kutsuu särmiön kokonaispinta-alan laskemiseen ohjelmoitua funktiota. Harjoitukseen kuuluu myös särmiön levityskuvan piirtäminen 2htdp/image kirjaston rectangle, above ja beside - funktioiden avulla. Sokerina pohjalla voisi olla vastaavan 3D - kuvion piirtäminen Racket Turtlella.
2) Ohjelma, joka kysyy käyttäjältä useamman suorakulmion kannan ja korkeuden tiedot display-read:in avulla (rekursiivisen silmukan avulla) ja sitten laskee pinta-alat, piirtää kuvat, vertailee pinta-aloja toisiinsa ja ilmoittaa suurimman. Päädyimme tallentamaan kannan ja korkeuden tiedot listan muotoon esim. (list (list 20 40) (list 40 50)(list 30 70)))
3) Ohjelma, joka laskee "vaatimattoman pojan" palkan. Eli, poika pyytää ensimmäiseltä päivältä palkaksi 2 senttiä, seuraavana päivänä 2 kertaa enemmän kuin edellisenä päivänä. Tehtävänä on laskea kuinka paljon hän saa rahaa 20 päivän työstä. Tämäkin tehtävä saatiin koodattua rekursion avulla, mutta mietittäväksi jäi voisiko sen tehdä vielä yksinkertaisemmin.
4) Racket Turtlella piirrettiin monenlaisia kuvioita, monikulmioita, ympyröitä yms. ja yhdisteltiin niitä samaan kuvaan. Hienoimmassa kuviossa oli kolme eri väristä kolmiota kolmion muodossa ja niitä pyöriteltiin eri asentoihin repeat:in avulla!
Kouluilla, joissa oli jo kokeiltu Racket:iä saatiin palautetta, että kuvilla aloittaminen innosti ehkä enemmän kuin peruslaskuilla aloittaminen, tosin Ylöjärvellä 7. luokkalaiset pojat olivat innostuneet jopa niistäkin. Kaukajärvellä oli aloitettu motivointitunnilla, eli kerrottu mitä ohjelmointi on ja miksi se on tulossa kouluun, ja tämä oli auttanut oppilaiden innostuksen herättämisessä. Hatanpäällä oli 8. luokan matematiikan tunnilla tutkittu DrRacketin avulla neliön ja neliöjuuren konseptia opettajan itse laatiman monisteen ja koodin pohjalta, ja Lielahdessa DrRacketillä oli selvitetty lukujen suuruusjärjestyksiä käyttämällä vertailuoperaatioita (<, > ja =).
DrRacket oli myös saapunut koulujen ohjelmistojakeluun (viimein), joten nyt loputkin koulut pääsevät asentamaan ohjelmaa.
Ilta oli mitä antoisin! Oli hienoa huomata, että omia tehtäväideoita oli alkanut syntymään ja että käsikirja tuntui toimivan hyvin!
Tällä kerralla esittelin ryhmälle DrRacket:in "pakettipalvelun", eli Package Managerin. Sen avulla asensimme koulun koneisiin koodaamiani apukirjastoja ml. Racket Turtlen sekä Display-read:in. Display-read kirjaston avulla voi kysellä helposti käyttäjältä tietoja, ja näiden avulla harjoitella vaikka if - rakennetta. Tämä kirjasto on vasta kehitteillä, joten siitä ei ole olemassa vielä valmiista käsikirja sivustoa. Racket Turtlen avulla taasen voi piirtää Turtle grafiikkaa, ja suurin osa iskuryhmää tutustuikin Turtlen ohjailemiseen Koodausta kouluun käsikirjan avulla.
Tässä joitakin illan aikana kehiteltyjä ja testattuja tehtäväideoita:
1) Ohjelma, joka kysyy käyttäjältä särmiön sivujen pituudet käyttäen display-read - funktiota, ja sen jälkeen kutsuu särmiön kokonaispinta-alan laskemiseen ohjelmoitua funktiota. Harjoitukseen kuuluu myös särmiön levityskuvan piirtäminen 2htdp/image kirjaston rectangle, above ja beside - funktioiden avulla. Sokerina pohjalla voisi olla vastaavan 3D - kuvion piirtäminen Racket Turtlella.
2) Ohjelma, joka kysyy käyttäjältä useamman suorakulmion kannan ja korkeuden tiedot display-read:in avulla (rekursiivisen silmukan avulla) ja sitten laskee pinta-alat, piirtää kuvat, vertailee pinta-aloja toisiinsa ja ilmoittaa suurimman. Päädyimme tallentamaan kannan ja korkeuden tiedot listan muotoon esim. (list (list 20 40) (list 40 50)(list 30 70)))
3) Ohjelma, joka laskee "vaatimattoman pojan" palkan. Eli, poika pyytää ensimmäiseltä päivältä palkaksi 2 senttiä, seuraavana päivänä 2 kertaa enemmän kuin edellisenä päivänä. Tehtävänä on laskea kuinka paljon hän saa rahaa 20 päivän työstä. Tämäkin tehtävä saatiin koodattua rekursion avulla, mutta mietittäväksi jäi voisiko sen tehdä vielä yksinkertaisemmin.
4) Racket Turtlella piirrettiin monenlaisia kuvioita, monikulmioita, ympyröitä yms. ja yhdisteltiin niitä samaan kuvaan. Hienoimmassa kuviossa oli kolme eri väristä kolmiota kolmion muodossa ja niitä pyöriteltiin eri asentoihin repeat:in avulla!
Kouluilla, joissa oli jo kokeiltu Racket:iä saatiin palautetta, että kuvilla aloittaminen innosti ehkä enemmän kuin peruslaskuilla aloittaminen, tosin Ylöjärvellä 7. luokkalaiset pojat olivat innostuneet jopa niistäkin. Kaukajärvellä oli aloitettu motivointitunnilla, eli kerrottu mitä ohjelmointi on ja miksi se on tulossa kouluun, ja tämä oli auttanut oppilaiden innostuksen herättämisessä. Hatanpäällä oli 8. luokan matematiikan tunnilla tutkittu DrRacketin avulla neliön ja neliöjuuren konseptia opettajan itse laatiman monisteen ja koodin pohjalta, ja Lielahdessa DrRacketillä oli selvitetty lukujen suuruusjärjestyksiä käyttämällä vertailuoperaatioita (<, > ja =).
DrRacket oli myös saapunut koulujen ohjelmistojakeluun (viimein), joten nyt loputkin koulut pääsevät asentamaan ohjelmaa.
Ilta oli mitä antoisin! Oli hienoa huomata, että omia tehtäväideoita oli alkanut syntymään ja että käsikirja tuntui toimivan hyvin!
![]() |
| Näihin tarvitaan vain rectangle, above ja beside |
perjantai 11. syyskuuta 2015
Racket iskuryhmä Takahuhdissa
Tänään aloitimme Koodausta kouluun materiaalin testaamisen oikeiden oppilaiden kanssa. Ensimmäinen testiryhmä oli Takahuhdin koulun 8. luokan matematiikkapainotuksen ryhmä.
Aloitimme asentamalla DrRacket:it luokan koneille ohjelmistojakelun kautta (SW center). Luokassa oli 25 konetta, joista 7:ään ei saatu syystä tai toisesta DrRacket:iä joten nämä oppilaat tekivät harjoituksia WeScheme-sivuston kautta. Tunnin jälkeen asennus saatiin toimimaan vielä kahteen koneeseen, lopuissa oli ohjelmistojakelusta johtuva ongelma, joka annettiin Fujitsulle selvitykseen.
1. Oppitunti
Aloitimme tutustumalla työkaluihin kirjoittamalla komentotulkkiin erilaisia juttuja. Aivan ensin, käänsimme DrRacket:in ikkunat vierekkäin (View -> Use Horizontal layout), koska käytössä oli nyt WeScheme:kin ja sen ikkunat ovat vierekkäin (selkeämpää oppilaiden seurata opettajan koneella tapahtuvaa toimintaa). Kasvatin myös opettajan koneen fontin isommaksi, että se näkyi myös luokan taakse (DrRacketin asetusten kautta).
Kerroin oppilaille, että Racket-tulkki on melko älykäs ja että sille voi heittää kokeeksi erilaisia kysymyksiä. Testasimme esim. mitä se vastaa jos sille sanoo:
> 6
Ja totesimme, että sehän vastasi että 6. Kokeilimme antaa sille myös merkkijonon:
> "Tiina"
ja totesimme, että se vastaa taas saman. Sitten joku keksi kirjoittaa, että
> r u stupid?
Ja sai vastauksesksi:
r : this variable is not defined
Tästä olikin helppo lähteä puhumaan muuttujista, ja kerroin, että DrRacket ei tiedä mitä tuo tarkoittaa ennen kuin kerromme sen sille. Sitten "opetimme" Racket-tulkille uusia sanoja kirjoittamalla define-lausekkeita määrittelyikkunaan:
(define LOL "Lot's of laughs")
(define ;-/ "Not so happy")
Nyt saimmekin tulkilta jo monipuolisempia vastauksia. Tässä vaiheessa oppilaat jo kokeilivat innoissa mitä kaikkea saisivat tulkin vastaamaan :-) Huomasin, että osa tulkeista palautteli balettiin osa jääkiekkoon liittyviä merkkijonoja. Moni yritti antaa muuttujalle moniosaista nimeä ja korjasimme näitä lisäämällä alaviivoja esim.
(define r_u_stupid? "Yes I am")
Sitten selitin, että ohjelmoinnissa muokkaamme tietoa, ja että Racket kielessä operaatiot jotka muokkaavat tietoa ovat nimeltään funktioita. Tutustuimme yksinkertaiseen funktioon nimeltä + ja kävimme sen avulla läpi Racket-kielen syntaksin. Ensin sulkuauki-merkki, sitten funktion nimi, sitten argumentit ja lopuksi sulkukiinni-merkki.
Kokeilimme läpi kaikki peruslaskutoimitukset: + - * /. Näiden jälkeen kokeilimme yhdistää lausekkeita ja selitin että lausekkeet ovat sisäkkäin kuin maatuskanuket. Testasimme lausekkeiden yhdistämistä kirjoittamalla määrittelyikkunaan ensin matemaattisen lausekkeen kommenttiriville. Selitin, että kommenttimerkillä ; merkityn rivin yli hypätään kun koodia suoritetaan.
; (3 + 5) / (4 - 2)
Tämä lauseke muunnettiin Racket-kielelle ja katsottiin sen suoritus läpi stepperillä vaihe-vaiheelta ja huomattiin kuinka evaluointi tapahtuu sisältä ulospäin. Nyt oppilaat saivat keksiä oman laskulausekkeensa ja tutkia sen toimintaa stepperillä. Ne joilla oli WeScheme käytössä tekivät tämän vieruskaverinsa kanssa (WeSchemessä ei ole stepperiä).
Tässä vaiheessa tutustuimme myös virheilmoituksiin, erityisesti siihen miten puuttuva sulku ilmoitetaan ja miten DrRacket näyttää valmiin sulkuparin harmaana.
2. Oppitunti
Latasimme Koodausta kouluun oppilaan tehtävistä Peruslaskut-tehtävän tiedostot ja oppilaat lähtivät koodaamaan niitä. Homma sujui hyvin, mutta moni unohti laittaa + ja - merkkien sekä lukujen väliin välilyönnin esim.(-2 4), jolloin Racket tulkitsi - merkin luvun etumerkiksi, ei funktion nimeksi ja siitä aiheutui seuraava virheilmoitus:
En ole aikaisemmin vetänyt koodaustunteja näin, mutta hyvin tuntui uppoavan. Tässä lähestymistavassa hyvää oli se, että virheilmoitukset alkoivat heti saada sisältöä, koska olimme puhuneet heti merkkijonoista ja muuttujista. Ja käsikirjan käytön opettelu kuvien avulla tuntui myös toimivan hyvin (tämä oli ensimmäinen kerta kun käytin käsikirjaa oppitunnilla).
Nyt on taas hyvä fiilis jatkaa materiaalin kehittelyä. Ainakin tällä ryhmällä suunnitelmien mukainen aloitusjakso toimi todella hyvin.
Aloitimme asentamalla DrRacket:it luokan koneille ohjelmistojakelun kautta (SW center). Luokassa oli 25 konetta, joista 7:ään ei saatu syystä tai toisesta DrRacket:iä joten nämä oppilaat tekivät harjoituksia WeScheme-sivuston kautta. Tunnin jälkeen asennus saatiin toimimaan vielä kahteen koneeseen, lopuissa oli ohjelmistojakelusta johtuva ongelma, joka annettiin Fujitsulle selvitykseen.
1. Oppitunti
Aloitimme tutustumalla työkaluihin kirjoittamalla komentotulkkiin erilaisia juttuja. Aivan ensin, käänsimme DrRacket:in ikkunat vierekkäin (View -> Use Horizontal layout), koska käytössä oli nyt WeScheme:kin ja sen ikkunat ovat vierekkäin (selkeämpää oppilaiden seurata opettajan koneella tapahtuvaa toimintaa). Kasvatin myös opettajan koneen fontin isommaksi, että se näkyi myös luokan taakse (DrRacketin asetusten kautta).
Kerroin oppilaille, että Racket-tulkki on melko älykäs ja että sille voi heittää kokeeksi erilaisia kysymyksiä. Testasimme esim. mitä se vastaa jos sille sanoo:
> 6
Ja totesimme, että sehän vastasi että 6. Kokeilimme antaa sille myös merkkijonon:
> "Tiina"
ja totesimme, että se vastaa taas saman. Sitten joku keksi kirjoittaa, että
> r u stupid?
Ja sai vastauksesksi:
r : this variable is not defined
Tästä olikin helppo lähteä puhumaan muuttujista, ja kerroin, että DrRacket ei tiedä mitä tuo tarkoittaa ennen kuin kerromme sen sille. Sitten "opetimme" Racket-tulkille uusia sanoja kirjoittamalla define-lausekkeita määrittelyikkunaan:
(define LOL "Lot's of laughs")
(define ;-/ "Not so happy")
Nyt saimmekin tulkilta jo monipuolisempia vastauksia. Tässä vaiheessa oppilaat jo kokeilivat innoissa mitä kaikkea saisivat tulkin vastaamaan :-) Huomasin, että osa tulkeista palautteli balettiin osa jääkiekkoon liittyviä merkkijonoja. Moni yritti antaa muuttujalle moniosaista nimeä ja korjasimme näitä lisäämällä alaviivoja esim.
(define r_u_stupid? "Yes I am")
Sitten selitin, että ohjelmoinnissa muokkaamme tietoa, ja että Racket kielessä operaatiot jotka muokkaavat tietoa ovat nimeltään funktioita. Tutustuimme yksinkertaiseen funktioon nimeltä + ja kävimme sen avulla läpi Racket-kielen syntaksin. Ensin sulkuauki-merkki, sitten funktion nimi, sitten argumentit ja lopuksi sulkukiinni-merkki.
Kokeilimme läpi kaikki peruslaskutoimitukset: + - * /. Näiden jälkeen kokeilimme yhdistää lausekkeita ja selitin että lausekkeet ovat sisäkkäin kuin maatuskanuket. Testasimme lausekkeiden yhdistämistä kirjoittamalla määrittelyikkunaan ensin matemaattisen lausekkeen kommenttiriville. Selitin, että kommenttimerkillä ; merkityn rivin yli hypätään kun koodia suoritetaan.
; (3 + 5) / (4 - 2)
Tämä lauseke muunnettiin Racket-kielelle ja katsottiin sen suoritus läpi stepperillä vaihe-vaiheelta ja huomattiin kuinka evaluointi tapahtuu sisältä ulospäin. Nyt oppilaat saivat keksiä oman laskulausekkeensa ja tutkia sen toimintaa stepperillä. Ne joilla oli WeScheme käytössä tekivät tämän vieruskaverinsa kanssa (WeSchemessä ei ole stepperiä).
Tässä vaiheessa tutustuimme myös virheilmoituksiin, erityisesti siihen miten puuttuva sulku ilmoitetaan ja miten DrRacket näyttää valmiin sulkuparin harmaana.
2. Oppitunti
Latasimme Koodausta kouluun oppilaan tehtävistä Peruslaskut-tehtävän tiedostot ja oppilaat lähtivät koodaamaan niitä. Homma sujui hyvin, mutta moni unohti laittaa + ja - merkkien sekä lukujen väliin välilyönnin esim.(-2 4), jolloin Racket tulkitsi - merkin luvun etumerkiksi, ei funktion nimeksi ja siitä aiheutui seuraava virheilmoitus:
Tämä asia kun opittiin katsomaan niin ryhmä koodasi näppärästi tehtäviä eteenpäin. Tehtävien määrä ja taso tuntui sopivalta, ja muutama ehti tehdä ne kaikki tunnin aikana. Lopputunnista tarkastimme vastaukset tykin kautta opettajan materiaalin mallivastauksista ja korjailimme lausekkeita oikeiksi. Oppilaat osasivat matematiikan laskujärjestyssäännöt mutta niiden ohjelmoiminen oikein olikin sitten aivan eri juttu.
3. Oppitunti
Viimeisellä oppitunnilla pääsimmekin sitten kuvien kimppuun. Kuviin tutustuimme avaamalla Koodarin käsikirjasta kohdan 3. Kuvat - 2htdp/image. Selitin, että Racket kielessä ei ole kuvan piirtofunktioita valmiina mutta, että voimme "laajentaa DrRacketin taitoja" ottamalla käyttöön kirjaston. Katsoimme käsikirjasta miten kirjasto otetaan käyttöön ja kirjoitimme määrittelyikkunaan:
(require 2htdp/image)
ja painoimme "run". Sitten avasin Käsikirjasta peruskuviot kohdan ja esittelin ensimmäisen piirtofunktion square. Selitin mitä eri argumentit tarkoittavat ja näytin, että käsikirjassa on kaikkiin funktioihin vastaava kuvaus ja esimerkit. Kirjoitimme komentotulkkiin esimerkin mukaan
> (square 50 "solid" "red")
Kehoitin oppilaita tutustumaan loppuajan itsenäisesti käsikirjan avulla eri piirtofunktioihin. Tämä onnistui hyvin, oppilat osasivat Käsikirjan avulla piirtää tähtiä, neljäkkäitä, ellipsejä ja jopa muuttaa tekstiä kuvaksi. Näytin vielä lopputunnista miten käsikirjasta löytää lisää värejä sekä miten tehdään oma väri make-color:in avulla ja tallennetaan se muuttujaan LEMPIVÄRI. Tässä vaiheessa moni laittoi erehdyksessä hipsut LEMPIVÄRI:n ympärille, joten palasimme siihen mikä on "merkkijono" ja mikä on MUUTTUJAN-NIMI.
(define LEMPIVÄRI (make-color 33 220 220))
(define NELIÖ (square 200 "solid" LEMPIVÄRI))
Sitten olikin jo aika tallentaa tuotokset kotihakemistoon. Ne jotka käyttivät WeScheme:ä siirsivät koodin Muistio-ohjelmaan ja tallensivat sen sitä kautta *.rkt tiedostoksi (WeSchemessä tallentaminen ei onnistunut koska Google-tunnukset olivat unohtuneet).
![]() |
| (square 200 "solid" LEMPIVÄRI) |
Oppitunnit sujuivat hyvin, oppilaat koodasivat ahkerasti ja kokeilivat juttuja itsenäisesti. Tämä ryhmä kuunteli hyvin opettajan ohjeet ja osasi lukea myös käsikirjaa. Kotihakemistoon tallentaminen, kansion luominen, ja kahden ikkunan avaaminen vierekkäin näytölle olivat osalle oppilaista uusia juttuja.
En ole aikaisemmin vetänyt koodaustunteja näin, mutta hyvin tuntui uppoavan. Tässä lähestymistavassa hyvää oli se, että virheilmoitukset alkoivat heti saada sisältöä, koska olimme puhuneet heti merkkijonoista ja muuttujista. Ja käsikirjan käytön opettelu kuvien avulla tuntui myös toimivan hyvin (tämä oli ensimmäinen kerta kun käytin käsikirjaa oppitunnilla).
Nyt on taas hyvä fiilis jatkaa materiaalin kehittelyä. Ainakin tällä ryhmällä suunnitelmien mukainen aloitusjakso toimi todella hyvin.
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:
Matematiikan aihepiirejä ensimmäisiin oppilaan tehtäville löytyi seuraavasti:
Siitä se lähtee!!
Tiina
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)
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
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.
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.
Tilaa:
Blogitekstit (Atom)



