Lõputöö analüsaator

Tekstianalüüsi tulemused

Lausete arv: 356 - Sõnade arv: 5318

Analüüsiks kulunud aeg: 160.036 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.


Minu
Avage Minu Arvuti/My Computer.


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:

TARTU ÜLIKOOL Arvutiteaduse instituut Informaatika õppekava Sten Vaher Õpilaste lahendusprotsessi analüüsimine Thonny logifailide abil Bakalaureusetöö (9 EAP) Juhendaja: Heidi Meier, MSc   Õ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.


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.

Analüüsi tulemused on kujul:

Osalause, mille ette läheb koma

Originaallause

Järgnevates lausetes võib olla puuduv koma:

oli see moment,

Põhiline asi, mida töö tegemise juures jälgiti oli see moment, mil esimest korda testiti oma programmi tööd.


oli õpilase siluri ja teiste ülesannete abiks kasutamine.

Teine väljade kombinatsioon, mida ülesande lahenduse käsitsi läbitöötamisel jälgima pidi oli õpilase siluri ja teiste ülesannete abiks kasutamine.


kui silurit ei kasutatud otstarbekal eesmärgil või mingi kogemata vale nupu pihta.

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.


kui arvestusülesannet lahendati mitmes failis)

Samas välja „Kasutas abiks eelnevat ülesannet“ tõeseks muutmiseks pidi õpilane avama mõne muu faili, milles oli varasem informatsioon mõne teise ülesande lahendusega (kirja ei läinud need juhul kui arvestusülesannet lahendati mitmes failis).


teatavad erinevused,

Kuna siiski liigitusprotsessis olid teatavad erinevused, ei saa neid võrrelda üks-ühele.


mille sisestab kasutaja ja

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“.


asub käivitatava faili asukoht,

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.


kas arv on suurem kui tekst.

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.


kuhu käsureal see minema peab.

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.

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.

txt sisu: 0.9 3.78 2.05 1.58 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
51x

TARTU ÜLIKOOL Arvutiteaduse instituut Informaatika õppekava Sten Vaher Õpilaste lahendusprotsessi analüüsimine Thonny logifailide abil Bakalaureusetöö (9 EAP) Juhendaja: Heidi Meier, MSc   Õ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 CERCS: Analysis of student learning process using Thonny log files Abstract: The process of studying programming is a process at which the teachers are unable to know how the student acquires their knowledge.

Õpilaste lahendusprotsessi analüüs Thonny logifailide põhjal 9 3.1 Thonny logifailides sisalduv informatsioon 9 3.1.1 Üldiselt kirjete lugemisest 9 3.1.2 Programmikoodiga seotud kirjed 9 3.1.3 Programmi käivitamisega seotud kirjed 11 3.1.4 Failidega seotud kirjed 13 3.2 Õpilaste lahendusprotsessi analüüs 14 3.2.1 Ülesande püstitus 14 3.2.2 Põhilised lahendusprotsessid 17 3.2.3 Analüüs 21 3.3 Muutused, mida tulevikus võiks teha 21 Kokkuvõte 22 Viidatud kirjandus 23 Lisad 24 I. Terminid 24 II.

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. Uuringu käigus … Võtmesõnad: Thonny, logifailid , Python, õppeprotsess, analüüs, MOOC CERCS: Analysis of student learning process using Thonny log files Abstract: The process of studying programming is a process at which the teachers are unable to know how the student acquires their knowledge.

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. Viimased selgitused antud töö raames vaatluse alla ei läinud. Analüüsitava tulemuseni jõudmiseks kõigepealt muudeti zip-failid, mis sisaldasid logifaile anonüümsemaks. See tähendab, et õpilaste nimed asendati andmetes järjekorranumbriga. Seejärel hakati läbi töötama kõiki 789 õpilase logifaile . 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. Seega lõplikus tulemis olid kõik paarituarvulise järjekorranumbriga tudengid. 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. Viimaseid tekstifaile antud töö raames läbi ei uuritud. 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 kiirem oli kolmanda grupi esitatud tööde läbitöötamine, samas nende seas oli ka kõige rohkem selliseid inimesi, kes esitasid ainult viimase poole oma tehtud ülesandest. 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. Pärast analüüsi pakutakse välja võimalusi, kuidas edaspidi uurimisega edasi liikuda. 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.

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 .

