# Lõputöö analüsaator

# Tekstianalüüsi tulemused

Lausete arv: 292 - Sõnade arv: 4734

Analüüsiks kulunud aeg: 122.123 sekundit

Uus analüüs

##### Järgnevates lausetes leidub mina- või meie-vormi:

hakkamegi
Antud olukorra lahendamiseks kogutaksegi lahenduste kohta logifaile, mille uurimisega hakkamegi tegelema.

oleme
Esimene nendest on TextInsert, mille sisu oleme varasemalt lahti seletanud ning teise kirje võtmele „sequence“ vastab „<>“ ning selle kirje olemasolu puhul saamegi teada, et tegu on kleepimisega.

näeme
Joonisel 8 näeme tüübiviga, mis on tekkinud, kui kasutaja on üritanud võrrelda arvulist väärtust sõnega, kuid programmil ei ole võimalik aru saada kas arv on suurem kui tekst.

käsitleme
Järgnevalt käsitleme tööd, mis võttis ajaliselt kõige kauem aega.

töötame
Järgnevas peatükis töötame süvitsi läbi 2 põhilist lahendusmeetodit ning kolmandaks ühe äärejuhtumi, et saada ülevaade põhilistest lahendusmeetoditest.

käsitleme
Käesolevas alapeatükis käsitleme kõiki kolme.

proovimegi
Ning antud töö raames proovimegi välja selgitada, et kas pideva testimise õpetamisel on ka arvestustööde tulemustes mingisugune eelis.

saame
Programmi jooksutamisel saame teada, et on esinenud veateade, kui käsureale tekib „TextInsert“ tüüpi kirje, mille võti „tags“ sisaldab „stderr“ sõnet.

oleme, saame
Samas antud töö raames oleme enim huvitatud just failide avamisega seotud kirjetest, kuna selle põhjal saame teada, millisel ajahetkel õpilane alustas antud ülesande lahendamist ja kas ta on kasutanud abiks teisi faile.

saime
Sealt saadud tulemuste põhjal saime täita järgmised väljad: „Lahendamise aeg“, „Vigade arv“, „Käivitamise kordade arv“, „Veateatega lõppevaid käivitusi“, „Veateated“, „Kleepimiste arv“.

kasutame
Seda kirjet kasutame, et leida üles koht, mil õpilane alustas arvestusülesande lahendamist.

kasutame
Teine failidega seotud kirje on „Open“, mida kasutame, et leida vastet küsimusele, kas õpilane kasutab abiks eraldi faile.

täiendame
Uurimistöös analüüsitakse varasemate uurimistööde baasil 2018. aasta MOOC-i „Programmeerimise alused“ õppijate arvestusülesande lahendusprotsessi, mille korrastamiseks ja analüüsimiseks kasutatakse varasemalt loodud programme [3] [4] ja täiendame neid vastavalt vajadusele.

kasutame
Õpilaste protsessi grupeerimiseks kasutame varasemalt magistritöö käigus loodud grupeerimisaluseid [1].

Üritame
Üritame aru saada, kuidas tulevikus võiks õpilaste tööle kuluvat aega vähendada ning muuta materjalid kergemini omandatavaks.

##### Järgnevaid lauseid võib pidada liiga pikaks:

Magistritöödes on uuritud õpilaste käitumismustreid [1] ja bakalaureuse tööde raames on loodud programme, mis analüüsivad logifailide sisu [2] [3] ning ka programme, mis korrastavad logifaile, ehk mis pakib lahti tuntumaid arhiivi formaate ning seob kokku Thonny poolt lahku löödud ülesannete lahendusi [4].

Logifailide esitajate lahendused jagunesid peamiselt kolmeks: Inimesed, kes esitasid kõik kursusel tehtud logifailid kokku pakitult Inimesed, kes esitasid oma viimase päeva logifailid kokku pakitult Inimesed, kes esitasid õiged logifailid kokku pakkimata Sellise ebamäärase esitusstiili tõttu läks kõige kauem aega esimese grupi inimeste peale, kuna nende töödest oli kõigepealt vaja üles leida õige sektsioon, kus nad arvestusülesannet lahendasid ning seejärel õige logifail, kus ülesannet alustati.

Kõige esimene kirje, mis tekib programme jooksutamisel on uus TextInsert kirje, mille puhul võtmele “text” vastab asub käivitatava faili asukoht, selle kirjega käib kaasas umbes 6 erinevate programme jooksutamiseks vajalikku JSON kirjet, millest kõige olulisem on viimane programmijupi käivitamise kirje, mida on näha joonisel 6.

Arvutamiseks võib kasutada valemit: (metsatüki juurdekasv) = (metsatüki pindala aakrites) * 0,4047 * (aastane juurdekasv) Koostada programm, mis • küsib kasutajalt o failinime (failis on eraldi ridadel metsatükkide pindalad aakrites); o vastava puuliigi aastast juurdekasvu hektari kohta tihumeetrites (ujukomaarv); o piiri, mitmest aakrist suuremad metsatükid arvesse võtta (ujukomaarv); • loeb failist metsatükkide pindalad; • arvutab (funktsiooni juurdekasv abil) ja väljastab metsatüki aastase juurdekasvu, kui selle metsatüki pindala on sisestatud piirist suurem; • väljastab teate “Metsatükki ei võeta arvesse”, kui metsatüki pindala ei ole sisestatud piirist suurem; • väljastab lõpuks ekraanile, mitme metsatüki juurdekasv arvutati.

Selle tüübi testimismetoodika jagunes kaheks: õpilased, kes kirjutasid lisaks meetodile ka faili avamiseks vajalikud käsud ja testisid koodis ning õpilased, kes tegid valmis funktsiooni ja testisid seda käsurealt.

Õpilane sai aru, mida ülesanne temalt nõudis ja seejärel kirjutas valmis suure osa koodist ning hakkas testima alles siis, kui ülesanne peaaegu lahendatud oli.

