# Savonia-artikkeli: Työkaluja tehtävien arvioinnin nopeuttamiseen

> Ohjelmointitehtävien arviointi on työlästä, mutta automatisoidut ratkaisut ja työkalut voivat helpottaa ja nopeuttaa opettajan työtä merkittävästi.

## Ohjelmoinnin opetuksen haasteet
Tietotekniikassa ja varsinkin ohjelmoinnin opetuksessa tehtävät ovat oleellinen osa oppimista. Lausahdus ”koodaamaan oppii koodaamalla” pitää erittäin hyvin paikkansa. Ohjelmointitehtävissä tärkeintä ei ole asioiden ulkoa muistaminen, vaan opiskeltujen asioiden soveltaminen. Lisäksi tiedonhakuosaaminen on korostunut, sillä tehtävissä sovelletut ympäristöt ja ohjelmistokehykset (Framework) kehittyvät jatkuvasti.

Mielekkäiden ja sopivan haastavien tehtävien luominen on opettajalle haastavaa. Tavoitteena on luoda tehtävä, johon ei ole suoraan löydettävissä kopioitavaa vastausta, vaan opiskelija joutuu soveltamaan oppimaansa. Koska tehtäviä on useita per kurssi ja niiden on toimittava eri toteutuksilla, suunnittelutyötä riittää.

## Arvioinnin merkitys ja haasteet
Tehtäviä suunnitellessa on tärkeää määritellä myös arviointikriteerit. Ennalta julkaistut kriteerit tuovat läpinäkyvyyttä ja objektiivisuutta, mutta ohjelmointitehtävien tarkistaminen on silti työlästä. Koska yksittäisen tehtävän voi suorittaa onnistuneesti usealla eri tavalla, opettajan on vaikea arvioida, milloin vastaus on kriteereiden mukainen.

Opiskelijat arvostavat pisteiden lisäksi sanallista palautetta, joka kertoo, mikä tehtävässä oli oikein ja missä on vielä kehitettävää. Tämä palaute on arvokasta, mutta sen tuottaminen manuaalisesti on hidasta.

## Automatisoitu työnkulku GitHub Classroomin avulla
Samanlaisena toistuvan työn vähentämiseksi olen kehittänyt automatisoituja ratkaisuja. GitHub Classroom on osoittautunut toimivaksi työkaluksi, sillä se käyttää samoja menetelmiä kuin työelämä: tehtäväpohjat kloonataan, ratkaisut tuotetaan ja muutokset viedään versionhallintaan.

Oma työnkulkuni tehtävien tarkistamiseen ja palautteen antamiseen (ilman automaattista tarkastusta) on seuraava:

*   **Kloonaus:** Tehtävien vastaukset kloonataan omalle koneelle Classroom Assistant -työkalun avulla.
*   **Tarkistus:** Käytän VS Code -koodieditoria, jolla saa kaikki palautuskansiot auki yhdellä kertaa.
*   **Arviointi:** Käyn tehtävän läpi arviointikohtien mukaan ja tallennan pisteet sekä kommentit CSV-tyyliseen tekstitiedostoon.
*   **Pisteiden vienti:** Pisteet siirtyvät Moodlen arviointikirjalle tietojen tuonnin kautta.
*   **Palautteen vienti:** Kommentit viedään jokaisen vastaajan versionhallintaan kehittämäni työkalun avulla.

## Automaation hyödyt
Kehittämäni sovellus lukee CSV-tiedostosta opiskelijakohtaisen palautteen ja luo sen automaattisesti tehtävän Pull Request -osioon. Tämä poistaa tarpeen kopioida kommentteja yksitellen, mikä on virhealtista ja hidasta. Automaation ansiosta opettaja voi keskittyä palautteen sisällölliseen laatuun. Opiskelija saa kommentista myös sähköpostiviestin, mikäli hän ei ole muuttanut GitHub-repositorion oletusasetuksia.

Sovellus on lähdekoodimuodossa saatavilla [GitHub-palvelusta](https://github.com). Se 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