1 UVOD Finančna podhranjenost našega visokega šolstva pogosto privede do previsokih kvot študentov na pedagoškega delavca. Kako ustaviti ta trend, ki posledično zmanjšuje kakovost pedagoškega dela, je kompleksen problem [1], [2], [3]. V tem prispevku predstavljamo tehnološko rešitev, ki omogoča izboljšave pedagoškega procesa v že obstoječem finančnem in kadrovskem okviru fakultete in univerze. V visokošolskem izobraževanju so praviloma pisni preizkusi znanja tisti, ki dajo študentu prvo resno in sistematizirano povratno informacijo o kakovosti nje- govega znanja, kar je še dodaten motiv, da so ti iz- vedeni po čim višjih pedagoških standardih [4], [5], [6], [7]. Takšni preizkusi znanja so pogosto množično obiskani. Na Zdravstveni fakulteti Univerze v Ljubljani se pogosto srečujemo s pisnimi preverjanji znanja, ki Prejet 20. junij 2019 Odobren 11. december 2019 jih opravlja okoli sto ali več študentov. Pogosto so nosilci predmetov ali (so)izvajalci zunanji sodelavci in večino bremena logistične izvedbe množičnih testov prevzamejo študentski referat in drugi sodelavci. Zato je še toliko pomembnejše, da je priprava in izvedba takšnih preizkusov znanja čim bolj sistematizirana in zagotavlja čim večjo objektivnost in korektnost. SIZiF, informacijsko-tehnološki sistem za izpite na Zdravstveni fakulteti Univerze v Ljubljani, je nastal po zgledu že obstoječih rešitev [8], [9], [10] in predvsem na podlagi dolgoletnih izkušenj avtorjev z razvojem in uporabo podobnega sistema [11], [12]. Kljub prisotnosti podobnih rešitev pa je SIZiF sestavljen in spisan povsem na novo in prilagojen potrebam Zdravstvene fakultete Univerze v Ljubljani. SIZiF omogoča izdelavo in urejanje izpitnih pol ter avtomatsko razpoznavo in ocenjevanje študentskih iz- delkov. S sistemom lahko sestavimo za vsakega študenta unikatno polo z vprašanji in ponujenimi odgovori. Tudi kadar želimo, da študentje rešujejo isti vsebinski nabor nalog, lahko sistem premeša vrstni red nalog in ponu- jenih odgovorov. Unikatne pole z vprašanji natisnemo in razdelimo med študente. Ko študenti zaključijo iz- polnjevanje pol, pole pošljemo skozi optični čitalnik, ki njihove slike pošlje strežniku. Ta oceni vsak izdelek in ga poveže s študentom, ki ga je izpolnjeval. Če izvajalec predmeta želi, omogoči študentu, da si lahko svoj pisni preizkus, popravljen in ocenjen, ogleda na spletu ter sporoči morebitne pripombe. Za varstvo osebnih podat- kov študentov je pri tem poskrbljeno. Vsa programska oprema je odprtokodna [13] in je torej prosto dostopna za uporabo in nadaljnji razvoj ter vključitev v druge rešitve. SIZIF – I-SISTEM IZPITOV NA ZDRAVSTVENI FAKULTETI UNIVERZE V LJUBLJANI 9 Slika 1: Shema zgradbe sistema SIZiF. V nadaljevanju predstavimo zgradbo in tehnološke rešitve SIZiFa ter izkušnje s sistemom v praksi. 2 ZGRADBA IN DELOVANJE SIZIFA Posamezne segmente programske opreme SIZiFa med- sebojno povezuje podatkovna baza (sredina sheme na sliki 1). Podatki so v skladu z zgradbo podatkovnih baz SQL urejeni v tabele. Te se medsebojno pove- zujejo z referencami na posamezna polja in tvorijo celoto. Uporabili smo odprtokodno podatkovno bazo postgresql, vendar je mogoče uporabiti katerokoli odprtokodno ali komercialno podatkovno bazo. Spletni vmesnik in strežniška aplikacija sta napisana v visoko- nivojskem programskem jeziku Python, ki že s svojo zasnovo spodbuja uporabo in razvoj številnih odprto- kodnih knjižnic ter tako skupaj s svojo razširjenostjo nudi odlično odprto programsko okolje znanstvenikom in inženirjem [14]. Pisni preizkus znanja se v SIZiFu začne s sestavlja- njem nalog ter določanjem roka preizkusa znanja. Pisne preizkuse znanja v SIZiFu sestavljamo in urejamo prek spletnega vmesnika (slika 2), pri čemer vsa komunika- cija teče prek varnega protokola HTTPS. Spletna stran je zgrajena v spletnem okvirju (angl. web framework) Django 2.2, ki omogoča enostavno komunikacijo s po- datkovno bazo v ozadju ter čisto in pragmatično obliko [15]. Vsaka naloga je svoja tekstovna datoteka. SIZiF ima svoj minimalističen označevalni jezik (angl. markup language), s katerim poleg besedila naloge podamo tudi opis, kako naj se besedilo oblikuje ter kateri so pravilni in napačni odgovori [11], [12]. Sestavljene naloge so v celoti spravljene v podatkovni bazi in pripravljene za vključitev v preizkus znanja. Posamezno nalogo lahko uporabimo pri več preizkusih ali pa za vsak preizkus sestavimo nove naloge. Ko smo zadovoljni z naborom nalog in preostalimi parametri preizkusa znanja (datum, naslov, ime predmeta, seznam pišočih, . . . ), podamo zahtevo za generacijo unikatnih izdelkov. Generator preverjanja znanja je aplikacija, ki deluje na strežniku in se odzove na zahtevo po generaciji. Najprej SIZiFov razčlenjevalnik (angl. parser) v dato- teki poišče posamezne dele naloge, ustvari vrednosti spremenljivk in izračuna rezultate. Za numerične in simbolične izračune uporabljamo knjižnici numpy in sympy. Nato vse naloge sestavi v izpitno polo in vse izpitne pole z uporabo prilagodljive oblikovne predloge zloži v skupno LATEX-ovo datoteko. To z LATEX-ovim prevajalnikom prevedemo v datoteko PDF, ki jo lahko natisnemo in pole razdelimo med študente (slika 3). Ko študentje oddajo izpolnjene izpitne pole, te pošljemo skozi optični čitalnik, ki slike vsake strani izpitne pole v slikovnem formatu TIFF pošlje strežniku sistema SIZiF. Izbiramo lahko med več protokoli pre- nosa, ki jih optični čitalnik podpira. Največkrat je to kar protokol FTP (File Transfer Protocol). Strežnik opravi optično razpoznavo, poveže strani v celoten preizkus znanja posameznega študenta, v bazi študentov poišče podatke o študentih, ter oceni izdelke. Za optično raz- poznavo vzorcev smo uporabili knjižnico OpenCV in Pythonove ovoje (angl. wrapper) zanjo. OpenCV upora- bljamo tudi za urejanje slike: določanje sivin, čiščenje slik, izločanje posameznih števk identifikacijske številke ter iskanje kvadratkov na robovih izpitnih pol, ki služijo koordinatnemu sistemu pole. Za branje QR-kode smo uporabili knjižnico pyzbar. Števke razpoznavamo z ne- vronskimi mrežami, definiranimi v knjižnici sklearn, pri čemer smo za učenje nevronske mreže uporabili metodo vzvratnega razširjanja (angl. backpropagation) iz te knjižnice in jo naučili prepoznavanja števk od 0 do 9 na osnovi majhnega vzorca okoli 30 posameznih števk iz predhodnih testnih slik, pridobljenih na istem optičnem čitalniku. Posamezni elementi na sliki izpitne pole služijo optični razpoznavi: • Prek QR-kode v bazi poiščemo podatke o poli, predvsem matriko pravilnih odgovorov. Opcijsko je lahko v QR-kodi tudi identifikacijska številka pišočega, prek katere lahko izdelek z uporabo baze povežemo z imenom in priimkom. • Če podatka o identifikaciji pišočega ni v QR- kodi, jo algoritem za optično razpoznavo poskusi pridobiti iz temu namenjenega polja na formularju. Študent polje izpolni tako, da pobarva segmente, ki spominjajo na 7-segmentni prikazovalnik, kot smo ga navajeni na primer iz digitalnih ur. Primer izpolnjene identifikacijske številke je prikazan na sliki 4. • Črni kvadratki na zgornjem in desnem robu strani določajo koordinate ponujenih odgovorov. Na 10 PENIČ, FOŠNARIČ Slika 2: Primer pogleda v spletnem vmesniku, prek katerega v SIZiFu urejamo preizkuse znanja ter posamezna vprašanja ali sklope vprašanj sestavljamo v naloge, ki bodo del preizkusa. Slika 3: Primer glave izpitne pole s prvim vprašanjem. Zaradi varovanja osebnih podatkov je ime študenta na sliki zakrito. SIZiF omogoča tudi generacijo in razpoznavo izpitnih pol brez vnaprej natisnjenih imen in vpisnih številk. V tem primeru jih študenti sami vpišejo na izpitne pole, ki jih lahko med študente naključno razdelimo. Slika 4: Primer izpolnjene identifikacijske številke pisočega. V primeru Zdravstvene fakultete je to vpisna številka študenta. Slika 5: Lepo označen odgovor pri nalogi. Z uporabo kvadrat- kov na robovih bo označen odgovor na poli enostavno locirati in ugotoviti, da ga je pišoči študent označil. presečiščih teh koordinat se potencialno nahajajo izbrani odgovori, ki jih pišoči označi tako, da pobarva krožec pred odgovorom (prikaz dela odgo- vorov neke naloge je na sliki 5). Algoritem zazna počrnjene odgovore ter sestavi matriko izbranih odgovorov. Rezultati optičnega razpoznavanja se spravijo v bazo, skupaj s povezavo do slik, ki pa se shranijo na disk v obliki datotek tipa PNG, primernih tudi za prikaz prek spletnih brskalnikov. S primerjavo matrike pravilnih odgovorov in matrike označenih odgovorov se izračuna končni rezultat preverjanja znanja – ocena. Upravlja- vec preverjanja znanja si lahko ogleda rezultate vseh študentov skupaj s sliko njihovega preverjanja znanja ter odpravi morebitne pomanjkljivosti, ki so se pojavile med procesom optične zaznave. Hkrati mu stran nudi statistiko reševanja preizkusa znanja in izvoz ocen v obliki tabele. Zadnji spletni vmesnik je namenjen pišočim – študentom. Rezultate preizkusa znanja si lahko ogledajo s prijavo na spletni strani. Po prijavi si ogledajo celo- tno zgodovino opravljanj preizkusov znanja s sistemom SIZiF. Za vsak preizkus dobijo podatek o rezultatu in statistiko celotnega preizkusa znanja ter si ogledajo svoj izdelek. Študentu je omogočeno tudi prijavljanje napake pri ocenjevanju ali zastavljanje vprašanj o nalogah. S tem lahko spletna stran popolnoma nadomesti fizični ogled preizkusov znanja z obiskom asistenta/profesorja, ki je izvajal in ocenjeval preizkus. Zaradi zagotavljanja varnosti osebnih podatkov je strežnik SIZiF na računalniku, ki je fizično priso- SIZIF – I-SISTEM IZPITOV NA ZDRAVSTVENI FAKULTETI UNIVERZE V LJUBLJANI 11 ten znotraj Zdravstvene fakultete Univerze v Ljubljani. Strojne zahteve strežnika niso velike. Posamezne kom- ponente preizkušeno delujejo na odprtokodnih distri- bucijah GNU/Linux. Za namestitev sistemski inženir potrebuje poznavanje operacijskega sistema Linux ter programskega jezika Python. Za lažjo namestitev smo pripravili konfiguracijsko datoteko za virtualizacijo na nivoju operacijskega sistema Docker, ki namestitev po- polnoma avtomatizira. Slika (angl. Docker image), ki jo ustvari, za osnovo uporablja distribucijo Linuxa Ubuntu 18.04. Nanjo namesti vse potrebne pakete in pripravi mrežne in diskovne dostopne točke. Tako zgrajeno sliko lahko namestimo na poljuben operacijski sistem, ki podpira sistem Docker. Sistem SIZiF smo razdelili na tri dele zaradi lažjega razvoja posameznih funkcionalnosti sistema. Spletni vmesnik skupaj s konfiguracijsko datoteko Dockerfile je prosto dostopen v GIT-repozitoriju [16], generator preverjanj znanja v GIT-repozitoriju [17] ter algoritmi za optično razpoznavo v GIT-repozitoriju [18]. Če bomo uporabili sistem Docker, potrebujemo le prvi del, ki ga snamemo z repozitorija [16], Docker pa poskrbi za prenos preostalih komponent sistema. Uporaba Dockerja ima za nas, razvijalce, še dodatno prednost. Ker se sistem zelo hitro razvija, lahko z uporabo Dockerjevih slik spremembe hitro prenašamo v produkcijo, ne da bi pri tem povzročili izpad oz. nedelovanje strežnika. Nove funkcionalnosti ali popravki se tako dnevno ali celo večkrat na dan pojavijo v novi Dockerjevi sliki, ki nadomesti staro. Izdelava novih slik je lahko avtomatizirana v obliki sprožilca ob potisku spremembe na repozitorij GIT ali kako drugače. Upo- rabnik storitve SIZiFa zamenjave slike niti ne zazna, saj je menjava hipna. V primeru težav z novo sliko pa lahko hitro povrnemo staro stanje, dokler ne popravimo nepravilnosti na razvojnem strežniku in ne ponovimo procesa integracije razvojne kode v produkcijsko. 3 REZULTATI IN ZAKLJUČEK Pri zasnovi, razvoju in uporabi SIZiFa smo gradili na izkušnjah z razvojem in uporabo podobnega sistema, ki je v uporabi pri nekaterih predmetih na Fakulteti za elektrotehniko in Biotehnični fakulteti Univerze v Ljubljani [11], [12]. Vendar pa je SIZiF zasnovan in napisan povsem na novo, s številnimi povsem novimi funkcionalnostmi ter možnostmi za nadgradnjo. Tako smo se ob uvajanju sistema na Zdravstveni fakulteti Univerze v Ljubljani ob odpravljanju napak program- ske kode, seveda srečevali tudi z zagonskimi težavami pri postavitvi in vzdrževanju infrastrukture strežnika in optičnega čitalnika ter pri vpeljavi novih funkcionalnosti in uporabniških izkušnjah izvajalcev preizkusov znanja. Kljub temu smo SIZiF na Zdravstveni fakulteti Uni- verze v Ljubljani v letih 2018 in 2019 uspešno uporabili za preizkuse znanja pri predmetih biofizika, biofizika z biomehaniko, medicinska propedevtika, klinična pro- pedevtika in diagnostični laboratorij, zdravstvena nega kirurškega bolnika ter organizacija in management v zdravstveni negi. Pri tem smo izvedli več kot 20 pisnih preizkusov znanja ter sestavili in obdelali več kot tisoč izpitnih pol študentov. Po nekaj začetnih težavah z implementacijo in iz- vedbo je SIZiF uspešno zadihal. Študentje so ga po- zitivno sprejeli, ustrezata jim objektivnost takšnega pre- verjanja znanja in hitra povratna informacija o njihovi uspešnosti. Izvajalci izpita so zadovoljni, saj je za- radi unikatnih pol oteženo goljufanje, SIZiF pa odpra- vlja tudi duhomorno ročno popravljanje pisnih izdelkov študentov. S finančnega stališča uvedba SIZiFa na Zdravstveni fakulteti ni zahtevala dodatnih investicij. Strojne zahteve za strežnik in optični bralnik so dovoljevale, da smo uporabili kar infrastrukturo, ki jo fakulteta že ima na razpolago. SIZiF na disku trenutno zaseda 16 GB prostora, pri čemer 10 GB zasedata operacijski sistem in Dockerjeva slika sistema SIZiF z vsemi potrebnimi dodatki, baza metapodatkov zaseda 16 MB, slabih 6 GB pa zasedajo slike študentskih pol. Tiskanje izpitnih pol in optično branje izpolnjenih izdelkov potekata na večfunkcijski napravi Xerox Work- Centre 5875. Za uspešno optično razpoznavo izdelkov je bilo treba primerno nastaviti sivine in kontraste pri tiskanju ter na optičnem bralniku. Pri menjavi tiskalnika ali optičnega bralnika bi bilo ta postopek uglaševanja sistema treba opraviti ponovno. Koristno je tudi, da imajo izvajalci roka že nekaj izkušenj s SIZiFom, saj je kakovost pravilne razpoznave izdelkov odvisna tudi od primernega izpolnjevanja študentov, na primer izbire pisala in brisala ter pravilnega označevanja izbranih odgovorov. Največ napak seveda nastaja ob optični razpoznavi. Izpitnih pol, pri katerih so potrebni ročni popravki, je pri uspešno izvedenem izpitu sicer le nekaj odstotkov, vseeno pa je potrebna previdnost izvajalca pred objavo rezultatov. Odprto ostaja vprašanje sistemske uvedbe SIZiFa na fakulteti. Sistem namreč še vedno zahteva nekaj ekspertnega znanja pri sestavljanju preizkusov znanja, pri pregledovanju optične razpoznave in avtomatskega ocenjevanja izdelkov ter pri vzdrževanju strežnika. Za širšo in rutinsko uporabo bi bilo treba prilagoditi upo- rabniški vmesnik za sestavljanje testov in pregledovanje ocenjenih izdelkov, ki bi morala biti enostavnejša in uporabniku prijaznejša. Poleg tega bi morali sistemsko urediti tehnično podporo, saj gre lahko, kot pri vsakem informacijsko-tehnološkem procesu, vsakič kaj narobe. Ozko grlo sta predvsem tiskanje in optična razpoznava, ki pa sta ključna člena, zaradi katerih smo sistem sploh razvili. Zaobiti te bi pomenilo, da mora imeti v času pre- izkusa znanja vsak študent na razpolago informacijsko- tehnološko vhodno enoto, prek katere sistemu sporoča svoje odgovore (na primer pametni telefon ali tablico, 12 PENIČ, FOŠNARIČ uporaba računalniških učilnic na fakulteti ali posebej temu namenjena strojna in programska oprema). Za konec naj še enkrat poudarimo, da je celoten sistem spisan in zasnovan na odprtokodnih tehnologijah. Poten- cialne uporabnike in razvijalce zato vabimo k uporabi in nadaljnjemu razvoju. Ena izmed koristnih razširitev bi bila na primer integracija s sistemom Moodle, ki je zelo razširjen tudi v slovenskem izobraževalnem sistemu. ZAHVALA Zahvaljujemo se Alešu Berkopcu, ki sorazvija in upo- rablja soroden sistem, na osnovi katerega smo gradili SIZiF.