<?xml version="1.0"?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:dc="http://purl.org/dc/elements/1.1/"><rdf:Description rdf:about="https://repozitorij.uni-lj.si/IzpisGradiva.php?id=136467"><dc:title>Domenska ontologija programskih vzorcev pri uvodnem programiranju</dc:title><dc:creator>Zapušek,	Matej	(Avtor)
	</dc:creator><dc:creator>Nančovska Šerbec,	Irena	(Mentor)
	</dc:creator><dc:subject>uvodno programiranje</dc:subject><dc:description>Znanje računalniškega programiranja je eno od temeljnih znanj na področju računalništva. Učencem omogoča razvijanje veščin za reševanje problemov, algoritmično, analitično in abstraktno razmišljanje ter logično sklepanje. S tem jim daje pomembno prednost v sodobnem tehnološkem svetu. Izkušnje kažejo, da imajo začetniki pri usvajanju tega znanja pogosto težave, ki so posledica pomanjkljivega strateškega znanja. Običajni načini poučevanja programiranja se namreč osredotočajo na sintaktično in semantično znanje, ki pa za začetnike ni najbolj težavno. Največji izziv jim namreč predstavlja proces zasnove rešitve, ko morajo funkcionalnosti posameznih programerskih konstruktov povezati v pravilno rešitev. Eksperti so pri tem zelo učinkoviti, saj uporabljajo širok nabor programskih vzorcev, ki so jih izgradili v dolgotrajnem procesu učenja. Programski vzorci so abstraktne predstavitve rešitev za ponavljajoče algoritmične probleme, ki se pojavljajo pri programiranju in omogočajo pristopanje k reševanju problemov na konceptualni ravni. Njihovo vključevanje v učni proces pripomore pri usvajanju splošnih strategij reševanja problemov, omogoči uporabo abstrahiranih konceptov, pomaga pri pridobivanju splošnega razumevanja o tem, kaj je bistveno pri programiranju, in omogoča pisanje oz. razumevanje kompleksnih programov s sestavljanjem manjših medsebojno povezanih delov. Začetniki najbolj učinkovito usvojijo znanje, ki je vključeno v vzorcih, kadar jih poučujemo eksplicitno, to pa zahteva njihovo formalno predstavitev. Slednja omogoča bolj poglobljen vpogled v procese algoritmičnega reševanja problemov. Kljub naraščajoči količini literature o programskih vzorcih pa je opazno pomanjkanje pristopov za njihovo formalizacijo. 
V okviru doktorske disertacije smo razvili od programskega jezika neodvisno formalizacijo programskih vzorcev, ki omogoča njihovo deklarativno predstavitev na različnih ravneh abstrakcije. Deklarativna predstavitev programskega vzorca opisuje njegovo strukturo preko elementov in relacij med njimi. Izbrana raven abstrakcije pa nam omogoča poljubno podrobno predstavitev delov programskega vzorca. 
Obstoječe formalizacije programskih vzorcev, kot npr. blok diagrami in abstraktna sintaktična drevesa, temeljijo na proceduralnih značilnostih algoritmov. To pomeni, da se fokusirajo na opisovanje zaporedja izvajanja ukazov in na implementacijske posebnosti v konkretnem programskem jeziku, na ta način pa zakrivajo strukturo programskega vzorca in posledično ne omogočajo deklarativnega vpogleda v bistvene vidike načrtovanja rešitve. Predlagana formalizacija neposredno naslavlja izpostavljene pomanjkljivosti obstoječih pristopov, saj omogoča ekspliciten vpogled v strukturo vzorca, s tem pa predstavlja način za preučevanje in študij procesa zasnove rešitve. Deklarativni način predstavitve vzorca prav tako predstavlja temelj za realizacijo modularnega pristopa k sestavljanju programskih vzorcev, od elementarnih do kompleksnih. Vpogled v to, iz katerih elementov je vzorec sestavljen in na kakšen način se ti med seboj povezujejo, omogoča natančnejše spremljanje procesa grajenja vzorca, nudi podporo pri sestavljanju kompleksnih vzorcev in olajša uporabo znanja, vključenega v programskih vzorcih, pri novih problemih. 
Temeljna premisa pri izdelavi formalizacije je dojemanje algoritma kot prepleta podatkovnih operacij z operacijami, ki nadzirajo tok izvajanja ukazov, na osnovi katere smo določili elemente formalizacije: elementarne vzorce, kompozitne vzorce, module in relacije. Elementarni vzorci predstavljajo osnovne gradnike formalizacije in ponazarjajo osnovne programske konstrukte (začetek/konec, pogojni stavek, zanka) in/ali osnovne operacije nad podatki (poizvedba/spreminjanje vrednosti in prečenje preko podatkovne strukture). Kompozitni vzorec predstavlja deklarativno predstavitev programskega vzorca in izraža njegovo strukturo. Kompozitni vzorec dobimo tako, da elementarne vzorce povežemo z relacijami, ki določajo, v kakšen odnosu so. Modul je kompozitni vzorec, predstavljen kot ena enota, ki ga lahko glede na definiran vmesnik vključimo v drug kompozitni vzorec. Uporaba modulov nam omogoča predstavitev kompleksnejših vzorcev na različnih nivojih abstrakcije.
Veljavnost oz. uporabnost izdelane formalizacije smo prikazali v okviru eksperimenta, ki smo ga izvedli na Pedagoški fakulteti Univerze v Ljubljani s študenti programa Dvopredmetni učitelj, smer računalništvo z vezavami, ki so uspešno zaključili predmet iz uvodnega programiranja. Analizirali smo njihove rešitve in ugotovili, da so različno implementirane pravilne rešitve, ki niso vključevale odvečne kode, ustrezale istemu vzorcu, zapisanemu v formalizaciji. Pri pravilnih rešitvah, ki so vključevale odvečno kodo, je formalizacija omogočila jasen vpogled, kje v rešitvi je bila dodana odvečna koda. Primerjava vzorcev napačnih rešitev s pravilno pa je razkrila, v kateri fazi zasnove rešitve je učenec naredil napako. To so pomembni rezultati, ki dokazujejo uporabnost formalizacije pri didaktiki programiranja.
Naslednji pomemben rezultat doktorske disertacije pa je ontologija programskih vzorcev, ki smo jo izdelali na osnovi predstavljene formalizacije. Predstavitev domene znanja o programskih vzorcih s pomočjo ontologije namreč omogoča razvoj učinkovitih načinov za vrednotenje rešitev, odkrivanje pomanjkljivosti v znanju na konceptualnem nivoju, iskanje pogostih napačnih razumevanj, določanje posamezniku prilagojenih učnih poti, strukturiranje učnih gradiv in uporabo v tutorskih sistemih. Izdelana ontologija ponazarja konceptualni premik na področju predstavitve programskih vzorcev, saj z njo dobimo vpogled v strukturo programskih rešitev programerjev oz. v njihove načine razmišljanja. Ravno ta lastnost formalne predstavitve strateškega znanja, ki je vključena v programskih vzorcih, predstavlja osnovo za didaktične pristope, s katerimi lahko naslavljamo problem pomanjkljivega strateškega znanja pri začetnikih.  Prav tako pa ponuja mnoge priložnosti za nadaljnje raziskovanje, iskanje inovativnih načinov uporabe in nadaljnjega razvoja ontologije za potrebe didaktike programiranja.</dc:description><dc:date>2022</dc:date><dc:date>2022-05-06 08:24:56</dc:date><dc:type>Doktorsko delo/naloga</dc:type><dc:identifier>136467</dc:identifier><dc:language>sl</dc:language></rdf:Description></rdf:RDF>
