• Keine Ergebnisse gefunden

6. Tehniline teostus

6.2 Antud lõputöö käigus valminud süsteem

Käesolevas peatükis antakse täpsem ülevaade sellest, kuidas valmis süsteem 2017. aasta kursuse „Programmeerimise alused“ jaoks, kuidas see töötab ning milliseid tehnoloogiaid selle valmistamisel kasutati.

Graafilise väljundiga ülesannete käsitsi hindamine on muutunud suureks väljakutseks, kuna see on aeganõudev tegevus. Lisaks koodi hindamisele tuleb hinnata ka graafilist väljundit.

Tänu masinõppe kiirele arengule on saadaval mitmeid teenusepakkujaid, kes võimaldavad kiiret ning usaldusväärset pildituvastusteenust (vt peatükk 4).

Uue teenuse väljatöötamiseks oli autoril tarvis teha järgmised tegevused:

 analüüsida varem kasutusel olnud hindamismetoodikat;

 koguda kokku eelmisel korral esitatud kursusel osalejate lahendused;

 analüüsida ning valida pildituvastamise teenusepakkuja;

 Rakendad/teostada uus süsteem;

 katsetada uut süsteemi eelnevalt kokku kogutud lahenduste peal.

Uue süsteemi loomise protsess algas varem kasutatud hindamismetoodika ning eelmisel kursusel esitatud lahenduste analüüsiga. Esimene probleem, millele tuli leida lahendus, oli tööde esitamiseks kasutusel olnud foorum. Foorumi kasutamisega seotud negatiivsed küljed on mainitud peatükis 3 ning 4. Esitatud lahendusi analüüsides tekkis lõputöö autoril idee genereerida esitatud lahenduse koodist automaatselt pildifail. Sel juhul ei oleks tarvis kursusel osalejal pildifaili kaasa laadida ning poleks ohtu, et pildil on lisaks soovitud väljundile ka muid elemente. Lisaks tagaks see võimaluse koodi kompileerida ning välistaks variandi, et esitatud pilt ning kood pole vastavuses. Enne uue süsteemi rakendamist oli tarvis valida pildituvastamise teenusepakkuja (vt peatükk 4). Pärast sobiva teenusepakkuja väljavalimist oli seda vaja katsetada. Teenuse kiirust, töökindlust ning sobivust katsetati eelmisel kursusel esitatud lahenduste peal.

36

Graafilise väljundiga ülesanded on kasutusel MOOCis „Programmeerimise alused“.

Ülesanded asuvad vabavaralises õpikeskkonnas nimega Moodle (Modular Object-Oriented Dynamic Learning Environment) [31]. Programmeerimise ülesanded on loodud ning hinnatud kasutades VPLi (Virtual Programming Lab) [32]. VPL võimaldab ülesande loojal defineerida testjuhud iga ülesande jaoks, millel on kasutatud sisendit ning eeldatud väljundit. Lisaks on VPLiga võimalik luua tagasisideteateid vastavalt defineeritud erijuhtudele. Pärast lahenduse esitamist Moodle’isse saadetakse see VPL execution server’isse, mis on paigaldatud ühte ülikooli virtuaalmasinasse. Iga kord, kui kursusel osaleja lahendus virtuaalmasinasse saadetakse, luuakse ohutuse tagamiseks virtuaalmasinas uus ajutine liivakast [28].

Kursusel osalejad peavad kasutama graafilise väljundi loomiseks Pythoni teeki nimega Tkinter. Koodi korrektsust kontrollitakse Pythoni abstraktseid süntaksipuid (AST) kasutades [33]. Pärast koodi verifitseerimist nimetatakse esitatud lahendusfail ümber, et vältida probleeme, mis võivad tekkida faili nimes eri sümboleid kasutades. Selleks, et virtuaalmasinas esitatud lahenduskoodiga kõiksugu toiminguid teha (nt käivitada), vajab Tkinteri teek ekraani. Ekraani ühenduse simuleerimiseks virtuaalmasinaga oli tarvis virtuaalmasinasse paigaldada ekraani server nimega Xvfb. Selle tulemusena arvas virtuaalmasina operatsioonisüsteem, et ekraan on ühendatud, kuid tegelikult toimusid kõik graafilised toimingud mälus [34].

