Tietotekniikassa ja varsinkin ohjelmoinnin opetuksessa tehtävät ovat oleellinen osa oppimista. Lausahdus ”koodaamaan oppii koodaamalla” pitää erittäin hyvin paikkansa. Ohjelmointitehtäviä käytetään ohjelmointikurssien arvioinnissa ja ne ovat hyvä tapa mitata opiskelijoiden osaamista. Ohjelmoinnissa opiskeltujen asioiden ulkoa muistaminen ei ole tärkeää vaan opiskeltujen asioiden soveltaminen erilaisissa ohjelmointitehtävissä on tärkeämpää. Lisäksi tiedonhakuosaaminen on korostunut, sillä tehtävissä sovelletut ympäristöt ja ohjelmistokehykset (engl. Framework) kehittyvät jatkuvasti.
Mielekkäät ja sopivan haastavat tehtävät ovat siis avainasemassa ohjelmointiopinnoissa. Opettajalle tästä tulee hieman toisenlaisia haasteita. Kuinka osaan tehdä tehtävän, joka on mielekäs, sopivan haastava ja käsittelee osaa kurssin aihealueesta. Valmiita koodiesimerkkejä on vaikka kuinka paljon ja täysin samanlaista tehtävää ei ole syytä tehdä. Tavoitteena on luoda tehtävä, johon ei ole suoraan löydettävissä kopioitavaa vastausta, vaan tehtävää tehdessä joutuu miettimään opiskeltuja asioita sekä soveltavamaan niitä tehtävän ratkaisemiseksi. Tehtäviä on yleensä useita kurssia kohden, joten tekemistä ja miettimistä riittää. Lisäksi täysin samanlaisena tehtävä ei toimi useaan kertaan opintojakson eri toteutuksilla.
Tehtäviä suunnitellessa on hyvä suunnitella myös tehtävien arviointi ja pistekohdat. Ennalta julkaistut arviointikriteerit tuovat läpinäkyvyyttä arviointiin ja opiskelijat voivat päättää millaista arvosanaa kurssista tavoittelevat. Lisäksi arviointikriteerit helpottavat tehtävien tarkistamista ja tuovat objektiivisuutta arviointiin. Ohjelmointitehtävien arviointi on työlästä, vaikka kriteerit ovatkin ennalta julkaistu. Yksittäisen tehtävän voi suorittaa onnistuneesti usealla eri tavalla. Tämä tapojen monimuotoisuus luo haasteen tehtäviä tarkistavalle opettajalle. Milloin vastaus on kriteereiden mukainen?
Opiskelijat arvostavat kun tehtävistä saa pisteiden lisäksi myös muuta palautetta. Kuvaus siitä mikä tehtävässä oli oikein ja missä kohdissa on vielä kehitettävää tuovat lisäarvoa opiskelijalle. Sanallisesta palautteesta on tullut useasti kiitosta opiskelijoilta eli palautekäytäntöä on pidettävä yllä.
Kun kaikki edellä mainitut asiat summaa yhteen, alkaa yhdelle opintojaksolle olla varsinaisen opintojakson pitämisen lisäksi todella paljon tekemistä. Samanlaisena toistuvan työn vähentämiseksi voi kehittää automatisoituja ratkaisuja sekä työkaluja, jotka helpottavat ja nopeuttavat tekemistä. Yksi tällainen työkalu on tehtäväpalautteen antamiseen kehitetty sovellus, jota käytän GitHub Classroom:in kanssa.
Viimeaikaiset kokemukset GitHub Classroom -palvelusta ohjelmointitehtävien jakelussa ovat osoittautuneet varsin toimiviksi. Lisäksi opiskelijat käyttävät samoja työvälineitä ja palveluita tehtävien tekemiseen kuin mitä käytetään myös työelämässä. Tehtäväpohjat kloonataan omalle koneelle, jossa tehtävään tuotetaan ratkaisu ja muutokset viedään takaisin versionhallintaan. Tehtäviin voi asettaa palautteen antamisen muutospyynnön (engl. Pull Request) kautta.
Oma työnkulkuni tehtävien tarkistamiseen sekä palautteen antamiseen tehtävissä, joissa ei ole automaattista tarkastusta, menee oheisella tavalla:
• Tehtävien vastaukset kloonataan omalle koneelle Classroom Assistant -työkalun avulla.
• Tarkistukseen käytän VS Code -koodieditoria, jolla saa kaikki palautuskansiot auki yhdellä kertaa
• Käyn tehtävän läpi arviointikohtien mukaan ja laitan pisteet sekä kommentit tekstitiedostoon, joka on CSV-tyylinen ja koneluettavissa
• Tehtävien pisteet siirtyvät kaikki kerralla Moodlen arviointikirjalle tietojen tuonnin kautta (samaisen tuonnin kautta olisi mahdollista tuoda myös tehtävien palauteteksti Moodleen)
• Tehtävien kommentit viedään jokaisen vastaajan versionhallintaan tehdyllä työkalulla
Työkalun idea on, että se käy kunkin opiskelijan tekemän tehtävän palautuskansion läpi, lukee CSV-muotoisesta tekstitiedostosta opiskelijalle tehtävästä kirjoitetun palautteen ja luo kommentin tehtävässä avoinna olevaan Pull Request:iin. Kommenttien kirjoittaminen tai kopioiminen yksitellen opiskelijalle nähtäväksi on työlästä ja virhealtista. Tehty sovellus hoitaa kommentin julkaisemisen automaattisesti, jolloin ajan voi käyttää kommentin sisällön merkitykselliseksi tekemiseen. Kommentista menee opiskelijalle myös sähköpostiviesti, ellei hän ole erikseen käynyt muokkaamassa GitHub repositorion oletusasetuksia.
Sovellus on lähdekoodimuodossa saatavilla GitHub-palvelusta klikkaamalla tästä. Sovellus on toteutettu samoilla tekniikoilla ja ohjelmointikielellä, joita käytän myös opetuksessa.
Kirjoittaja:
Mikko Pääkkönen, lehtori, teknologia- ja ympäristöala, Savonia-ammattikorkeakoulu