PUTKA (Preverjanje Učinkovitosti, Temeljitosti in Korektnosti Algoritmov) je avtomatiziran sodniški sistem za testiranje programov. Sistem je bil prvotno zasnovan za vodenje mladinske šole računalništva na Zavodu za računalniško izobraževanje Ljubljana (ZRI), kmalu pa je bil razširjen s podporo za izvedbo tekmovanj.

Javna instalacija Putke s prek 200 vnešenimi nalogami je dosegljiva na http://www.putka.si; stran je namenjena vsem motiviranim, da preizkusijo svoje znanje s področja reševanja algoritemskih problemov. Registracija in reševanje nekaj osnovnih nalog sta omogočena za vse, dostop do večine preostalih nalog in podpore na forumih pa je trenutno omejen na učence ZRI.

Avtorji

Verzija 4.1

  • Uporabniški vmesnik: Žiga Ham, Mitja Trampuš, Jan Berčič
  • Testno okolje: Jan Berčič, Mitja Trampuš
  • Pomagali so še: dr. Jelko Urbančič in Nino Bašić (testiranje in povratne informacije), Jure Ham (grafična podoba) ter Andrej Veber (IT podpora, hosting)

Zgodovina
Projekt se je začel že leta 2004 v okviru poletne raziskovalne šole računalništva pri ZRI Ljubljana. Pozneje je bil na podlagi izkušenj iz prejšnjih verzij večkrat napisan povsem na novo. Predvsem pri pripravi predhodnih verzij so poleg zgoraj naštetih sodelovali tudi Tomaž Hočevar, Andrej Bukošek, Domen Blenkuš, Peter Koželj in Igor Lalič.

Reference

  • Od leta 2007 se Putka intenzivno uporablja pri pouku mladinske računalniške šole na ZRI Ljubljana.
  • Putka je bila v letih 2008-2011 uradno okolje za izvedbo državnih tekmovanj v znanju programiranja, ki jih je organizirala Zveza za tehnično kulturo Slovenije.
  • Sistem je bil preizkušen z izvedbo več deset tekmovanj odprtega in zaprtega tipa.
  • Putka je do danes ocenila prek 50.000 programov.

Tehnične značilnosti

Sistem je sestavljen iz treh glavnih komponent, ki po potrebi tečejo na ločenih računalnikih: uporabniškega vmesnika (ki prikazuje spletne strani), testerjev (ki zaženejo uporabniške programe v strogo nadzorovanem okolju in jih ocenijo) ter managerja (ki nadzira testerje in jim razdeljuje delo). Zaradi zgodovinske uporabe Putke v različnih kontekstih (pouk, tekmovanja z različnimi pravili) je sistem izjemno konfigurabilen in fleksibilen:

  • Uporabniški vmesnik podpira večjezičnost, poln ACL nadzor nad dostopom do vsebin in različne režime tekem.
  • Putka s kar najmanj konfiguriranja podpira "običajne" naloge, naloge z neenoličnimi odgovori, interaktivne naloge, ročno ocenjevanje nalog in še kaj. Način testiranja in točkovanja je za vsako nalogo v skoraj vseh podrobnostih določen s python skripto, ki je navadno dolga le vrstico ali dve, po potrebi pa poljubno kompleksna.
  • Testerji pri izvajanju uporabniških programov prestrezajo vse sistemske klice in jih filtrirajo s pomočjo pravil, prilagojenih posameznim programskim jezikom in interpreterjem in/ali posamezni nalogi.

Django Logo Apache Logo PostgreSQL Logo Debian Logo