Korrektse lahenduse korral oli tarvis esitatud koodi manipuleerida. Täpsemini oli sinna vaja lisada teatud koodilõik, et genereerida esitatud lahendusest pildifail. Pärast lahenduse manipuleerimist oli sellest võimalik tekitada PostScript (.ps) fail. Kasutades tarkvara nimega GhostScript teisendati PostScript fail .JPG või .PNG pildifailiks [26]. Üheks GhostScripti omaduseks ongi nimelt PostScript failide teisendamine rasterpildiks (png, tiff, jpg jne). Pildifail saadeti seejärel Clarifai pildituvastusteenusele, kasutades selleks nende rakendusliidest [18]. Pildifailile lisatakse kaasa ka märksõna, mis esindab konkreetset objekti, mida on vaja antud pildilt tuvastada. Näiteks: kui lahendatud ülesandeks oli maja joonistamine, siis sellisel juhul kaasatakse lahendusest genereeritud pildile märksõna

„maja“. Clarifai vastab seejärel, kasutades selleks JSON formaati, milles sisaldub arvuline tõenäosus, et pildiga kaasa saadetud märksõna eksisteerib pildil. Lahendused, mis said tulemuseks kõrgema tõenäosuse kui 0.7, said hindeks „arvestatud“. Antud number valiti kursuse läbiviijate poolt, katsetades süsteemi eelmise aasta lahenduste peal ning tuginedes kogemusele. Tulevikus on võimalik lävendit, millega kursusel osaleja ülesande sooritatud

37

saab, vastavalt vajadusel jooksvalt muuta, kuid lävendit alla 0.7 langetada ei ole soovituslik, kuna selle tagajärjel kasvab valepositiivsete tulemuste hulk. Kursusel osalejad, kes said esitatud lahenduse tulemuseks madalama skoori kui 0.7, said tagasisideks vastava teate tulemusega ning soovituse esitatud lahendusele lisada detaile või jääda ootama käsitsi hindamist. Kõik tööd, mis ei saanud automaatset arvestust, vaadati kursuse läbiviijate poolt käsitsi üle ning sobivuse korral said ka algselt „mittearvestatud“ lahendused hindeks

„arvestatud“. Lahenduste esitamise arv ei olnud piiratud, et kursusel osalejad saaksid soovi korral oma lahendust parandada (vt Joonis 15).

Joonis 15. Kursusel osaleja lahendus, mis ei läbinud automaatset hindamist.

Selleks, et kursusel osaleja esitatud töö saaks hinnatud, on tarvis teha järgnevad toimingud:

1. Kursusel osaleja esitab oma lahenduse (koodi) Moodle kaudu.

2. Lahendus saadetakse VPL Execution Serverisse.

3. Lahendust analüüsitakse Pythoni ASTga.

4. Lahendusfail nimetatakse ümber.

5. Lahendusfaili muudetakse, lisades sinna spetsiifiline kood.

6. Lahendusest genereeritakse PostScript fail.

7. Genereeritud PostScript fail teisendatakse pildifailiks.

8. Pildifail saadetakse koos märksõnaga Clarifai teenusele.

9. Clarifai vastab tõenäosusprotsendiga.

10. Kursusel osaleja saab vastavalt tõenäosusele hindeks kas „arvestatud“ või

„mittearvestatud“.

Selleks, et kursusel osalejad saaksid üksteisega oma lahendusi jagada, loodi spetsiaalne foorum. Foorumisse on võimalik üles laadida nii kood kui ka graafiline väljund, mis nende koodist tekib. Foorumisse lahenduse postitamine ei olnud kohustuslik, kuid vajalik selleks, et teiste lahendusi näha.

38 7.

Riskid

Käesoleva lõputöö käigus valminud lahenduse juures esinevad ka teatud riskid. Kuna pildituvastamise jaoks kasutatakse välist teenusepakkujat, siis esimeseks riskiks on see, et teenusepakkuja ei teavita teenuse kasutajaid olulistest muudatustest või ei jõua see info mingil põhjusel teenuse kasutajani. Selline olukord võib tekkida näiteks siis, kui teenusepakkuja otsustab enda API struktuuri muuta. Selline muudatus tähendaks automaatselt seda, et ka antud magistritöös valminud lahendus oleks vaja ümber teha.

Teine risk on samuti seotud teenusepakkujaga. On võimalik, et valitud teenusepakkuja lõpetab töö. Põhjuseid võib olla mitmeid: pankrot, klientide vähene huvi, teenuse vajaduse puudumine või lõppemine. Sellise olukorra tekkimisel oleks tarvis uus teenusepakkuja leida, mis võib aga osutuda keeruliseks, kuna eelnevalt tehtud analüüsi põhjal ei leidunud praegu Clarifaile ühtegi võrdväärset alternatiivi. Uue teenusepakkuja valimine tähendaks omakorda valminud lahenduse ümbertegemist või isegi uuesti tegemist.

