This shows you the differences between two versions of the page.
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:// | Članek za eno [[http:// | ||
+ | |||
====== Uvod ====== | ====== Uvod ====== | ||
* motivacija - bluzenje iz projekta | * motivacija - bluzenje iz projekta | ||
+ | |||
====== Pregled aplikacije ====== | ====== Pregled aplikacije ====== | ||
Line 13: | Line 15: | ||
{{: | {{: | ||
- | Slika 1. (a) Izbira | + | Slika 1: (levo) izbira |
- | Kot večina računalniških sistemov za poučevanje tudi naš pristop | + | Kot večina računalniških sistemov za poučevanje tudi naša aplikacija |
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 | + | delno ali v celoti; v seznamu je to označeno z sivo oziroma |
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) |
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) |
- | % slika 2 (a = družinsko drevo ; b = grafični hint za sister/2) | + | {{: |
- | Uporabnikova rešitev na sliki 1b je skoraj pravilna, manjka le še | + | Slika 2: (levo) primer družinskega drevesa, (desno) grafični prikaz relacije '' |
+ | |||
+ | Uporabnikova rešitev na sliki 1 je skoraj pravilna, manjka le še | ||
pogoj, da '' | pogoj, 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 primerov; in 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; | ||
+ | | ||
+ | - 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. | + | pozitivni, predlagali pa so tudi vrsto možnih izboljšav. |
- | 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 '' | Primer testnega vhoda za nalogo '' | ||
- | ?- sister(vanessa, | + | ?- sister(vanessa, |
Pravilen program odgovori " | Pravilen program odgovori " | ||
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 '' | generira naključne kombinacije vhodnih podatkov; za predikat '' | ||
- | [int(1, | + | [int(1, |
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, | > Glavni problem je bil to, da pri veliko nalogah ne izpiše protiprimerov, | ||
- | ===== Vnaprej definirani namigi ===== | ||
===== Samodejno odpravljanje napak ===== | ===== Samodejno odpravljanje napak ===== | ||
- | Dodatna prednost uporabe | + | Prednost |
- | omogočajo | + | omogočajo |
- | 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 | + | Ta sled vključuje vse spremembe |
- | 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 | + | Te podatke uporablja metoda |
- | razvijamo v našem laboratoriju~\cite{lazar2014data}. | + | razvijamo v našem laboratoriju~\cite{lazar2014data}. |
+ | 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. // | ||
+ | predstavlja transformacijo ene vrstice v programu. Poleg začetnega in končnega stanja ima | ||
+ | vsak popravek tudi pripadajočo verjetnost -- delež uporabnikov, | ||
+ | pojavila vrstica //prej// in so jo spremenili v // | ||
+ | Nekaj primerov pogostih popravkov za predikat '' | ||
+ | |||
+ | ^ Prej | ||
+ | | '' | ||
+ | | '' | ||
+ | | '' | ||
+ | | / | '' | ||
+ | Tabela 1: tipični popravki za predikat '' | ||
+ | |||
+ | Prva dva primera popravita napačne argumente v podciljih; tretji primer zamenja | ||
+ | podcilj '' | ||
+ | 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, | ||
+ | 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; | ||
+ | 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 '' | ||
+ | |||
+ | Ročno pripravljeni namigi bodo služili tudi za razlago pogostih napak. Tukaj si oglejmo primer | ||
+ | takega namiga za nalogo '' | ||
+ | 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 '' | ||
+ | je večji od novega elementa '' | ||
+ | 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. | ||
+ | |||
+ | {{: | ||
+ | |||
+ | 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, |
- | 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. " |
- | Gre za t.i. " | + | (angl. |
- | elementov | + | namenjeni motivaciji in ohranjanju zanimanja za uporabo aplikacije. |
- | prijema | + | Tipičen primer |
- | npr. pravilna rešitev v prvem poskusu ali v zelo kratkem | + | dosežke. |
- | osnovi namenjene motivaciji | + | vloženim delom in nagrado -- tudi če je to le ikona na zaslonu. |
- | uporabniku predstavljajo jasen cilj. | + | |
Naš sistem ne vsebuje nobenih funkcionalnosti, | Naš sistem ne vsebuje nobenih funkcionalnosti, | ||
- | 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 še 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 ====== | ||