Lühikokkuvõte: Programmeerimise “käekirja” tunnused, mis aitavad tuvastada plagiaati

Oleme jõudnud uude olukorda, kus järjest enam programmeerimise kontrolltöid ja arvestusi tehakse väljaspool klassiruumi. Seega tuleb rohkem tähelepanu pöörata viisidele, kuidas tuvastada, kas õpilane on ülesande ise lahendanud. Selleks on võimalik kasutada programmeerimiskeskkonda, mis logib kasutaja tegevusi. Üks selliseid keskkondi on Thonny, millega on võimalik ka programmeerimisprotsessi taasesitada. 

Selle uuringu eesmärk oli sissejuhatavate programmeerimiskursuste lahenduste logide põhjal leida erinevate õppijate programmeerimise “käekirja” iseloomulikke tunnuseid. Samuti oli eesmärk selgitada, kui püsivad need tunnused on, sest püsivaid tunnuseid saab kasutada selleks, et tuvastada, kas õppijad on ülesanded ise lahendanud. Analüüsiti Tartu Ülikoolis 2020. aasta kevadel toimunud kursustelt “Sissejuhatus programmeerimisse” ja “Sissejuhatus programmeerimisse II” kogutud Thonny logisid. Kvalitatiivse uuringu käigus leitud sobivaid tunnuseid saab hiljem kasutada kvantitatiivses analüüsis.

Programmeerimise “käekirjaga” seotud tunnused, millele uuringus keskenduti, võib jagada kahte tüüpi: 1) programmeerimisega mitteseotud tunnused; 2) programmeerimisega seotud tunnused. Programmeerimisega mitteseotud tunnuste hulka kuulub näiteks sulgude, jutumärkide, ülakomade ja nurksulgude kirjutamise järjekord. Näiteks võivad õppijad kirjutada alustava sulu, seejärel teksti ja lõpuks lõpetava sulu või hoopis kõigepealt avasulu, seejärel lõpetava sulu ja alles lõpuks teksti. Sulgude, jutumärkide, ülakomade ja nurksulgude peamise kirjutamisjärjestuse alusel jagati õpilased seitsmesse tüüpi.

Tulemuste põhjal võib öelda, et programmeerimisega mitteseotud tunnused on püsivamad (nt sulgude või jutumärkide kirjutamise järjekord). Neid saab kasutada selleks, et automaatselt kontrollida, kas õpilane on ülesande ise lahendanud. Kuna aga osade õpilaste programmeerimise “käekirjas” on sarnaseid tunnuseid, on automaatseks kontrolliks vaja kasutada korraga mitut tunnust ja kombineerida neid näiteks keskmise digraafide tippimise ajaga. Programmeerimisega mitteseotud tunnuseid saab kombineerida ka meetoditega, mis kontrollivad programmide sarnasust. Programmeerimisega seotud valikud (näiteks muutujanimede kirjutamise stiil või print-lauses komade vs sõnede ühendamise kasutamine või i += 1 vs i = i + 1) varieeruvad ja muutuvad kursuse käigus. Algkursusel ei ole programmeerimise “käekiri” programmeerimisega seotud tunnuste osas veel välja kujunenud, väga palju mõjutab see, kuidas nendes materjalides/näidetes on, mida kursusel vastavas peatükis kasutatakse. Kontrolltöö puhul mõjutavad lisaks veel ülesannete näidislahendused, mida nad kontrolltöö ülesandeid lahendades kasutavad. Seetõttu ei saa programmeerimisega seotud tunnuste abil automaatselt kontrollida, kas õpilane on ülesande iseseisvalt lahendanud. Oluline on programmeerimise “käekirjaga” seotud tunnuseid edasi uurida kvantitatiivsete meetoditega ja luua vahendid võimalike plagiaadijuhtumite kontrollimiseks.