Kolmas risk on seotud hetkel kasutusel oleva teenusepakkujaga teenuse hinnaga. Praegu on võimalik kasutada teenust iga kuu 5000 päringu piires tasuta. Piirangu ületamisel tuleb maksta. Kuul, mil teenust kasutati, tehti kokku alla 5000 päringu, mis tähendab, et sel korral oli teenuse kasutamine täiesti tasuta. Kui aga teenusepakkuja peaks otsustama tasuta päringute hulka vähendada või sootuks kaotada, tuleb hakata teenuse eest maksma.

Probleem võib ilmneda juba siis, kui valminud lahendus võetakse kasutusele rohkematel kursustel – see tähendab automaatselt rohkem päringuid.

Neljas risk on osaliselt ka lõputöös valminud süsteemi puudujääk. Nimelt ei kontrollita kursusel osalejate lahendustes erinevate värvide kasutamist (nendes ülesannetes, kus nõutud). See tähendab, et osalejad saavad potentsiaalselt hindeks „arvestatud“, kui nad kasutavad vaid kahte värvi: must kujund valgel taustal. Tulevikus on seda riski lihtne vältida täiustades veidi automaatkontrolli ning see aitaks omakorda teha kindlaks, et kursusel osalejad on täitnud kõik ülesannetes esitatud tingimused.

Risk, millele selles lõputöös erilist tähelepanu ei pöörata, on plagiaadid. See on võrdlemisi suur probleem, millega MOOCide raames väga palju ei tegelda. Lahendusi kontrollitakse enamasti automaatselt, mis jätab kursusel osalejatele rohkelt võimalusi süsteemi petta. Üks põhjuseid, miks eelnimetatud probleemiga ei tegelda, on see, et MOOCid on avatud kõigile ning nende eesmärgiks on võimaldada inimestel areneda ning end täiendada. Antud lõputöös käsitletavate kursuste lõpus on võimalik sooritada kontrollitud oludes arvestustöö [35].

39

Kokkuvõte

Käesoleva lõputöö eesmärgiks oli luua süsteem, mis suudab automaatselt hinnata graafilise väljundiga programmeerimisülesandeid. Süsteem võtab sisendiks kursusel osaleja esitatud lahenduse koodi ning saadab selle virtuaalmasinasse, kus on ajutine liivakast. Liivakastis analüüsitakse lahendust ning muudetakse nii, et sellest saaks genereerida pildifaili. Pildifail saadetakse pildituvastamise teenusepakkujale Clarifaile, mis tagastab vastusena tõenäosuse, et spetsiifiline objekt eksisteerib saadetud pildil. Vastavalt sellele tõenäosusele saab esitatud töö hindeks kas „arvestatud“ või „mittearvestatud“.

Süsteemi muudab mugavaks asjaolu, et esitada tuleb vaid ülesande lahenduskood. Kursusel osalejad jäid automaatkontkontrolli üldise suutlikkusega rahule. Soovi korral on kursusel osalejatel endiselt võimalik oma lahendusi üksteisega jagada selleks ettenähtud foorumis.

Tulevikus on süsteemi kindlasti võimalik täiustada. Hetkel kursusel osalejatele antud tagasiside on väga üldine ning ei aita neid eriliselt konkreetsete probleemide korral. Lisaks oleks võimalik veel täpsemalt kontrollida esitatud lahenduskoodis vajaminevaid elemente ning selle põhjal tagasisidet anda. Logidesse kirjutamist oleks võimalik täiendada ning detailsemaks muuta, et oleks võimalik automaatkontrolli töö kohta paremat statistikat teha ning sealt vigu leida.

Süsteemi kasutati ning testiti programmeerimise MOOCis „Programmeerimise alused“.

Kuna kursuse läbiviijad võitsid tänu antud lõputöös valminud süsteemile oluliselt aega ning kursusel osalejatelt saadud tagasiside oli positiivne, siis võib kindlusega väita, et süsteemi kasutatakse ka edaspidi.

40

Pieterse V. Automated assessment of programming assignments. Proceedings of the 3rd Computer Science Education Research Conference on Computer Science Education Research, 2013, pp. 45-67.

Wulf J.; Blohm I.; Leimeister J. M.; Brennen W. Massive open online courses. Business

& Information Systems Engineering (BISE), 2014, vol. 6, no. 2, pp. 111-114.

Doherty I.; Harbutt D.; Sharma N. Designing and Developing a MOOC. Medical Science Educator, 2015, vol. 25, no. 2, pp. 177-181.

Yousef A. M. F.; Wahid U.; Chatti M. A.; Schroeder U.; Wosnitza M. The Impact of Rubric-Based Peer Assessment on Feedback Quality in Blended MOOCs. International Conference on Computer Supported Education, 2015, pp. 462-485.

Pears A.; et al. A survey of literature on the teaching of introductory programming.

ACM SIGCSE Bulletin, 2007, vol. 39, no. 4, pp. 204-223.

