User Tools

Site Tools


codeq:vivid2015

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
codeq:vivid2015 [2015/07/13 17:27]
timotej
codeq:vivid2015 [2015/07/14 17:15] (current)
timotej
Line 1: Line 1:
 Članek za eno [[http://vivid.fov.uni-mb.si/|najprestižnejših konferenc]] na območju osrednje Slovenije. [[http://vivid.fov.uni-mb.si/sites/vivid.fov.uni-mb.si/files/Navodila%20za%20oblikovanje%20%C4%8Dlanka_0.docx|Navodila za oblikovanje članka]]. Članek za eno [[http://vivid.fov.uni-mb.si/|najprestižnejših konferenc]] na območju osrednje Slovenije. [[http://vivid.fov.uni-mb.si/sites/vivid.fov.uni-mb.si/files/Navodila%20za%20oblikovanje%20%C4%8Dlanka_0.docx|Navodila za oblikovanje članka]].
 +
  
 ====== Uvod ====== ====== Uvod ======
  
   * motivacija - bluzenje iz projekta   * motivacija - bluzenje iz projekta
 +
  
 ====== Pregled aplikacije ====== ====== Pregled aplikacije ======
Line 13: Line 15:
  
 {{:codeq:slika1.png}} {{:codeq:slika1.png}}
-Slika 1(aIzbira naloge(bUrejevalnik.+Slika 1(levoizbira naloge(desnourejevalnik.
  
-Kot večina računalniških sistemov za poučevanje tudi naš pristop temelji na+Kot večina računalniških sistemov za poučevanje tudi naša aplikacija temelji na
 reševanju problemov. Glavni meni (slika 1a) tako vsebuje seznam nalog, ki so na voljo za reševanju problemov. Glavni meni (slika 1a) tako vsebuje seznam nalog, ki so na voljo za
 reševanje. Za vsakega uporabnika sistem vodi evidenco nalog, ki jih je rešil reševanje. Za vsakega uporabnika sistem vodi evidenco nalog, ki jih je rešil
-delno ali v celoti; v seznamu je to označeno z sivim oziroma zelenim krogcem pred imenom naloge.+delno ali v celoti; v seznamu je to označeno z sivo oziroma zeleno piko pred imenom naloge.
 Prav tako je prikazan delež nalog, ki jih je uporabnik rešil v posamezni kategoriji. Prav tako je prikazan delež nalog, ki jih je uporabnik rešil v posamezni kategoriji.
  
-Slika 1b prikazuje vmesnik za reševanje nalog. Naloga na sliki+Slika 1 (desno) prikazuje vmesnik za reševanje nalog. Naloga na sliki
 zahteva definicijo relacije "X je sestra od Y" z uporabo podatkov o starševstvu zahteva definicijo relacije "X je sestra od Y" z uporabo podatkov o starševstvu
 in spolu. Družinsko drevo, ki predstavlja te podatke, je na in spolu. Družinsko drevo, ki predstavlja te podatke, je na
-sliki 2. Na isti sliki je tudi grafični prikaz zahtevane relacije.+sliki 2 (levo). Na isti sliki (desno) je tudi grafični prikaz zahtevane relacije ''sister(X,Y)''.
  
-% slika 2 (a = družinsko drevo ; b = grafični hint za sister/2)+{{:codeq:famrel.png?400|}} {{:codeq:sister.svg|}}
  
-Uporabnikova rešitev na sliki 1b je skoraj pravilna, manjka le še+Slika 2: (levo) primer družinskega drevesa, (desno) grafični prikaz relacije ''sister(X,Y)''
 + 
 +Uporabnikova rešitev na sliki je skoraj pravilna, manjka le še
 pogoj, da ''X'' in ''Y'' nista ista oseba (brez tega pogoja bo prolog namreč sklepal, da pogoj, da ''X'' in ''Y'' nista ista oseba (brez tega pogoja bo prolog namreč sklepal, da
 je vsaka ženska sestra sama sebi). Ista slika vsebuje tudi primere različnih tipov je vsaka ženska sestra sama sebi). Ista slika vsebuje tudi primere različnih tipov
Line 34: Line 38:
  
 Trenutna različica spletne aplikacije je dokaj osnovna, a vsebuje vse poglavitne Trenutna različica spletne aplikacije je dokaj osnovna, a vsebuje vse poglavitne
-komponente, ki jih imajo podobni sistemi. To so: urejevalnik programske kode, +komponente, ki jih imajo podobni sistemi: 
-kamor uporabnik piše svojo rešitev; možnost izvajanja poljubnih poizvedb; + 
-testiranje pravilnosti programov s pomočjo testnih primerovin možnost +  - razlago naloge in primere; 
-takojšnjih individualiziranih povratnih informacij.+  - urejevalnik programske kode, kamor uporabnik piše svojo rešitev; 
 +  - možnost izvajanja poljubnih poizvedb; 
 +  testiranje pravilnosti programov s pomočjo testnih primerov in 
 +  - možnost takojšnjih individualiziranih povratnih informacij
 + 
 +Poleg tega ima uporabnik možnost vpogleda v že rešene programe, ki jih lahko uporablja pri pisanju novih rešitev.
  
 Ob koncu semestra smo opravili neformalno anketo, s katero smo želeli oceniti Ob koncu semestra smo opravili neformalno anketo, s katero smo želeli oceniti
 zadovoljstvo študentov z aplikacijo. Odzivi študentov so bili pretežno zadovoljstvo študentov z aplikacijo. Odzivi študentov so bili pretežno
-pozitivni, predlagali pa so tudi vrsto možnih izboljšav. Rezultate ankete bomo +pozitivni, predlagali pa so tudi vrsto možnih izboljšav. Mnenja iz ankete bomo 
-podrobneje predstavili v sledečih razdelkih; tukaj navajamo le nekaj pozitivnih +podrobneje predstavili v sledečih razdelkih; tukaj navajamo le nekaj splošnih 
-vtisov:+vtisov, ki izpostavljajo prednosti takega pristopa k vajam:
  
 > Overall dobra aplikacija. Všeč mi je to, da mi ni bilo potrebno doma nastavljati določenih stvari, nalagati knjižnice, etc ampka je bilo vse na voljo na internetu. > Overall dobra aplikacija. Všeč mi je to, da mi ni bilo potrebno doma nastavljati določenih stvari, nalagati knjižnice, etc ampka je bilo vse na voljo na internetu.
  
 > Aplikacija je v splošnem super, saj se z njo dosti lažje učiš kot pa če bi moral programirati in preverjati pravilnost svoje rešitve v programu, kjer tudi nimaš na voljo avtomatskega preverjanja pravilnosti rešitve tako kot ste si jo zamislili. > Aplikacija je v splošnem super, saj se z njo dosti lažje učiš kot pa če bi moral programirati in preverjati pravilnost svoje rešitve v programu, kjer tudi nimaš na voljo avtomatskega preverjanja pravilnosti rešitve tako kot ste si jo zamislili.
 +
  
 ====== Izbrane funkcije ====== ====== Izbrane funkcije ======
Line 69: Line 79:
 Primer testnega vhoda za nalogo ''sister/2'' iz prejšnjega razdelka je vprašanje Primer testnega vhoda za nalogo ''sister/2'' iz prejšnjega razdelka je vprašanje
  
-  ?- sister(vanessa, vanessa).+  ?- sister(vanessa,vanessa).
  
 Pravilen program odgovori "false", medtem ko napačen program iz slike 1b Pravilen program odgovori "false", medtem ko napačen program iz slike 1b
Line 89: Line 99:
  
 > Ni izpisa testnih primerov. Se je zgodilo, da sam nisem mogel najti protiprimera s katerim bi našel napako v programu, testiranje pa ni bilo 100%. > Ni izpisa testnih primerov. Se je zgodilo, da sam nisem mogel najti protiprimera s katerim bi našel napako v programu, testiranje pa ni bilo 100%.
 +
  
 ===== Naključni protiprimeri ===== ===== Naključni protiprimeri =====
Line 102: Line 113:
 generira naključne kombinacije vhodnih podatkov; za predikat ''gcd(A,B,D)'' je ta vzorec generira naključne kombinacije vhodnih podatkov; za predikat ''gcd(A,B,D)'' je ta vzorec
  
-  [int(1,100), int(1,100), out].+  [int(1,100),int(1,100),out].
  
 To pomeni, da sta prva dva argumenta celi števili med 1 in 100, zadnji argument To pomeni, da sta prva dva argumenta celi števili med 1 in 100, zadnji argument
Line 125: Line 136:
 > Glavni problem je bil to, da pri veliko nalogah ne izpiše protiprimerov, kar bi zelo olajšalo lovljenje hroščev. > Glavni problem je bil to, da pri veliko nalogah ne izpiše protiprimerov, kar bi zelo olajšalo lovljenje hroščev.
  
-===== Vnaprej definirani namigi ===== 
  
 ===== Samodejno odpravljanje napak ===== ===== Samodejno odpravljanje napak =====
  
-Dodatna prednost uporabe računalniških sistemov za poučevanje je, da nam  +Prednost računalniških sistemov za poučevanje je tudi v tem, da nam  
-omogočajo podrobno analizo različnih postopkov reševanja nalog. Naš sistem v ta   +omogočajo zajemanje podatkov o različnih postopkih reševanja. 
-namen za vsak poskus hrani podrobno sled reševanja. Ta sled vključuje vse +Naš sistem za vsak poskus hrani podrobno sled uporabnikove aktivnosti. 
-spremembe na programski kodi -- vstavljanje oziroma brisanje znakov -- in ostale +Ta sled vključuje vse spremembe programske kode -- vstavljanje oziroma brisanje znakov -- 
-interakcije s spletno aplikacijo, kot je izvajanje poizvedb in testiranje+in ostale interakcije s spletno aplikacijo, kot je izvajanje poizvedb in testiranje
 rešitve. rešitve.
  
-V spletno aplikacijo smo vključili metodo za samodejno odpravljanje napak, ki jo +Te podatke uporablja metoda za samodejno odpravljanje napak, ki jo 
-razvijamo v našem laboratoriju~\cite{lazar2014data}.+razvijamo v našem laboratoriju~\cite{lazar2014data}. Osnovna ideja je, 
 +da na nepravilnem programu preizkušamo popravke, ki so jih pri reševanju iste naloge 
 +naredili prejšnji uporabniki. Cilj je najti zaporedje popravkov, ki napačen program 
 +pretvori v pravilnega (glede na testne primere). 
 + 
 +Naša metoda deluje na nivoju besedila in je zato skoraj popolnoma neodvisna od programskega 
 +jezika. Za vsako obstoječo rešitev razdeli zaporedje vstavljenih in izbrisanih znakov 
 +na zaporedje t.i. //vrstičnih popravkov//. Popravek je urejen par (//prej//,//potem//), ki 
 +predstavlja transformacijo ene vrstice v programu. Poleg začetnega in končnega stanja ima 
 +vsak popravek tudi pripadajočo verjetnost -- delež uporabnikov, pri katerih se je v programu 
 +pojavila vrstica //prej// in so jo spremenili v //potem//
 +Nekaj primerov pogostih popravkov za predikat ''sister(X,Y)'' je v tabeli 1. 
 + 
 +^  Prej              Potem            ^  Verjetnost 
 +|  ''female(Y)''    |  ''female(X)''    |  0.77       | 
 +|  ''parent(Y,X)''  |  ''parent(X,Y)''  |  0.62       | 
 +|  ''mother(X,Y)''  |  ''parent(X,Y)''  |  0.71       | 
 +|  /                |  ''X \== Y''      |  0.82       | 
 +Tabela 1: tipični popravki za predikat ''sister(X,Y)''
 + 
 +Prva dva primera popravita napačne argumente v podciljih; tretji primer zamenja 
 +podcilj ''mother(X,Y)'' s pravilnim predikatom ''parent(X,Y)''; zadnji pa vstavi novo vrstico, 
 +ki pravi, da X in Y ne smeta biti ista oseba -- to je tudi popravek, ki ga predlaga aplikacija 
 +na sliki 1b. 
 + 
 +Ko dobi nepravilni program, ga naša metoda poskusi popraviti z različnimi zaporedji 
 +popravkov. Pri tem najprej preizkusi krajša zaporedja bolj pogostih popravkov. S tem 
 +želimo doseči, da bo končni program čim bolj podoben začetnemu oziroma da bodo posamezni 
 +popravki uporabniku lažje razumljivi. Če najdemo ustrezno zaporedje popravkov, ga 
 +uporabniku seveda ne smemo razkriti, saj bi mu s tem povedali rešitev naloge. Namesto tega 
 +v nepravilnem programu le označimo mesta, kjer so potrebne spremembe. 
 + 
 +Ker je metoda še v razvoju in še nismo zbrali dovolj velike množice rešitev, so 
 +rezultati mešani. V nekaterih primerih, sploh pri lažjih nalogah, hitro odkrije ustrezno rešitev. 
 +Pri kompleksnejših nalogah začne pristop na nivoju besedila kazati pomanjkljivosti, zato bomo v 
 +prihodnosti metodi dodali tudi elemente sintaktične analize programa. Prav tako bomo izboljšali 
 +predstavitev namigov uporabniku z bolj specifičnimi sporočili. 
 + 
 + 
 +===== Vnaprej pripravljeni namigi ===== 
 + 
 +Samodejna analiza programske kode nam lahko pomaga pri podajanju povratnih informacij, vendar 
 +ima svoje omejitve. Lahko sicer odkrije, kaj je potrebno popraviti v programu, a je take popravke 
 +težko preslikati v višjenivojske koncepte. Več študentov je izrazilo željo po bolj specifičnih 
 +namigih: 
 + 
 +> Izboljšal bi način, kako namigi prepoznajo kje se program zmoti oz. da bi bili ti morda za začetnika lažje razumljivi. 
 + 
 +> Do določene mere bi razkril na kak način bi mogel določen program delovat, naprej pa bi sam študent dopolnil. 
 + 
 +Takih namigov letos nismo implementirali; aplikacijo smo uporabljali na vajah, kjer je bil za 
 +pojasnila zmeraj na voljo asistent. V okviru projekta želimo aplikacijo prirediti tudi za 
 +samostojno učenje. Vsaki nalogi bomo zato dodali še podrobnejše razlage z grafičnimi pojasnili. 
 +Na sliki 2b je primer grafičnega prikaza relacije ''sister(X,Y)''
 + 
 +Ročno pripravljeni namigi bodo služili tudi za razlago pogostih napak. Tukaj si oglejmo primer 
 +takega namiga za nalogo ''sins/3'' ("sorted insert"). 
 +Gre za nalogo, kjer mora študent definirati predikat za vstavljanje novega elementa 
 +v urejen seznam števil. V prologu lahko neposredno dostopamo le do prvega elementa v seznamu, zato 
 +moramo pregledovati seznam od leve proti desni, dokler ne najdemo obstoječega elementa ''H'', ki 
 +je večji od novega elementa ''E''. Na tem mestu vstavimo nov element ''E'' pred ''H'', a študenti 
 +velikokrat zamenjajo njun vrstni red. To napako se da odkriti z ustreznimi testnimi primeri, zato 
 +lahko vnaprej pripravimo ustrezno razlago; primer diagrama za to situacijo je na sliki 3. 
 + 
 +{{:codeq:sins-hint-wrong-order.svg|}} 
 + 
 +Slika 3: primer namiga za predikat sins/3. 
  
 ===== Poigritev ===== ===== Poigritev =====
  
-Nazadnje omenimo še en vidik aplikacije, na katerega v začetku nismo pomislili, +Nazadnje omenimo še en vidik aplikacije, ki ga nismo načrtovali, a se je hitro izkazal za 
-a se je hitro izkazal za bistveno prednost pred obstoječim načinom dela na vajah. +bistveno prednost pred obstoječim načinom dela na vajah. Gre za t.i. "poigritev" 
-Gre za t.i. "poigritev" (angl. gamification) oziroma uporabo +(angl. //gamification//) oziroma uporabo prijemov iz računalniških iger, ki so primarno 
-elementov iz računalniških iger v drugih aplikacijah. Tipičen primer takega +namenjeni motivaciji in ohranjanju zanimanja za uporabo aplikacije. 
-prijema je podeljevanje značk (angl. badges) uporabnikom za razne dosežke, kot +Tipičen primer poigritve je podeljevanje značk (angl. //badges//) uporabnikom za razne 
-nprpravilna rešitev v prvem poskusu ali v zelo kratkem času. Poigritve so v +dosežke. Značke delujejo kot zunanji motivacijski faktor, s katerim skrajšamo čas med 
-osnovi namenjene motivaciji in ohranjanju zanimanja za aplikacijo, saj +vloženim delom in nagrado -- tudi če je to le ikona na zaslonu.
-uporabniku predstavljajo jasen cilj.+
  
 Naš sistem ne vsebuje nobenih funkcionalnosti, ki bi bile primarno namenjene Naš sistem ne vsebuje nobenih funkcionalnosti, ki bi bile primarno namenjene
-poigritvi. Kljub temu pa se je izkazalo, da že uvodni zaslon s seznamom nalog+poigritvi. Kljub temu pa se je izkazalo, da že uvodni zaslon s seznamom nalog (slika 1a)
 opravlja podobno funkcijo. Študent namreč vidi, koliko nalog je na voljo v opravlja podobno funkcijo. Študent namreč vidi, koliko nalog je na voljo v
-vsakem poglavju in koliko jih šmora rešiti.+vsakem poglavju in koliko jih je že rešil. Vsaka rešena naloga to statistiko malo izboljša 
 +-- zelena pika dobi vlogo značke -- in s tem takoj nagradi študentov trud. 
 +Opazili smo tudi, da študenti pri problemih vztrajajo dlje časa, da bi dosegli 100% rešenih 
 +nalog za posamezni sklop. Razlogi za to so verjetno sorodni razlogom za priljubljenost raznih 
 +zbirateljskih dejavnosti in iger. 
 + 
 +V naslednji različici aplikacije bomo eksplicitno podprli poigritev z značkami -- recimo za 
 +pravilno rešitev v prvem poskusu ali v zelo kratkem času. Uporabnik bo na posebnem zaslonu 
 +lahko pregledoval dobljene značke in splošno statistiko reševanja.
  
  
 ====== Diskusija ====== ====== Diskusija ======
  
codeq/vivid2015.1436801230.txt.gz · Last modified: 2015/07/13 17:27 by timotej