Testis jooksvalt Ei testinud jooksvalt Koos Töid 190 119 309 Keskmine vigade arv 33.342 10.252 24.450 Keskmine lahendusaeg 2:51:06 1:14:30 2:13:54 Testis jooksvalt(%) - - - Kasutas silurit (%) 32.63% 15.13% 25.89% Sai ülesande lahendatud (%) 97.37% 100.00% 98.38% Kasutas teist ülesannet (%) 51.05% 17.65% 38.19% Kirjutas suurte juppide kaupa (%) 10.00% 99.16% 44.34% Keskmine käivitamiskordade arv 57.316 17.571 42.010 Keskmine veateatega lõppevate käivitamiste arv 31.468 9.790 23.120 Keskmine kleepimiste arv 14.563 5.546 11.091 Kõige suurem erinevus jooksvalt testimise ja mittetestimise vahel tuli välja keskmise käivitamise kordade vahel.

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.

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. 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. 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. 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
51x

Õpilaste lahendusprotsessi analüüs Thonny logifailide põhjal 9 3.1 Thonny logifailides sisalduv informatsioon 9 3.1.1 Üldiselt kirjete lugemisest 9 3.1.2 Programmikoodiga seotud kirjed 9 3.1.3 Programmi käivitamisega seotud kirjed 11 3.1.4 Failidega seotud kirjed 13 3.2 Õpilaste lahendusprotsessi analüüs 14 3.2.1 Ülesande püstitus 14 3.2.2 Põhilised lahendusprotsessid 17 3.2.3 Analüüs 21 3.3 Muutused, mida tulevikus võiks teha 21 Kokkuvõte 22 Viidatud kirjandus 23 Lisad 24 I. Terminid 24 II.

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.

Õpilaste lahendusprotsessi analüüs Thonny logifailide põhjal 9 3.1 Thonny logifailides sisalduv informatsioon 9 3.1.1 Üldiselt kirjete lugemisest 9 3.1.2 Programmikoodiga seotud kirjed 9 3.1.3 Programmi käivitamisega seotud kirjed 11 3.1.4 Failidega seotud kirjed 13 3.2 Õpilaste lahendusprotsessi analüüs 14 3.2.1 Ülesande püstitus 14 3.2.2 Põhilised lahendusprotsessid 17 3.2.3 Analüüs 21 3.3 Muutused, mida tulevikus võiks teha 21 Kokkuvõte 22 Viidatud kirjandus 23 Lisad 24 I. Terminid 24 II.

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äesolevas alapeatükis käsitleme kõiki kolme. 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. Kui õpilane avab faili, mis sisaldab mõne varasema ülesande lahendust, saamegi antud välja tõeseks märkida. 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.

logi
20x

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.

Pärast faili avamist, tekib logisse „TextDelete“ ja „TextInsert“ kirjete kombinatsioon, mille tulemusena sisestatakse programmi faili sisu.

Kui Thonny on avatud, siis pange see kinni (siis tekib viimane logi ).

Sealt valige logid , mille failinimi on seotud antud ülesandega.

Kui Thonny on avatud, siis pange see kinni (siis tekib viimane logi ).

Tools&#39;i alt leiate Export usage logs, mis pakib logid zip-failiks kokku.

Kui Thonny on avatud, siis pange see kinni (siis tekib viimane logi ).

thonny kaust sisaldab kausta User_logs, kuhu on salvestatud Thonny logid .. 7.

Sealt valige logid , mille failinimi on seotud antud ülesandega.

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. 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.

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
9x

Õpilaste lahendusprotsessi analüüs Thonny logifailide põhjal 9 3.1 Thonny logifailides sisalduv informatsioon 9 3.1.1 Üldiselt kirjete lugemisest 9 3.1.2 Programmikoodiga seotud kirjed 9 3.1.3 Programmi käivitamisega seotud kirjed 11 3.1.4 Failidega seotud kirjed 13 3.2 Õpilaste lahendusprotsessi analüüs 14 3.2.1 Ülesande püstitus 14 3.2.2 Põhilised lahendusprotsessid 17 3.2.3 Analüüs 21 3.3 Muutused, mida tulevikus võiks teha 21 Kokkuvõte 22 Viidatud kirjandus 23 Lisad 24 I. Terminid 24 II.

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.

jooksva
13x

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.