Staubitz T.; Klement H.; Renz J.; Teusner R.; Meinel C. Towards practical programming exercises and automated assessment in massive open online courses.

Teaching, Assessment, and Learning for Engineering (TALE), 2015, pp. 23-30.

English J. Automated assessment of GUI programs using JEWL. ACM SIGCSE Bulletin, 2004, vol. 36, no. 3, pp. 137-141.

Thornton M.; et al. Supporting student-written tests of gui programs. ACM SIGCSE Bulletin, 2008, vol. 40, no. 1, pp. 537-541.

Nikander J.; et al. Visual algorithm simulation exercise system with automatic assessment: TRAKLA2. Informatics in Education-An International Journal, 2004, vol.

3, no. 2, pp. 267-288.

Graphical User Interfaces with Tk. 2017. https://docs.python.org/3/library/tk.html (16.05.2017)

Salve S. G.; Jondhale K. C. Shape matching and object recognition using shape contexts. Computer Science and Information Technology (ICCSIT), 2010, vol. 9, pp.

471-474.

CLOUD VISION API. 2017. https://cloud.google.com/vision/ (16.05.2017) Mulfari D.; et al. Using Google Cloud Vision in assistive technology scenarios.

Computers and Communication (ISCC), 2016, pp. 214-219.

IaaS, PaaS, SaaS. 2013. http://www.termnet.ee/pilveteenus/iaas-paas-saas (16.05.2017)

Dimiccoli M.; et al. SR-clustering: Semantic regularized clustering for egocentric photo streams segmentation. Computer Vision and Image Understanding, 2016.

About Imagga Technologies Ltd. 2017. https://imagga.com/company (16.05.2017) Coban E. B. Neural Networks and Their Applications.

About Clarifai. 2017. https://clarifai.com/about (16.05.2017)

Learn Python Programming. 2015. https://www.programiz.com/python-programming (16.05.2017)

41

What is Python? Executive Summary. 2017. https://www.python.org/doc/essays/blurb/

(16.05.2017)

Mis on Moodle? 2010. http://etu.ut.ee/kevad-2010/mis-on-moodle/ (16.05.2017) About Moodle. 2016. https://docs.moodle.org/32/en/About_Moodle (16.05.2017) GhostScript. 2016. https://www.ghostscript.com/Ghostscript.html (16.05.2017) Moodle's new Virtual Programming Lab (VPL) module. 2010.

source course management system. 2003, pp. 171-178.

Rodríguez-del-Pino J. C.; Rubio Royo E.; Hernández Figueroa Z. A Virtual Programming Lab for Moodle with automatic assessment and anti-plagiarism features.

Proceedings of The 2012 International Conference on e-Learning, e-Business, Enterprise In-formation Systems, & e-Government, 2012.

Abstract Syntax Trees. 2017. https://docs.python.org/3.6/library/ast.html (16.05.2017) Xvfb Homepage. 2012.

https://www.x.org/archive/X11R7.6/doc/man/man1/Xvfb.1.xhtml (16.05.2017)

Programmeerimise alused. 2017. http://www.ut.ee/et/mooc/programmeerimise-alused (16.05.2017)

42

Lisad

I. Failid

 Githubist on võimalik kätte saada süsteemi loomiseks ning testimiseks vaja läinud faile ning pilte.

o https://github.com/heavenzeyez1/Magistritoo

43 II. Litsents

Lihtlitsents lõputöö reprodutseerimiseks ja lõputöö üldsusele kättesaadavaks tegemiseks

Mina, Eerik Muuli, (autori nimi)

1. annan Tartu Ülikoolile tasuta loa (lihtlitsentsi) enda loodud teose

Graafiliste ülesannete automaatkontroll programmeerimise vaba juurdepääsuga e-kursuste raames,

(lõputöö pealkiri)

mille juhendaja on Eno Tõnisson, (juhendaja nimi)

1.1. reprodutseerimiseks säilitamise ja üldsusele kättesaadavaks tegemise eesmärgil, sealhulgas digitaalarhiivi DSpace-is lisamise eesmärgil kuni autoriõiguse kehtivuse tähtaja lõppemiseni;

1.2. üldsusele kättesaadavaks tegemiseks Tartu Ülikooli veebikeskkonna kaudu, sealhulgas digitaalarhiivi DSpace´i kaudu kuni autoriõiguse kehtivuse tähtaja lõppemiseni.

2. olen teadlik, et punktis 1 nimetatud õigused jäävad alles ka autorile.

3. kinnitan, et lihtlitsentsi andmisega ei rikuta teiste isikute intellektuaalomandi ega isikuandmete kaitse seadusest tulenevaid õigusi.

Tartus, 18.05.2017