Slika 6: Shema delovanja CodeRunnerja
Študent odda odgovor na vprašanje v obliki ustrezne programske kode. Ta se v TWIG[TWI] mehanizmu za upravljanje s predlogami združi v celoto skupaj s predlogo in testno kodo prvega testnega primera. TWIG celoto prevede v izvršilni program. V peskovniku (sandboxu) kodo programa prevedemo in jo zaženemo s testnimi podatki, podanimi v testnih primerih. Rezultat posredujemo v ocenjevalnik. Tam ga primerjamo s pričakovanim rezultatom na način, kot je določen v ocenjevalniku. Najpogosteje uporabljen način je ″popolno ujemanje″, možni pa so tudi drugi načini. Rezultat iz ocenjevalnika je objekt ″rezultat testa″, ki ima atributa ″pričakovano″ in ″dobljeno″.
Opisan postopek ponovimo za vse testne primere. Vsi dobljeni objekti iz ocenjevalnika so nato združeni v tabelo, ki jo v oblikovalcu oblikujemo v končno tabelo z rezultati. Ta se kot povratna informacija izpiše študentu. Uspešno opravljeni testni primeri so v tabeli označeni z zeleno kljukico, neuspešni pa z rdečim križcem. Tabela je v celoti obarvana zeleno, če so vsi testni primeri pravilni, rdeče obarvana tabela pa naznanja, da je vsaj eden izmed njih nepravilen ().
Slika 7: Tabela s pravilnimi in z nepravilnimi testnimi primeri
2.2.1 Tipi vprašanj v CodeRunnerju
Vsako vprašanje, ki ga sestavimo, je primerek tako imenovanega prototipnega vprašanja. Kot bomo videli v poglavju 5, ki govori o sestavljanju vprašanj, je potrebno najprej izbrati tip vprašanja (QuestionType, ).
Slika 8: Tipi vprašanj
Prototip opredeljuje tip vprašanja. V CodeRunnerju imamo vgrajenih več osnovnih prototipnih vprašanj (prototip), ki določajo, ali bo vprašanje vrste ‘napiši program’ , 'napiši funkcijo' ali pa 'napiši razred'... Če uporabljamo programska jezika Java in C, imamo na voljo vse tri omenjene različice, v Matlabu pa sta na voljo prototipa 'napiši funkcijo' in 'napiši skripto'. Prototip lahko razširimo, mu nastavimo dodatne parametre, če seveda ustrezno prilagodimo njegovo predlogo. Za programski jezik Python 3 imamo vgrajen samo osnovni prototip 'napiši funkcijo'. Zato takrat, kadar uporabljamo Python 3, pogosto naredimo nove prototipe. Tako so na Univerzi Canterbury na Novi Zelandiji ustvarili svoj prototip python3_cosc121, ki ga uporabljajo za ocenjevanje kvizov in izpitov. Ta njihova predloga ima dodane številne uporabne parametre, kot so:
Je funkcija
Pylint nastavitve
Prepovedani konstruktorji
Obvezni konstruktorji
Dovoli globalne spremenljivke
Maksimalno število konstant
Brez zagona
Zaženi dodatno
Kako ti parametri delujejo, si bomo ogledali v nadaljevanju.
Predloga, ki nam omogoča sestavljanje vprašanj tipa python3_cosc121, ni sestavni del namestitve vtičnika CodeRunner, zato tega tipa vprašanja ni v meniju med vgrajenimi tipi vprašanj. Lahko pa to predlogo uvozimo naknadno. Pri vprašanjih, ki jih bomo sestavili za našo bazo vprašanj, bomo uporabljali poleg vgrajenega tipa python3 še python_w_input in python3_cosc121, zato priporočamo vsem uporabnikom, da namestijo to predlogo.
Če poznamo delovanje predlog dobro, lahko sami ustvarimo poljubno število tipov vprašanj. Shranimo jih lahko kot prototip in jih kasneje najdemo v meniju z vgrajenimi vprašanji. Jezik, uporabljen v prototipih, je lahko različen od tistega, ki se uporablja za izvršitev študentovega odgovora. Tako lahko na primer za preverjanje ustreznosti sloga kodiranja v Octave-u uporabimo predlogo iz Pythona, ki preveri, če je koda napisana v ustreznem slogu, preden jo dejansko preda Octave-u za izvršitev. O tem, kako sestavljamo in spreminjamo prototipe, bomo govorili v poglavju 5.1.2.
|