Õpilased, kes testisid jooksvalt , alustasid oma testimist enne for-tsükli kirjutamist, ehk siis funktsiooni või faili sisse lugemise ajal.

Allolevas tabelis on näha uuritavate parameetrite tulemusi õpilaste vahel, kes alustasid testimist ülesande alguses ja jätkasid jooksvalt ja nende vahel, kes alustasid testimist hiljem.

Testis jooksvalt Ei testinud jooksvalt Koos Töid 190 119 309 Keskmine vigade arv 33.342 10.252 24.450 Keskmine lahendusaeg 2:51:06 1:14:30 2:13:54 Testis jooksvalt (%) - - - Kasutas silurit (%) 32.63% 15.13% 25.89% Sai ülesande lahendatud (%) 97.37% 100.00% 98.38% Kasutas teist ülesannet (%) 51.05% 17.65% 38.19% Kirjutas suurte juppide kaupa (%) 10.00% 99.16% 44.34% Keskmine käivitamiskordade arv 57.316 17.571 42.010 Keskmine veateatega lõppevate käivitamiste arv 31.468 9.790 23.120 Keskmine kleepimiste arv 14.563 5.546 11.091 Kõige suurem erinevus jooksvalt testimise ja mittetestimise vahel tuli välja keskmise käivitamise kordade vahel.

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.

Samas jooksvalt testimise korral tegid ka õpilased rohkem vigu, kuna tõenäoliselt ei keskendunud nad enam piisavalt koodi sisule.

Õpilased, kes testisid jooksvalt , alustasid oma testimist enne for-tsükli kirjutamist, ehk siis funktsiooni või faili sisse lugemise ajal. Allolevas tabelis on näha uuritavate parameetrite tulemusi õpilaste vahel, kes alustasid testimist ülesande alguses ja jätkasid jooksvalt ja nende vahel, kes alustasid testimist hiljem. Testis jooksvalt Ei testinud jooksvalt Koos Töid 190 119 309 Keskmine vigade arv 33.342 10.252 24.450 Keskmine lahendusaeg 2:51:06 1:14:30 2:13:54 Testis jooksvalt (%) - - - Kasutas silurit (%) 32.63% 15.13% 25.89% Sai ülesande lahendatud (%) 97.37% 100.00% 98.38% Kasutas teist ülesannet (%) 51.05% 17.65% 38.19% Kirjutas suurte juppide kaupa (%) 10.00% 99.16% 44.34% Keskmine käivitamiskordade arv 57.316 17.571 42.010 Keskmine veateatega lõppevate käivitamiste arv 31.468 9.790 23.120 Keskmine kleepimiste arv 14.563 5.546 11.091 Kõige suurem erinevus jooksvalt testimise ja mittetestimise vahel tuli välja keskmise käivitamise kordade vahel.

Testis jooskvalt <1h Ei testinud jooksvalt <1h Testis jooksvalt <3h Ei testinud jooksvalt <3h Testis jooksvalt >3h Ei testi jooksvalt >3 Töid 50 73 83 37 57 9 Keskmine vigade arv 9.440 4.808 24.120 15.027 67.737 34.778 Keskmine lahendusaeg 0:39:54 0:32:57 1:53:19 1:38:28 6:10:19 5:13:00 Testis jooksvalt(%) 100.00% 0.00% 100.00% 0.00% 100.00% 0.00% Kasutas silurit (%) 20.00% 4.11% 33.73% 13.25% 42.11% 5.48% Sai ülesande lahendatud (%) 100.00% 100.00% 97.59% 44.58% 94.74% 12.33% Kasutas teist ülesannet (%) 26.00% 6.85% 48.19% 13.25% 77.19% 6.85% Kirjutas suurte juppide kaupa (%) 22.00% 100.00% 2.41% 43.37% 10.53% 12.33% Keskmine käivitamiskordade arv 20.220 8.932 43.807 25.081 33.342 56.778 Keskmine veateatega lõppevate käivitamiste arv 8.580 4.603 22.422 13.730 33.342 35.667 Keskmine kleepimiste arv 5.200 3.233 11.590 8.703 34.475 11.333 3.3 Muutused, mida tulevikus võiks teha Kokkuvõte Viidatud kirjandus [1] H. Meier, „Õppijate käitumismustrid programmeerimisülesande lahendamisel: logifailide analüüs,“ Tartu Ülikool, Tartu, 2018.