Näiteks ühe antud tüüpi õpilase lahendus algas üksteise alla kogu koodi lahti kirjutamisega, aga süntaksit seda tehes ei jälgitud, ning koodi kirjutamisel pani õpilane oma töö 2 korda kinni ning alles kolmandal korral, kui kogu kood valmis oli, proovis ta seda testida.

Nagu esimese print lause lõpust on näha, üritab õpilane välja kutsuda funktsiooni sisest muutujat ja see ei õnnestu (joonis 16, rida 2; joonis 17, rida 6).

Pärast tükk aega pusimist jõuab õpilane olukorda, kus funktsiooni sisese muutuja nimi on sama, mis globaalsel muutujal, mille tulemusena Thonny enam välja kutsutut veaks ei viska ja näitab õpilasele tupelt, mis koosneb listist ja float arvust, mille sisu on tõenäoliselt seotud mälus oleva informatsiooni asukohaga.

Õpilaste, kes olid varem programmeerimisega kokku puutunud või omandasid väga heal tasemel teadmised, puhul oli raske eristada lahendusstiile, kuna tihtilugu kulges lahendusprotsess ilma vigadeta ja otseselt vahepealne käivitamine ja testimine ei olnud vajalik.

Kuna leidus õpilasi, kes kirjutasid koodi täies ulatuses valmis ja testisid ainult lõpus, et kas programm töötab või mitte, on ka mitte jooksvalt testivate õpilaste keskmine käivitamiste arv ainult 8.9 käivitamist ja keskmine vigade arv 4.8, samal ajal kui testijate grupi keskmine käivitamiste arv oli 20.2 ja keskmine vigade arv 9.4.

Tundub, et kui õpilane oskas valmis kirjutada suure osa koodist ja lahendamine ei võtnud üleliia kaua aega, pidi tal olema piisavalt hea arusaam koodikirjutamisest, et veateadete abiga kõik tööle saada.

Äärejuhtumite korral, kui õpilasel kulus üle 3 tunni ülesande lahendamiseks muutus andmete kogumine raskemaks, kuna nende tööde seas oli 57 õpilast, kes testisid kohe algusest peale ja ainult 9 õpilast, kes kirjutasid suurema osa koodist valmis.

Poolt-tarind on võõrapärane vorm, mis jätab lauses tegija tagaplaanile.

##### Näiteks lause „Trahv oli politseiniku poolt tehtud.“ saab paremini kirjutada kas lausena "Trahv oli politseiniku tehtud" või "Politseinik tegi trahvi."

##### Järgnevates lausetes leidub poolt-tarind:

Thonny puhul on väga oluliseks õpetamist parandavaks funktsionaalsuseks see, et Thonny koostab programmi kirjutamise jooksul kasutaja poolt tehtud tegevustest logifaili.

Magistritöödes on uuritud õpilaste käitumismustreid [1] ja bakalaureuse tööde raames on loodud programme, mis analüüsivad logifailide sisu [2] [3] ning ka programme, mis korrastavad logifaile, ehk mis pakib lahti tuntumaid arhiivi formaate ning seob kokku Thonny poolt lahku löödud ülesannete lahendusi [4].

Termin MOOC võeti esimest korda kasutusele Dave Cormieri poolt, kes kasutas seda, et kirjeldada Siemensi ja Downesi „Connectivism and Connective Knowledge“ kursust.

Kõigepealt pakiti lahti õpilaste järjekorranumbriga anonüümseks tehtud zip-fail, mille sees oli iga õpilase poolt esitatud logifailide ülesande lahendus.

Logidest leiab informatsiooni peaaegu iga lahendaja poolt tehtud nupuvajutuse kohta ning need on üles märgitud kasutades programmeerimiskeelest sõltumatut andmevahetusvormingut JSON (inglise keeles JavaScript Object Notation).

Iga loogelise sulu sees on kirjeldatud ühte programmeerija poolt tehtud tegevust.

Kõikides loogelistes sulgudes on tegevuse tüüpi kirjeldav võti „sequence“, mille sisu näitab kasutaja poolt tehtud tegevust (nt Open, , TextInsert, TextDelete, jne) ja aega näitav võti „time“, millele vastab ISO 8601 standardil põhinev ajaväärtus, kus on toodud aeg välja kuni kuue sekundi murdosa näitava numbrini kujul „yyyy-MM-dd’T’HH:mm:ss.

Seejärel kirjutas valmis esimese funktsiooni ja kasutaja poolt sisendi küsimise.

Aga selle asemel üritas ta uuesti arvutuste osa korda saada, korrutades omavahel failist tulnud stringi kujul arvu ja enda poolt lisatud float tüüpi arve.

Öeldistäiteks olev v- või tav- kesksõna võib mõjuda bürokraatlikult.

##### Näiteks „Pakkumine on kehtiv 6 kuud“ saab paremini kirjutada „Pakkumine kehtib kuus kuud“.

##### Järgnevates lausetes leidub olema-kesksõna:

Iga uue programmi puhul on “text_widget_id” erinev, kuid saadud numbriga käib kaasas peamiselt kaks erinevat “text_widget_class” väärtust: “CodeViewText” ja “ShellText”, mis vastavalt kirjeldavad, kas tegu on programmiaknasse või käsureale kirjutatud tekstiga.

