Taustaa
Tuorein
Peruskoulun opetussuunnitelman perusteet (Opetushallitus, 2014) otettiin
käyttöön kouluissa syksyllä 2017 ja Lukion opetussuunnitelman perusteet (Opetushallitus,
2019) syksyllä 2021. Opetussuunnitelmiin on tuotu sekä yleisesti että
erityisesti matematiikan oppiaineeseen jo ensimmäisestä luokasta alkaen
ohjelmointia ja matemaattisten ja tilastollisten ohjelmien käyttöä, kullekin
ikäluokalle sovitetussa muodossa. Opetussuunnitelmissa korostetaan algoritmisen
ajattelun kehittymistä sekä ohjelmoinnin soveltamista matemaattisten ongelmien
ratkaisemiseen. Myös matematiikan ylioppilaskirjoituksissa on keväästä
2019 alkaen ollut jonkin verran myös ohjelmointia ja algoritmien ymmärtämistä vaativia
tehtäviä.
Oulun
yliopiston matemaattisten aineiden aineenopettajaopinnot eivät tällä hetkellä
sisällä lainkaan pakollista ohjelmointia. Kuitenkin, ohjelmoinnin opettaminen
ja ohjelmistojen hyödyntäminen opetuksessa ovat olennainen osa opiskelijoidemme
työnkuvaa tulevina aineenopettajina. Tähän puutteeseen on nyt tartuttu
kehittämällä aineenopettajaopiskelijoille suunnattu kolmen opintojakson
moduuli, jonka sisältöinä on ohjelmointia, Geogebra-ohjelman käyttöä ja
taulukkolaskentaa. Opetusharjoitteluni kohteena oli ohjelmointikurssin
materiaalin kehitystyö.
Uusi ohjelmointikurssi
Peruskoulun
ja lukion opetussuunnitelmissa ei oteta kantaa ohjelmointikieliin tai
yksittäisiin ohjelmiin. Yläkoulun ja lukion oppikirjoissa suosituin
ohjelmointikieli on Python, joten tämä valikoitui myös nyt kehitettävän
opintojakson kieleksi.
Reunaehtoina
kehitystyölle oli se, että opintojakso tuli toteuttaa verkkokurssina, jolla
opiskelu tapahtuisi pääosin itsenäisesti ja omaan tahtiin. Koska kyseessä oli
itseopiskelukurssi, suunnitelmana oli alusta alkaen hyödyntää
automaattitarkisteisia ohjelmointitehtäviä isona osana kurssisuoritusta. Automaattitarkisteisilla
tehtävillä on tutkitusti hyötyjä. Opiskelijat saavat automaattitarkisteisista
ohjelmointitehtävistä välitöntä ja tasapuolista palautetta (Hegarty-Kelly &
Mooney, 2021). Lisäksi automaattitarkisteiset tehtävät vähentävät opettajien
työtaakkaa sekä mahdollistavat opintojakson skaalaamisen suurillekin
opiskelijaryhmille (Wilcox, 2015).
Toteutin automaattitarkisteiset
ohjelmointitehtävät Coderunnerilla (Lobb & Harlow, 2016), joka on avoimen
lähdekoodin ilmainen Moodle-plugin, joka löytyy valmiiksi Oulun yliopiston
Moodle-ympäristöstä. CodeRunner-tehtävätyyppi on käyttöliittymältään
yksinkertainen sekä opiskelijan että opettajan näkökulmasta. Toisaalta Coderunner
on perustoiminnallisuuksiltaan melko suppea, mikä rajoittaa mahdollisia
tehtävätyyppejä.
Voiko kaiken automatisoida?
Yhtenä pääkysymyksenä harjoittelun aikana
oli pohtia ja selvittää, mihin automaattitarkisteiset tehtävät voisivat
pedagogisesti taipua. Selvältä tuntui, että tehtävillä pystytään
harjoittelemaan peruskomentoja ja komentojen syntaksia sekä yksinkertaisten
ohjelmointirakenteiden ja pienten ohjelmien toteuttamista. Haasteeksi kuitenkin
osoittautui se, että tehtävänantojen täytyi olla hyvin tarkkarajaisia ja
täsmällisiä, jolloin opiskelijan omalle suunnittelutyölle tai luovuudelle ei
jäänyt tilaa. Tavoitteena kurssilla on myös opettaa hyviä
ohjelmointikäytäntöjä, kuten virheiden käsittelyä ja debuggausta sekä
pyrkimistä koodin luettavuuteen ja laadukkaaseen kommentointiin. Harjoittelun
aikana onnistuin kehittämään Coderunner-tehtäviä, jotka kattavat joitakin
näistäkin tavoitteista, mutta havaitsin, että en onnistuisi saavuttamaan
kaikkia kurssille asettamiani oppimistavoitteita automaattitarkisteisten
tehtävien kautta.
Ratkaisuni oli kehittää kurssille
automaattitarkisteisten tehtävien lisäksi kolme laajaa oppimistehtävää, jotka
tulisivat opettajan arvioitavaksi. Laadin tehtävänannoista hyvin avoimet, jotta
opiskelijan omalle luovuudelle ja ongelmanratkaisulle jäisi enemmän tilaa.
Opettaja voi palautteessaan kommentoida ja arvioida myös opiskelijan
toteutuksen omaperäisyyttä, ohjelman luettavuutta ja tehokkuutta sekä
kommentointia – seikkoja, joita Coderunner-tehtävillä ei ollut mahdollista
riittävästi huomioida. Lisäksi yksi oppimistehtävistä keskittyy oppisisältöjen
laatimiseen ohjelmoinnin opetusta varten, mikä palvelee erityisesti
aineenopettajia kohdeyleisönä.
-----
Automaattitarkisteiset tehtävät ovat
erinomainen työkalu ohjelmoinnin opetuksessa. Yksinomaan niiden avulla on
kuitenkin haastavaa harjoittaa kaikkia ohjelmoinnin perusperiaatteita ja
abstraktimpia taitoja, kuten algoritmista ajattelua ja luovuutta ongelmanratkaisussa.
Opettajalla on ohjelmoinnin opetuksessa yhä keskeinen rooli.
Lähteet
Hegarty-Kelly,
E. & Mooney, D.A. (2021). Analysis of an automatic grading system within first
year Computer Science programming modules. ACM International Conference
Proceeding Series, 17–20.
Lobb, R. & Harlow, J. (2016). Coderunner: A Tool
for Assessing Computer Programming Skills. ACM
Inroads, 7(1), 47–51.
Opetushallitus.
(2014). Perusopetuksen opetussuunnitelman perusteet. (Määräys 2014:96). https://www.oph.fi/sites/default/files/documents/perusopetuksen_opetussuunnitelman_perusteet_2014.pdf
Opetushallitus.
(2019). Lukion opetussuunnitelman perusteet. (Määräys 2019:2a). https://www.oph.fi/sites/default/files/documents/lukion_opetussuunnitelman_perusteet_2019.pdf
Wilcox, C. (2015). The role of automation in
undergraduate computer science education. Proceedings of the 46th ACM
Technical Symposium on Computer Science Education, ACM, 90–95.
Kirjoittaja: Emma Leppälä