Näytetään tekstit, joissa on tunniste Python. Näytä kaikki tekstit
Näytetään tekstit, joissa on tunniste Python. Näytä kaikki tekstit

tiistai 2. kesäkuuta 2026

Korvaako Coderunner opettajan? – Automaattitarkisteisia tehtäviä ohjelmoinnin opetuksessa

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ä