Ülesande kirjeldus kodulehel oli järgnev (MOOC Programmeerimise alused, 2018): 8.2 Arvestusülesanne Kohustuslikult tuleb lahendada (8.

3.2.3 Analüüs Iga arvestustöö esitanud tudengi lahendusprotsess oli erinev, kuid siiski tekkisid jooned, mis läbi aegade tunduvad pidavat.

Märgib omaduste või seisundite juhuslikkust, ajutist iseloomu.
Parem on kasutada kindlamat kõneviisi.

##### Näiteks „Põhiliseks eesmärgiks on..." saab paremini kirjutada „Põhiline eesmärk on...“.
Järgnevates lausetes leidub määrus saavas käändes:

Sellest tulenevalt tekib iga aastaga õpilaste kodutööde lahendusprotsessi kohta aina enam uurimist vajavaid materjale, mille abil oleks võimalik muuta tulevaste õpilaste õppimist paremaks.

Thonny puhul on väga oluliseks õpetamist parandavaks funktsionaalsuseks see, et Thonny koostab programmi kirjutamise jooksul kasutaja poolt tehtud tegevustest logifaili.

Praegusel hetkel on e-õppe suurimaks probleemiks see, et õpetajal on võimalik näha ainult õpilaste lõpplahendust.

Redaktorisse koodi sisestamiseks on omakorda kaks võimalust: programmikoodi saab klaviatuurilt sisestada või saab kleepida juba varasemalt kirjutatud koodi.

Näiteks joonisel 1 on „index“ väärtuseks 1.0, mis tähendab, et tegevus toimub esimesel real asukohaga 0.

Teine moodus veateate tuvastamiseks on see, kui tekib kirje, mille „tags“ võtmele vastab „error“ sõne sisaldav väärtus.

Näide funktsiooni juurdekasv rakendamisest Arvestusülesandele sarnane ülesanne koos ühe võimaliku lahendusega võib olla ka abiks mõtete kogumisel.

Seda tüüpi õpilaste peamiseks probleemiks olid samuti objektitüüpide vead, kuid lisaks tehti ka palju vigu süntaksiga, kuna jooksvalt ei testitud kõiki kirjutatud koodijuppe.

Samas üldiselt jõudis sellist tüüpi lahendaja kiiremini õige lahenduseni, kuna koodi täielikuks valmis kirjutamiseks oli vaja ülesandest aru saada ja üle keskmise koodikirjutamise oskust.

Mine-vormi kasutus koos tühiverbiga.

##### Analüüs ei tuvastanud ühtegi nominalisatsiooni mine-vormis.

logifail 48x | Õpilaste lahendusprotsessi analüüsimine Thonny logifailide abil Lühikokkuvõte: Programmeerimise õppimine on protsess, mille puhul õpetajal ei ole võimalik teada, kuidas õpilane oma teadmisi omandab. Thonny on programmeerimiskeskkond, mis salvestab ülesande lahenduskäigu logifaili ning MOOC-i „Programmeerimise alused“ käigus koguti õpilaste arvestusülesannete lahenduskäigu logifailid . Logifailidest on võimalik näha iga õpilase lahendusprotsessi, mille uurimine võib anda õpetajatele täpsemaid juhtnööre õpilaste edaspidiseks õpetamiseks. Võtmesõnad: Thonny, logifailid , Python, õppeprotsess, analüüs, MOOC Sissejuhatus Iga aastaga tuleb maailma juurde uusi tehnoloogilisi lahendusi ning selle tulemusena tekib aina enam eri vanuses inimesi, kes soovivad õppida programmeerima. Thonny puhul on väga oluliseks õpetamist parandavaks funktsionaalsuseks see, et Thonny koostab programmi kirjutamise jooksul kasutaja poolt tehtud tegevustest logifaili . Seega logifailis kajastub informatsiooni kogu ülesande lahenduse käigust ning selle hilisem uurimine annab ülevaate õpilaste lahenduskäikude erinevustest. Varasemalt on Thonny logifailide uurimisel kirjutatud erinevaid bakalaureuse ja magistritöid, mille käigus on loodud uurimist lihtsustavaid programme ja analüüsimise meetodeid. Magistritöödes on uuritud õpilaste käitumismustreid [1] ja bakalaureuse tööde raames on loodud programme, mis analüüsivad logifailide sisu [2] [3] ning ka programme, mis korrastavad logifaile , ehk mis pakib lahti tuntumaid arhiivi formaate ning seob kokku Thonny poolt lahku löödud ülesannete lahendusi [4]. Samuti vaadeldakse programmeerimiskeskkonda Thonny ja varasemaid uuringuid, mille peamine rõhk on just logifailide läbitöötlemisel. Antud olukorra lahendamiseks kogutaksegi lahenduste kohta logifaile , mille uurimisega hakkamegi tegelema. Antud bakalaureusetöö põhineb 2018. aasta MOOC-i „Programmeerimise alused“ arvestustööde logifailide uurimisel, seega tehakse järgnevalt kiirülevaade Tartu Ülikoolis sarnaste MOOC-de kohta. Samuti käsitletakse, millised valikud tehti töödeldavate logifailide leidmiseks. Bakalaureusetöös kasutati Thonny logifaile , mis pärinesid Tartu Ülikooli „Programmeerimise alused“ MOOC-i õpilastelt. Kõik õpilased, kes kasutasid antud ülesande lahendamiseks Thonnyt, pidid esitama logifailid ning ülejäänud õpilastel tuli esitada kirjalik selgitud ülesande raskuse kohta. Analüüsitava tulemuseni jõudmiseks kõigepealt muudeti zip-failid, mis sisaldasid logifaile anonüümsemaks. Seejärel hakati läbi töötama kõiki 789 õpilase logifaile . Selleks, et välja töötada protsessi logifailide läbitöötamiseks, oli tarvis enne tutvuda logifailide sisu ning varasemalt tehtud sarnaste töödega. Algse plaani järgi taheti kasutada varasema aasta jooksul Thonny logifailide läbitöötamise lihtsustamiseks valmistatud programme. Esimene nendest oleks võinud olla V. Tõnissoni bakalaureusetöö raames koostatud programm, mis peaks hõlbustama logifailide läbitöötamist, kus ühes logis on mitme erineva ülesande lahendused. Logifailidest informatsiooni hankimise protsess nägi välja järgnev. Kõigepealt pakiti lahti õpilaste järjekorranumbriga anonüümseks tehtud zip-fail, mille sees oli iga õpilase poolt esitatud logifailide ülesande lahendus. Antud ülesande raames tuli esitada nendel õpilastel, kes arvestusülesande kirjutasid Thonnys, logifailid ning kõikidel teistel tuli esitada tekstifail, milles kirjeldati oma töö tegemise protsessi. Logifailide esitajate lahendused jagunesid peamiselt kolmeks: Inimesed, kes esitasid kõik kursusel tehtud logifailid kokku pakitult Inimesed, kes esitasid oma viimase päeva logifailid kokku pakitult Inimesed, kes esitasid õiged logifailid kokku pakkimata Sellise ebamäärase esitusstiili tõttu läks kõige kauem aega esimese grupi inimeste peale, kuna nende töödest oli kõigepealt vaja üles leida õige sektsioon, kus nad arvestusülesannet lahendasid ning seejärel õige logifail , kus ülesannet alustati. Pärast õigete logifailide välja otsimist tuli leida nendest arvestusülesande lahendusprotsessi algus. Järgmiseks tuli hakata logifaili käsitsi läbi töötama, samal ajal jälgides mitmeid uuritavaid parameetreid. Ning viimane käsitsi jälgitavatest väljadest tuli märkida pärast logifaili täieliku läbitöötamist. Pärast käsitsi analüüsi lõpetamist, pidi läbi töötatud logifaili sisestama varasemalt bakalaureusetööna tehtud analüsaatorisse. (lisada varasemate uurimuste kohta midagi) Logifailide läbi töötamisel oli olulisel kohal õpilaste käitumismustrite jälgimine. Õpilaste lahendusprotsessi analüüs Thonny logifailide põhjal Selles peatükis käsitletakse kõike Thonny logifailidest saadud informatsiooni analüüsimisega seonduvat. Alguses tutvustatakse, millist informatsiooni on võimalik logifailidest kätte saada ning seejärel antakse ülevaade selle uuringu käigus saadud informatsioonist. 3.1 Thonny logifailides sisalduv informatsioon Thonny puhul on tegemist programmeerimiskeskkonnaga, mis kirjutab automaatselt programmeerija ühest lahendusseansist txt-vormingus logifaili . Thonny logifailides sisalduvat informatsiooni on varasemalt käsitletud mitmetes Tartu Ülikooli lõputöödes. Esmalt on sellest kirjutanud Pedel, kes jagas Thonny logifailidest saadava informatsiooni viieks: Thonny programmiaknaga seotud kirjed, programmikoodiga seotud kirjed, failidega seotud kirjed, programme käivitamisega seotud kirjed, käskudega seotud kirjed [2]. 3.1.1 Üldiselt kirjete lugemisest Kuna Thonny kasutab oma logifailide kirjutamisel JSON andmevahetusvormingut, koosneb logifaili sisu loogelistes sulgudes olevatest võti-väärtus paaridest, mis on omavahel eraldatud komadega. Faili loomisega luuakse logifaili uus „NewFile“ tüüpi kirje, milles on tulemusena luuakse uus fail. Töö koosnes kahest osast: esimese osa raames oli ülesanne, mille pidi igaüks lahendama ning teise osa raames tuli lahenduskäigu logifailid esitada. Thonny kasutajad peavad esitama logifaili .
| Thonny on programmeerimiskeskkond, mis salvestab ülesande lahenduskäigu logifaili ning MOOC-i „Programmeerimise alused“ käigus koguti õpilaste arvestusülesannete lahenduskäigu logifailid . Logifailidest on võimalik näha iga õpilase lahendusprotsessi, mille uurimine võib anda õpetajatele täpsemaid juhtnööre õpilaste edaspidiseks õpetamiseks. [...] Võtmesõnad: Thonny, logifailid , Python, õppeprotsess, analüüs, MOOC Sissejuhatus Iga aastaga tuleb maailma juurde uusi tehnoloogilisi lahendusi ning selle tulemusena tekib aina enam eri vanuses inimesi, kes soovivad õppida programmeerima
| Thonny puhul on väga oluliseks õpetamist parandavaks funktsionaalsuseks see, et Thonny koostab programmi kirjutamise jooksul kasutaja poolt tehtud tegevustest logifaili . Seega logifailis kajastub informatsiooni kogu ülesande lahenduse käigust ning selle hilisem uurimine annab ülevaate õpilaste lahenduskäikude erinevustest. Varasemalt on Thonny logifailide uurimisel kirjutatud erinevaid bakalaureuse ja magistritöid, mille käigus on loodud uurimist lihtsustavaid programme ja analüüsimise meetodeid. Magistritöödes on uuritud õpilaste käitumismustreid [1] ja bakalaureuse tööde raames on loodud programme, mis analüüsivad logifailide sisu [2] [3] ning ka programme, mis korrastavad logifaile , ehk mis pakib lahti tuntumaid arhiivi formaate ning seob kokku Thonny poolt lahku löödud ülesannete lahendusi [4].
| Kõik õpilased, kes kasutasid antud ülesande lahendamiseks Thonnyt, pidid esitama logifailid ning ülejäänud õpilastel tuli esitada kirjalik selgitud ülesande raskuse kohta. [...] Analüüsitava tulemuseni jõudmiseks kõigepealt muudeti zip-failid, mis sisaldasid logifaile anonüümsemaks. [...] Seejärel hakati läbi töötama kõiki 789 õpilase logifaile . [...] Selleks, et välja töötada protsessi logifailide läbitöötamiseks, oli tarvis enne tutvuda logifailide sisu ning varasemalt tehtud sarnaste töödega. Algse plaani järgi taheti kasutada varasema aasta jooksul Thonny logifailide läbitöötamise lihtsustamiseks valmistatud programme. Esimene nendest oleks võinud olla V. Tõnissoni bakalaureusetöö raames koostatud programm, mis peaks hõlbustama logifailide läbitöötamist, kus ühes logis on mitme erineva ülesande lahendused
| Logifailidest informatsiooni hankimise protsess nägi välja järgnev. Kõigepealt pakiti lahti õpilaste järjekorranumbriga anonüümseks tehtud zip-fail, mille sees oli iga õpilase poolt esitatud logifailide ülesande lahendus. Antud ülesande raames tuli esitada nendel õpilastel, kes arvestusülesande kirjutasid Thonnys, logifailid ning kõikidel teistel tuli esitada tekstifail, milles kirjeldati oma töö tegemise protsessi. [...] Logifailide esitajate lahendused jagunesid peamiselt kolmeks: Inimesed, kes esitasid kõik kursusel tehtud logifailid kokku pakitult Inimesed, kes esitasid oma viimase päeva logifailid kokku pakitult Inimesed, kes esitasid õiged logifailid kokku pakkimata Sellise ebamäärase esitusstiili tõttu läks kõige kauem aega esimese grupi inimeste peale, kuna nende töödest oli kõigepealt vaja üles leida õige sektsioon, kus nad arvestusülesannet lahendasid ning seejärel õige logifail , kus ülesannet alustati. [...] Pärast õigete logifailide välja otsimist tuli leida nendest arvestusülesande lahendusprotsessi algus
| Õpilaste lahendusprotsessi analüüs Thonny logifailide põhjal Selles peatükis käsitletakse kõike Thonny logifailidest saadud informatsiooni analüüsimisega seonduvat. Alguses tutvustatakse, millist informatsiooni on võimalik logifailidest kätte saada ning seejärel antakse ülevaade selle uuringu käigus saadud informatsioonist. [...] 3.1 Thonny logifailides sisalduv informatsioon Thonny puhul on tegemist programmeerimiskeskkonnaga, mis kirjutab automaatselt programmeerija ühest lahendusseansist txt-vormingus logifaili
veateade 19x | Antud programmi tööks oli välja uurida logis tehtud vigade arv ning nende sisu, käivitamiste arv nii veateatega kui ilma ja kleepimiste arv koos kleebitud teksti sisuga. Nimelt „Sai ülesande lahendatud“ negatiivseks ainult juhtudel, mil õpilane ei saanud lahenduse lõpuks veateadetest lahti. Sealt saadud tulemuste põhjal saime täita järgmised väljad: „Lahendamise aeg“, „Vigade arv“, „Käivitamise kordade arv“, „ Veateatega lõppevaid käivitusi“, „ Veateated “, „Kleepimiste arv“. Samuti jälgiti läbitöötamisel erinevate veateadete esinemist ning need järjestati tüüpide esinemissageduse järgi. 3.1.3 Programmi käivitamisega seotud kirjed Programmi käivitamisega tekivad mitmed erinevad kirjed, mis põhiliselt jagunevad kolmeks: käivitamise kirje, veateade , käsureale kuvatav vastus. Pärast käivitamisprotsessi jaguneb käivitamine kaheks: õnnestunud ja veateatega lõppev. Õnnestunud käivitamise juures veateadet ei teki ning käsureal jooksutatakse programm vastavalt kirjas olevatele juhistele. Samas ebaõnnestunud käivitamise korral, tekib programme jooksutamisel veateade . Töö käigus tuli ette 12 erinevat tüüpi veateadet , kuid logides on nende üldine struktuur väga saranane. Programmi jooksutamisel saame teada, et on esinenud veateade , kui käsureale tekib „TextInsert“ tüüpi kirje, mille võti „tags“ sisaldab „stderr“ sõnet. Veateate sisu on toodud välja viimases JSON kirjes võtmele „text“ vastavas väärtuses. Selles veateates on kaasas oluliste elementidena „text_widget_class“, mis ütleb, et tekst tuleb lisada käsureale ja „index“, mis ütleb kuhu käsureal see minema peab. Teine moodus veateate tuvastamiseks on see, kui tekib kirje, mille „tags“ võtmele vastab „error“ sõne sisaldav väärtus. Veateate keskmiste kirjete puhul on välja toodud täpsemalt vea asukohta täpsustav informatsioon. Samas peamine miinus oli õpilastel objektitüüpide mittetundmine ning tihtilugu pärast vea saamist, läks selle parandamisega kaua aega, kuna ei osatud veateadetega probleemi asukohta määratleda. Seejärel aga selgus, et kirjutatud koodis on vead ning hakkas neid veateadete põhjal ära parandama. Antud õpilane käivitas programmi 239 korda, millest 140 lõppesid veateatega .
| Samas ebaõnnestunud käivitamise korral, tekib programme jooksutamisel veateade . Töö käigus tuli ette 12 erinevat tüüpi veateadet , kuid logides on nende üldine struktuur väga saranane. Programmi jooksutamisel saame teada, et on esinenud veateade , kui käsureale tekib „TextInsert“ tüüpi kirje, mille võti „tags“ sisaldab „stderr“ sõnet. [...] Veateate sisu on toodud välja viimases JSON kirjes võtmele „text“ vastavas väärtuses. [...] Selles veateates on kaasas oluliste elementidena „text_widget_class“, mis ütleb, et tekst tuleb lisada käsureale ja „index“, mis ütleb kuhu käsureal see minema peab. Teine moodus veateate tuvastamiseks on see, kui tekib kirje, mille „tags“ võtmele vastab „error“ sõne sisaldav väärtus
kirje 47x | Esmalt on sellest kirjutanud Pedel, kes jagas Thonny logifailidest saadava informatsiooni viieks: Thonny programmiaknaga seotud kirjed , programmikoodiga seotud kirjed , failidega seotud kirjed , programme käivitamisega seotud kirjed , käskudega seotud kirjed [2]. Pedeli töö käigus tehtud klassifikatsiooni kasutas ka kaks aastat hiljem Meier, kes oma töös jälgis põhiliselt programmikoodi ja käivitamisega seotud kirjeid [1]. Selles bakalaureusetöös süvenetakse Pedeli klassifikatsiooni järgi samuti programmikoodiga seotud kirjetele ja programmi käivitamisega seotud kirjetele , kuid lisaks kasutatakse ka väikesel määral failidega seotud kirjeid . 3.1.1 Üldiselt kirjete lugemisest Kuna Thonny kasutab oma logifailide kirjutamisel JSON andmevahetusvormingut, koosneb logifaili sisu loogelistes sulgudes olevatest võti-väärtus paaridest, mis on omavahel eraldatud komadega. Tänu iga kirje puhul aja märkimisele niivõrd sügavalt, on võimalik logi kirjed panna kronoloogilisse järjekorda, millega omakorda saab kogu kasutaja seansi taasesitada. 3.1.2 Programmikoodiga seotud kirjed Peamised programmikoodiga seotud tegevused jagunevad kaheks: sisestamine ja kustutamine. Programmikoodi käsitsi sisestamise puhul tekib JSON kirje , mille “sequence” väärtus on TextInsert. Antud kirje koosneb 7 võti-väärtus paarist, milles võti “index” näitab teksti sisestamise asukohta kujul reanumber ja elemendi asukoht punktiga eraldatuna. Teksti kleepimisel tekib logisse kaks erinevat JSON tüüpi kirjet . Esimene nendest on TextInsert, mille sisu oleme varasemalt lahti seletanud ning teise kirje võtmele „sequence“ vastab „<>“ ning selle kirje olemasolu puhul saamegi teada, et tegu on kleepimisega. Mõlemad loodud kirjed on omavahel seotud sellega, et nende ajatemplid on täpselt samad. Teine suurem klass kirjeid , mis on seotud programmikoodiga hõlmab teksti kustutamise protsessi. Kustutamise kirjed saab samuti eristada asukoha järgi, ehk siis kirjed , mis sisestatakse programmi tekstialasse ja need, mis sisestatakse käsureale. Vastupidiselt „TextInsert“ kirjega , ei ole tarvis kustutamisel „tags“ välja, kuna programmi töö tulemusena kunagi ühtegi rida ei kustutata. Ülejäänud väljad väärtustatakse sarnaselt „TextInsert“ kirjetele . 3.1.3 Programmi käivitamisega seotud kirjed Programmi käivitamisega tekivad mitmed erinevad kirjed , mis põhiliselt jagunevad kolmeks: käivitamise kirje , veateade, käsureale kuvatav vastus. Kõige esimene kirje , mis tekib programme jooksutamisel on uus TextInsert kirje , mille puhul võtmele “text” vastab asub käivitatava faili asukoht, selle kirjega käib kaasas umbes 6 erinevate programme jooksutamiseks vajalikku JSON kirjet , millest kõige olulisem on viimane programmijupi käivitamise kirje , mida on näha joonisel 6. Programmi jooksutamisel saame teada, et on esinenud veateade, kui käsureale tekib „TextInsert“ tüüpi kirje , mille võti „tags“ sisaldab „stderr“ sõnet. Täpsemalt tekib selliseid kirjeid tervelt 6. Nende kuue kirjega väljastatakse, koht kus viga on esinenud ja veatüüp. Veateate sisu on toodud välja viimases JSON kirjes võtmele „text“ vastavas väärtuses. Teine moodus veateate tuvastamiseks on see, kui tekib kirje , mille „tags“ võtmele vastab „error“ sõne sisaldav väärtus. Selle teatega käib üldiselt kaasas 7 kirjet , millest olulisemad on sarnaselt teiste vigadega, viimane, kus on välja toodud veatüüp (joonis 10), kuid ka abikirjena esimene, kus on välja toodud asukoht (joonis 9). Veateate keskmiste kirjete puhul on välja toodud täpsemalt vea asukohta täpsustav informatsioon. 3.1.4 Failidega seotud kirjed Thonnys on võimalik failidega teha mitmeid erinevaid tegevusi: avada, salvestada, sulgeda. Samas antud töö raames oleme enim huvitatud just failide avamisega seotud kirjetest , kuna selle põhjal saame teada, millisel ajahetkel õpilane alustas antud ülesande lahendamist ja kas ta on kasutanud abiks teisi faile. Faili loomisega luuakse logifaili uus „NewFile“ tüüpi kirje , milles on tulemusena luuakse uus fail. Kirjega käivad kaasas mitmed varasemalt tuntud väljad. Seda kirjet kasutame, et leida üles koht, mil õpilane alustas arvestusülesande lahendamist. Teine failidega seotud kirje on „Open“, mida kasutame, et leida vastet küsimusele, kas õpilane kasutab abiks eraldi faile. Kirjega „Open“ kaasas käiv kõige olulisem võti on „filename“, mis näitab avatava faili asukohta.
| Esmalt on sellest kirjutanud Pedel, kes jagas Thonny logifailidest saadava informatsiooni viieks: Thonny programmiaknaga seotud kirjed , programmikoodiga seotud kirjed , failidega seotud kirjed , programme käivitamisega seotud kirjed , käskudega seotud kirjed [2]. Pedeli töö käigus tehtud klassifikatsiooni kasutas ka kaks aastat hiljem Meier, kes oma töös jälgis põhiliselt programmikoodi ja käivitamisega seotud kirjeid [1]. Selles bakalaureusetöös süvenetakse Pedeli klassifikatsiooni järgi samuti programmikoodiga seotud kirjetele ja programmi käivitamisega seotud kirjetele , kuid lisaks kasutatakse ka väikesel määral failidega seotud kirjeid . 3.1.1 Üldiselt kirjete lugemisest Kuna Thonny kasutab oma logifailide kirjutamisel JSON andmevahetusvormingut, koosneb logifaili sisu loogelistes sulgudes olevatest võti-väärtus paaridest, mis on omavahel eraldatud komadega.
| Teksti kleepimisel tekib logisse kaks erinevat JSON tüüpi kirjet . Esimene nendest on TextInsert, mille sisu oleme varasemalt lahti seletanud ning teise kirje võtmele „sequence“ vastab „<>“ ning selle kirje olemasolu puhul saamegi teada, et tegu on kleepimisega. Mõlemad loodud kirjed on omavahel seotud sellega, et nende ajatemplid on täpselt samad. Teine suurem klass kirjeid , mis on seotud programmikoodiga hõlmab teksti kustutamise protsessi. Kustutamise kirjed saab samuti eristada asukoha järgi, ehk siis kirjed , mis sisestatakse programmi tekstialasse ja need, mis sisestatakse käsureale. Vastupidiselt „TextInsert“ kirjega , ei ole tarvis kustutamisel „tags“ välja, kuna programmi töö tulemusena kunagi ühtegi rida ei kustutata.
| Ülejäänud väljad väärtustatakse sarnaselt „TextInsert“ kirjetele . 3.1.3 Programmi käivitamisega seotud kirjed Programmi käivitamisega tekivad mitmed erinevad kirjed , mis põhiliselt jagunevad kolmeks: käivitamise kirje , veateade, käsureale kuvatav vastus. [...] Kõige esimene kirje , mis tekib programme jooksutamisel on uus TextInsert kirje , mille puhul võtmele “text” vastab asub käivitatava faili asukoht, selle kirjega käib kaasas umbes 6 erinevate programme jooksutamiseks vajalikku JSON kirjet , millest kõige olulisem on viimane programmijupi käivitamise kirje , mida on näha joonisel 6
| Programmi jooksutamisel saame teada, et on esinenud veateade, kui käsureale tekib „TextInsert“ tüüpi kirje , mille võti „tags“ sisaldab „stderr“ sõnet. Täpsemalt tekib selliseid kirjeid tervelt 6. Nende kuue kirjega väljastatakse, koht kus viga on esinenud ja veatüüp. Veateate sisu on toodud välja viimases JSON kirjes võtmele „text“ vastavas väärtuses.
| 3.1.4 Failidega seotud kirjed Thonnys on võimalik failidega teha mitmeid erinevaid tegevusi: avada, salvestada, sulgeda. Samas antud töö raames oleme enim huvitatud just failide avamisega seotud kirjetest , kuna selle põhjal saame teada, millisel ajahetkel õpilane alustas antud ülesande lahendamist ja kas ta on kasutanud abiks teisi faile. Faili loomisega luuakse logifaili uus „NewFile“ tüüpi kirje , milles on tulemusena luuakse uus fail. Kirjega käivad kaasas mitmed varasemalt tuntud väljad. Seda kirjet kasutame, et leida üles koht, mil õpilane alustas arvestusülesande lahendamist. Teine failidega seotud kirje on „Open“, mida kasutame, et leida vastet küsimusele, kas õpilane kasutab abiks eraldi faile. [...] Kirjega „Open“ kaasas käiv kõige olulisem võti on „filename“, mis näitab avatava faili asukohta. Pärast faili avamist, tekib logisse „TextDelete“ ja „TextInsert“ kirjete kombinatsioon, mille tulemusena sisestatakse programmi faili sisu
käsurida 14x | Iga uue programmi puhul on “text_widget_id” erinev, kuid saadud numbriga käib kaasas peamiselt kaks erinevat “text_widget_class” väärtust: “CodeViewText” ja “ShellText”, mis vastavalt kirjeldavad, kas tegu on programmiaknasse või käsureale kirjutatud tekstiga. Võtme „tags“ väärtus on oluline, kui väärtus sisestatakse käsureale . Nimelt jagunevad käsureale sisestatud andmed kaheks, need mille sisestab kasutaja „stdin“ ja need mille sisestab programm ise, pärast seda kui kasutaja oma programmi jooksutab „stdout“. Kustutamise kirjed saab samuti eristada asukoha järgi, ehk siis kirjed, mis sisestatakse programmi tekstialasse ja need, mis sisestatakse käsureale . 3.1.3 Programmi käivitamisega seotud kirjed Programmi käivitamisega tekivad mitmed erinevad kirjed, mis põhiliselt jagunevad kolmeks: käivitamise kirje, veateade, käsureale kuvatav vastus. Õnnestunud käivitamise juures veateadet ei teki ning käsureal jooksutatakse programm vastavalt kirjas olevatele juhistele. Õnnestunud käivitamise lõpetab käsureale teksti “>>>” sisestamine, kuna tegu on tekstiga, mis on Thonny käsurea alguses juhul, kui programm on ootel. Programmi jooksutamisel saame teada, et on esinenud veateade, kui käsureale tekib „TextInsert“ tüüpi kirje, mille võti „tags“ sisaldab „stderr“ sõnet. Selles veateates on kaasas oluliste elementidena „text_widget_class“, mis ütleb, et tekst tuleb lisada käsureale ja „index“, mis ütleb kuhu käsureal see minema peab. Thonny nagu ka enamik teisi redaktoreid kirjutab saadud vastuse käsureale . Sellise kirjutamise puhul on tegu alampeatükis 3.1.2 käsitletud „TextInsert“ käsuga, mille puhul „text_widget_class“ on „ShellText“ ehk kirjutatakse käsureale ja võtmele „tags“ vastab „stdout“, ehk kirjutatu tuleb programmist endast.
| Õnnestunud käivitamise juures veateadet ei teki ning käsureal jooksutatakse programm vastavalt kirjas olevatele juhistele. Õnnestunud käivitamise lõpetab käsureale teksti “>>>” sisestamine, kuna tegu on tekstiga, mis on Thonny käsurea alguses juhul, kui programm on ootel. [...] Programmi jooksutamisel saame teada, et on esinenud veateade, kui käsureale tekib „TextInsert“ tüüpi kirje, mille võti „tags“ sisaldab „stderr“ sõnet
varasemalt 13x | Varasemalt on Thonny logifailide uurimisel kirjutatud erinevaid bakalaureuse ja magistritöid, mille käigus on loodud uurimist lihtsustavaid programme ja analüüsimise meetodeid. Uurimistöös analüüsitakse varasemate uurimistööde baasil 2018. aasta MOOC-i „Programmeerimise alused“ õppijate arvestusülesande lahendusprotsessi, mille korrastamiseks ja analüüsimiseks kasutatakse varasemalt loodud programme [3] [4] ja täiendame neid vastavalt vajadusele. Õpilaste protsessi grupeerimiseks kasutame varasemalt magistritöö käigus loodud grupeerimisaluseid [1]. Selleks, et välja töötada protsessi logifailide läbitöötamiseks, oli tarvis enne tutvuda logifailide sisu ning varasemalt tehtud sarnaste töödega. Pärast käsitsi analüüsi lõpetamist, pidi läbi töötatud logifaili sisestama varasemalt bakalaureusetööna tehtud analüsaatorisse. Thonny logifailides sisalduvat informatsiooni on varasemalt käsitletud mitmetes Tartu Ülikooli lõputöödes. Redaktorisse koodi sisestamiseks on omakorda kaks võimalust: programmikoodi saab klaviatuurilt sisestada või saab kleepida juba varasemalt kirjutatud koodi. Esimene nendest on TextInsert, mille sisu oleme varasemalt lahti seletanud ning teise kirje võtmele „sequence“ vastab „<>“ ning selle kirje olemasolu puhul saamegi teada, et tegu on kleepimisega. Kirjega käivad kaasas mitmed varasemalt tuntud väljad. Kuid nagu varasemalt mainitust võis eeldada, sai lahendaja kohe süntaksi vea. Uuesti avamisel tekkis sama võrdluse viga nagu varasemalt mainitud. Nüüd avab õpilane varasemalt tehtud ülesandeid, et oma veast aru saada.
programmikood 8x | Esmalt on sellest kirjutanud Pedel, kes jagas Thonny logifailidest saadava informatsiooni viieks: Thonny programmiaknaga seotud kirjed, programmikoodiga seotud kirjed, failidega seotud kirjed, programme käivitamisega seotud kirjed, käskudega seotud kirjed [2]. Pedeli töö käigus tehtud klassifikatsiooni kasutas ka kaks aastat hiljem Meier, kes oma töös jälgis põhiliselt programmikoodi ja käivitamisega seotud kirjeid [1]. Selles bakalaureusetöös süvenetakse Pedeli klassifikatsiooni järgi samuti programmikoodiga seotud kirjetele ja programmi käivitamisega seotud kirjetele, kuid lisaks kasutatakse ka väikesel määral failidega seotud kirjeid. 3.1.2 Programmikoodiga seotud kirjed Peamised programmikoodiga seotud tegevused jagunevad kaheks: sisestamine ja kustutamine. Redaktorisse koodi sisestamiseks on omakorda kaks võimalust: programmikoodi saab klaviatuurilt sisestada või saab kleepida juba varasemalt kirjutatud koodi. Programmikoodi käsitsi sisestamise puhul tekib JSON kirje, mille “sequence” väärtus on TextInsert.
| 3.1.2 Programmikoodiga seotud kirjed Peamised programmikoodiga seotud tegevused jagunevad kaheks: sisestamine ja kustutamine. Redaktorisse koodi sisestamiseks on omakorda kaks võimalust: programmikoodi saab klaviatuurilt sisestada või saab kleepida juba varasemalt kirjutatud koodi. Programmikoodi käsitsi sisestamise puhul tekib JSON kirje, mille “sequence” väärtus on TextInsert.
silur 7x | Teine väljade kombinatsioon, mida ülesande lahenduse käsitsi läbitöötamisel jälgima pidi oli õpilase siluri ja teiste ülesannete abiks kasutamine. Kui ükskõik millisel hetkel õpilane kasutas siluri nuppu, muutus antud töö puhul tõeseks „Kasutas silurit “ väli, seda isegi juhtudel kui silurit ei kasutatud otstarbekal eesmärgil või mingi kogemata vale nupu pihta. Antud lahendusviisiga käis kaasas ka teiste failide avamine ning siluri kasutamine. Edasi liigub õpilane siluri kasutamise juurde, mille abil ta saab aru, et funktsioon on valesti esile kutsutud, kuid parandamiseks jätab ta siiski funktsiooni parameetriks muutuja metsatüki_juurdekasv.
| Teine väljade kombinatsioon, mida ülesande lahenduse käsitsi läbitöötamisel jälgima pidi oli õpilase siluri ja teiste ülesannete abiks kasutamine. Kui ükskõik millisel hetkel õpilane kasutas siluri nuppu, muutus antud töö puhul tõeseks „Kasutas silurit “ väli, seda isegi juhtudel kui silurit ei kasutatud otstarbekal eesmärgil või mingi kogemata vale nupu pihta.
logi 12x | Uuritavad logid on MOOC-i arvestusülesanne 8.1 lahendused. Kokku oli uurimise all 789 õpilase logid . Kuid kuna ühe logi läbitöötamisele kulus umbes 10 minutit aega, siis vähendati töö käigus läbitöötatud faile poole võrra. Esimene nendest oleks võinud olla V. Tõnissoni bakalaureusetöö raames koostatud programm, mis peaks hõlbustama logifailide läbitöötamist, kus ühes logis on mitme erineva ülesande lahendused. Antud programmi tööks oli välja uurida logis tehtud vigade arv ning nende sisu, käivitamiste arv nii veateatega kui ilma ja kleepimiste arv koos kleebitud teksti sisuga. Selle leidmiseks tuli käsitsi läbi töötada mitu logi enne, kui oli võimalik kindlaks teha, kust lahendusprotsess alguse sai. Logidest leiab informatsiooni peaaegu iga lahendaja poolt tehtud nupuvajutuse kohta ning need on üles märgitud kasutades programmeerimiskeelest sõltumatut andmevahetusvormingut JSON (inglise keeles JavaScript Object Notation). Tänu iga kirje puhul aja märkimisele niivõrd sügavalt, on võimalik logi kirjed panna kronoloogilisse järjekorda, millega omakorda saab kogu kasutaja seansi taasesitada. Teksti kleepimisel tekib logisse kaks erinevat JSON tüüpi kirjet. Töö käigus tuli ette 12 erinevat tüüpi veateadet, kuid logides on nende üldine struktuur väga saranane. Täpsem programmi töö logides ei kajastu.