04.06.2015 Views

1jZ7iKR

1jZ7iKR

1jZ7iKR

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Koodi2016 | Miten ohjelmointia opetetaan?<br />

Koodi2016 | Miten ohjelmointia opetetaan?<br />

Koodauksen opetus on<br />

ajattelun opettamista<br />

Tässä osiossa lähestytään ohjelmoinnin opettamista<br />

peruskoulussa kahden pääharjoituskategorian<br />

kautta. Nämä ovat yhtäältä leikit sekä<br />

toisaalta erilaiset verkossa tarjolla olevat ympäristöt<br />

ohjelmointia ja sen opiskelua varten.<br />

Jotta opettaja ja oppilas ymmärtäisivät, miksi<br />

esitellyt leikit tai verkkoharjoitukset auttavat<br />

oppimaan ohjelmoimaan, on syytä käydä läpi,<br />

mistä niin kutsutussa ohjelmoinnillisessa ajattelussa<br />

on kyse.<br />

Ohjelmoinnillinen ajattelu on hiukan hapuileva<br />

suomennoksemme englannin kielen termistä<br />

computational thinking. (Toinen mahdollinen suomennos<br />

voisi olla vaikkapa algoritminen ajattelu.<br />

Computational thinkingistä löytyy oivallinen tulostettava<br />

luokkahuoneharjoitus Code.org-sivustolta:<br />

learn.code.org/unplugged/unplug2.pdf)<br />

Ohjelmoinnilliselle ajattelulle on erilaisia mää-<br />

Ongelman palastelua osiin<br />

tarvitaan arkielämässä<br />

ja ohjelmoinnissa.<br />

ritelmiä, mutta usein sen esitetään koostuvan<br />

esimerkiksi seuraavassa esitetyn kaltaisista osaalueista,<br />

jotka kaikki liittyvät siihen, minkälaisia<br />

ajattelutaitoja ihminen tarvitsee pystyäkseen<br />

ratkaisemaan ongelmia tietokoneen avulla.<br />

Huomionarvoista on, että listatut taidot eivät<br />

ole ainoastaan ohjelmointiin liittyviä. Samanlaisia<br />

ongelmanratkaisun taitoja tarvitaan koulussa<br />

esimerkiksi filosofian, matematiikan ja vieraiden<br />

kielten tunneilla – arkisesta elämästä puhumattakaan.<br />

Ongelman purkaminen osiin<br />

Ongelman purkaminen osiin (decomposition) on<br />

taito, jota tarvitaan sekä arkielämässä että ohjelmoinnissa,<br />

kun ongelma on hiukankin monimutkaisempi<br />

ratkaistavaksi kerralla.<br />

Tyypillinen esimerkki ongelman purkamisesta<br />

osiin on, kun joku kysyy sinulta ajo-ohjeita<br />

Helsingin keskustasta luoksesi. Jos et asu Kolmen<br />

sepän patsaalla, on mahdotonta antaa yksikäsitteistä<br />

ohjetta yhdellä virkkeellä. Ongelma on<br />

hajotettava osiin: ”Lähde ensin Mannerheimintietä<br />

pohjoiseen. Kansallisoopperan kohdalla<br />

käänny oikealle. Jatka puoli kilometriä…” Ja niin<br />

edelleen.<br />

Toinen esimerkki ongelman purkamisesta<br />

osiin olisi esimerkiksi siinä, kun maistat ystäväsi<br />

tekemää lihakeittoa ja haluat hahmottaa, miksi se<br />

on niin hyvää. Näet silmin, että liemessä on porkkanaa<br />

ja kaalia. Makuaistisi avulla pyrit tunnistamaan<br />

muita mausteita kuten suolan, pippurin ja<br />

vaikkapa valkosipulin.<br />

Matematiikassa luvun 273 voi purkaa satoihin,<br />

kymmeniin ja ykkösiin: 2 x 100 + 7 x 10 + 3 x 1<br />

Ohjelmoidessa vaikkapa verkkopankkia on<br />

välttämätöntä purkaa ongelma osiin:<br />

Ketkä pankkia käyttävät? (Ihmiset, yritykset<br />

jne.)<br />

Mitä käyttäjät haluavat pankissa tehdä? (Maksaa<br />

laskun, ottaa lainaa jne.)<br />

Mistä toimenpiteet koostuvat? (Laskun<br />

maksaminen koostuu tunnusluvun antamisesta,<br />

summan syöttämisestä, vastaanottajan tilinumeron<br />

antamisesta jne.)<br />

Kaavojen tunnistaminen<br />

Kaavojen ja toistuvien sääntöjen tunnistaminen<br />

(pattern recognition) auttaa ratkaisemaan arkipäiväisiä<br />

ongelmia. Kun itkevä vauva hiljeni viime<br />

kerralla saadessaan tutin, sama ratkaisu voi auttaa<br />

tälläkin kerralla. Märkä puu näyttää syttyvän<br />

huonommin kuin kuiva.<br />

Ohjelmoinnissa kykyä tunnistaa ongelmissa<br />

esiintyviä kaavoja on hyvin hyödyllinen, koska<br />

yhtäältä se auttaa ajattelussa kuten missä tahansa<br />

arkipäiväisessä ongelmassa, ja toisaalta kone on<br />

ongelmien ratkaisijana täydellisen kaavamainen:<br />

se toimii aina tarkalleen ja täydellisesti samalla<br />

tavalla suorituskerrasta toiseen. Siksi kerran<br />

oivallettua kaavaa voidaan soveltaa koneella yhä<br />

uudestaan oikein.<br />

Algoritmien luominen<br />

Algoritmilla tarkoitetaan kuvausta jonkin tehtävän<br />

suorittamiseksi tarvittavista toimenpiteistä.<br />

Kun arkielämässä huippukokki kirjoittaa ylös<br />

76| |77

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!