Upload
tiina-partanen
View
187
Download
2
Embed Size (px)
Citation preview
Kurkistus koodaukseen
TURKU
19.4.2016
Kurssin tavoitteetSisältö: • mitä on ohjelmointi, koodi, anturit...
• mistä osa-alueista se koostuu
• mitä on ohjelmoinnillinen ajattelu
• millaisia ongelmia ohjelmoimalla voi ratkaista
• tutustumme näihin käsitteisiin ohjelmoimalla pieniä harjoituksia ja samalla tutustumme ohjelmoinnin moniin mahdollisuuksiin
• kurssin tavoitteena ei ole oppia varsinaisesti ohjelmoimaan, vaan tutustua siihen• mitä se on
• antaa näkemystä siitä, mitä aiheeseen liittyy
• mikä siinä on tärkeää
• miten jatkaa eteenpäin
2
Lapset ohjelmoimaan 1960 Seymour Papert (MIT)
◦ Ohjelmoinnin Avulla lapset voivat oppia ongelmanratkaisua sekä toteuttaa itseään luovasti
◦ ”children should be programming the computer rather than being programmed by it”
◦ Kehitti Logo-ohjelmointikielen ja Turtle grafiikan (matematiikka)
◦ KIRJA: Mindstorms, Children, Computers, And Powerful Ideas (1980)
◦ Ohjelmoitavat legorobotit: Lego mindstorms ◦ Ensimmäiset ”ohjelmoitavat legot” (1986)
◦ RXT (1998)
◦ NXt (2006)
◦ EV3 (2013)
http://cyberneticzoo.com/cyberneticanimals/1969-the-logo-turtle-seymour-papert-marvin-minsky-et-al-american/
1970 2016
http://cyberneticzoo.com/cyberneticanimals/1969-the-logo-turtle-seymour-papert-marvin-minsky-et-al-american/
Computational thinking 2006
Jeannette M.Wing
◦ Computational thingking - artikkeli (2006)
◦ Taustalla huoli Tietojenkäsittelytieteen oppilasmäärien vähenemisestäUSA:n yliopistoissa
◦ Idea: kaikkien pitäisi tutustua ”laskennalliseen ajatteluun” opintosuunnasta huolimatta, jotta voisi nähdä automatisoinnin edut esim. Biologiassa, lääketieteessä jne. (ja saataisiin ehkä lisää opiskelijoita alalle)
◦ Idea siitä, että nämä ”Laskennallisen ajattelun” taidot auttavat myös muissa ongelmanratkaisutilanteissa
Computational thinking Automatisointiajattelu, Algoritminen ajattelu, ohjelmoinnillinen ajattelu, laskennallinen ajattelu
Periaatteet:
Logiikka◦ ennustaminen, analysointi
Algoritmit◦ vaiheiden ja sääntöjen
tekeminen
Jakaminen osiin◦ ongelman/ratkaisun
jakaminen osiin
Toistuvat rakenteet◦ niiden tunnistaminen ja
hyödyntäminen
Abstraktio◦ turhien yksityiskohtien
poistaminen
Arvioiminen◦ ratkaisun laadun arviointi
Lähestymistavat:
Kokeileminen
◦ leikkiminen, koodin
”säätö”
Uuden luominen
◦ suunnittelu ja toteutus
Debuggaaminen
◦ virheiden löytäminen ja
korjaaminen
Sitkeys
◦ työn loppuun saattaminen
Yhteistyö
◦ Yhdessä työskenteleminen
Koodaus kaikkiin USA:n kouluihin 2013Liikemies Hadi Partovi perustaa Code.org - järjestön 2013
What Most Schools Don't Teach (youtube-video 2013)
Taustalla huoli siitä, että (hyviä) ohjelmoijia on liian vähän
VIESTI:◦ koodaamista pitäisi opettaa joka koulussa◦ Ohjelmointi opettaa ajattelemaan◦ koodaaminen on ”super power”◦ koodaamalla voi muuttaa maailmaa (parantaa maailmaa, auttaa ihmisiä)◦ Koodarit ovat ”nykyajan rokkitähtiä”◦ Ei tarvitse olla superälykäs, että voi ohjelmoida◦ Koodaamalla voi rikastua tai tulla kuuluisaksi
Hour of code – sivusto (2013) → Koodaustunti.fi – sivusto (2014)
code.org
Ohjelmointi Suomen peruskouluihin 2014Opetusministeri Krista Kiuru tuo idean OPS2014:iin (Tammikuussa 2014)
Linda Liukas ja Juhani Mykkänen kirjoittavat KOODI2016 – kirjasen ”ensiapua koodamisen opettamiseen peruskoulussa” (kesäkuu 2014)
OPS 2014luokat 1-2
Luokat 1-2 Tieto- ja viestintäteknologinen osaaminen (L5)◦ Oppilaat saavat ja jakavat keskenään kokemuksia digitaalisen median parissa
työskentelystä sekä ikäkaudelle sopivasta ohjelmoinnista. (OPS2014 s. 101)
Luokat 1-2 Matematiikan tavoitteisiin liittyvät keskeiset sisältöalueet◦ S1 Ajattelun taidot: Tutustuminen ohjelmoinnin alkeisiin alkaa laatimalla
vaiheittaisia toimintaohjeita, joita myös testataan. (OPS2014 s. 129)
OPS 2014luokat 3-6
Luokat 3-6 Tieto- ja viestintäteknologinen osaaminen (L5)◦ Ohjelmointia kokeillessaan oppilaat saavat kokemuksia siitä, miten teknologian
toiminta riippuu ihmisen tekemistä ratkaisuista (OPS2014 s. 157)
◦ T14 innostaa oppilasta laatimaan toimintaohjeita tietokoneohjelmina graafisessa ohjelmointiympäristössä (OPS2014 s. 235)
Luokat 3-6 Matematiikan tavoitteisiin liittyvät keskeiset sisältöalueet◦ S1 Ajattelun taidot: Suunnitellaan ja toteutetaan ohjelmia graafisessa
ohjelmointiympäristössä (OPS2014 s. 235)
◦ ARVOSANA HYVÄ: Oppilas osaa ohjelmoida toimivan ohjelman graafisessa ohjelmointiympäristössä (OPS2014 s.239)
Luokat 3-6 Käsityön tavoitteisiin liittyvät keskeiset sisältöalueet◦ S3 Kokeilu: Harjoitellaan ohjelmoimalla aikaan saatuja toimintoja, joista esimerkkinä
robotiikka ja automaatio. Kokeilujen pohjalta tuotetta tai teostakehitetään vielä eteenpäin.
OPS 2014luokat 7-9
Luokat 7-9 Tieto- ja viestintäteknologinen osaaminen (L5)◦ Ohjelmointia harjoitellaan osana eri oppiaineiden opintoja. (OPS2014, s. 284)
Luokat 7-9 Matematiikan tavoitteisiin liittyvät keskeiset sisältöalueet:◦ S1 Ajattelun taidot ja menetelmät: 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)
◦ T20 ohjata oppilasta kehittämään algoritmista ajatteluaan sekä taitojaan soveltaa matematiikkaa ja ohjelmointia ongelmien ratkaisemiseen (OPS2014, s. 375)
◦ ARVOSANA HYVÄ: Oppilas osaa soveltaa algoritmisen ajattelun periaatteita ja osaa ohjelmoida yksinkertaisia ohjelmia. (OPS2014, s. 379)
Luokat 7-9 Käsityön tavoitteet◦ Käytetään sulautettuja järjestelmiä käsityöhön eli sovelletaan ohjelmointia
suunnitelmiin ja valmistettaviin tuotteisiin. (OPS2014, s. 431)
JOKA TAPAUKSESSA...• Mitä on ”computational thinking”? (monta
eri määritelmää)
• Miten sitä mitataan? (arviointi)
• Siirtyvätkö ohjelmoinnin kautta opitut
ongelmanratkaisutaidot muihin elämän osa-
alueisiin esim. Parantuvatko matematiikan
oppimistulokset? (transfer)
• Siirtyvätkö ilman tietokonetta opitut
”computational thinking”-taidot
ohjelmointitaidoiksi? (transfer)
• Onko graafisen ohjelmointiympäristön
jälkeen helpompaa vai vaikeampaa aloittaa
lausekielinen ohjelmointi?
EI AIVAN SELVÄÄ...• Opitaan käyttämään TVT:tä
• Opitaan jotain uutta ympäröivästä
maailmasta (esim. sähkö, sensorit)
• Annetaan onnistumisen kokemuksia (joku
kiinnostuu ehkä ja hakeutuu
kerhoon/opiskelemaan lisää), oppilastutorit
• Innostetaan luovaan ongelmanratkaisuuN (ei
ole vain yhtä oikeaa vastausta)
• Tarjoaa toiminallisia ja oppiainerajat rikkovia
projektimahdolisuuksia (kuvis, käsityöt,
äidinkieli, matematiikka, fysiikka)
KoodikieliSuunnittele parin kanssa ohjelmointikieli, jonka avulla voi piirtää suorakulmioita, kolmioita ja ympyröitä.
Kirjoita koodisi avulla ohjeet jonkun yksinkertaisen geometrisista kuvioista koostuvan kuvan piirtämiseksi (esim. Talo, auto...)
13
Kaikki ohjelmointikielet ovat ihmisen keksimiä rakennelmia. Niitä syntyy koko ajan lisää, ne kehittyvät paremmiksi ja osa kuolee pois. Ohjelmointikieliä kehitetään ratkomaan
tiettyjä ongelmia, ne ovat aikansa tuote.
RobotiikkaGraafinen ohjelmointi
14
- Kierrä este- Pysähdy mustalle viivalla- Pysähdy seinään- Imuroi lattia
Sovellusten ohjelmointiLausekielinen ohjelmointi
-Muuttujat, funktiot, suunnittelu/testaaminen, tietotyypit, kirjasto, käsikirja
-Totuusarvot, ehtolauseet, silmukka, syötteet
15
Suunnitteluvs. koodausKeksi sovellus, joka kysyy käyttäjältä jotain, tutkii syötettä ja palauttaa vastauksen, ja palaa taas alkuun kysymään uudelleen jne.
Suunnittele ohjelmasi ◦ Tarkoitus
◦ Esittele funktion nimi, muuttujat
◦ Kirjoita esimerkit/testit
◦ Kysy käyttäjältä syötteet, tarkista niiden järkevyys!
16
Kokeileminenvs. suunnitteluPiirrä Racket Turtlella peruskuviot
Kokeile mitä muuta saat aikaan...
17
Pedagoginen lähestymistapaOppilaalle on saatava mentaalimalli siitä miten ohjelmakoodi toimii.
Miten tähän päästään?
1. Käytetään◦ valmiita piirtofunktioita (kuvat, Turtle)
2. 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
18
Mistä jatkaa?Koodiaapinen MOOC: http://koodiaapinen.fi
◦ ScratchJr (esi- ja alkuopetus)
◦ Scratch (3.-6. luokat)◦ https://scratch.mit.edu/
◦ http://www.teromakotero.fi/scratch-klubi/
◦ Racket (7.-9. luokat)◦ http://racket.koodiaapinen.fi
◦ Python (7.-9. luokat)
Lego – ohjelmointi◦ http://www.innokas.fi/fi/training/asimov
Code.org / Koodaustunti◦ http://code.org
◦ http://koodaustunti.fi
19