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 18:42] timotej |
codeq:vivid2015 [2015/07/14 17:15] (current) timotej |
||
---|---|---|---|
Line 15: | Line 15: | ||
{{: | {{: | ||
- | Slika 1: (a) izbira naloge, (b) urejevalnik. | + | Slika 1: (levo) izbira naloge, (desno) urejevalnik. |
- | 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 | ||
Line 23: | Line 23: | ||
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 133: | Line 135: | ||
> 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 ===== | ||
- | |||
- | % slika 3 (grafični namig za sins/3) | ||
Line 157: | Line 154: | ||
Naša metoda deluje na nivoju besedila in je zato skoraj popolnoma neodvisna od programskega | 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 | jezika. Za vsako obstoječo rešitev razdeli zaporedje vstavljenih in izbrisanih znakov | ||
- | na zaporedje t.i. // | + | na zaporedje t.i. // |
predstavlja transformacijo ene vrstice v programu. Poleg začetnega in končnega stanja ima | predstavlja transformacijo ene vrstice v programu. Poleg začetnega in končnega stanja ima | ||
vsak popravek tudi pripadajočo verjetnost -- delež uporabnikov, | vsak popravek tudi pripadajočo verjetnost -- delež uporabnikov, | ||
- | pojavila vrstica //prej// in so uporabili ta popravek. | + | pojavila vrstica //prej// in so jo spremenili v //potem//. |
Nekaj primerov pogostih popravkov za predikat '' | Nekaj primerov pogostih popravkov za predikat '' | ||
- | ^ Prej ^ Potem ^ Verjetnost ^ | + | ^ Prej |
- | | '' | + | | '' |
- | | '' | + | | '' |
- | | '' | + | | '' |
- | | '' | + | | / |
Tabela 1: tipični popravki za predikat '' | Tabela 1: tipični popravki za predikat '' | ||
- | Prva dva primera popravita napačne argumente v posameznih | + | Prva dva primera popravita napačne argumente v podciljih; tretji primer zamenja |
- | klic predikata | + | podcilj |
- | ki pove, da X in Y ne smeta biti ista oseba (to je tudi popravek, ki ga predlaga aplikacija | + | ki pravi, da X in Y ne smeta biti ista oseba -- to je tudi popravek, ki ga predlaga aplikacija |
- | na sliki 1b). | + | 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 ====== | ||