Programmeerimise ja loogika õpetamisega seotud teemad
1. Tehisaru markerid programmeerimise kodutöödes [Bak/Mag]
Tartu ülikooli aine "Programmeerimine" on mõeldud tudengitele esmase programmeerimisoskuse omandamiseks, kuid selles antavate ülesannetega saab hõlpsasti hakkama ka tehisaru. Paljud õppijad kasutavadki ülesannete lahendamiseks seda, mistõttu aine läbiviimisel on oluline arvestada tehisaru kasutuse määra ja mõjudega.
Töö eesmärk on uurida, kuidas on aastate jooksul muutunud võimalikule tehisaru kasutusele viitavate markerite esinemissagedus programmeerimise aine kodutöödena esitatud programmides. Sellised markerid on näiteks eripärased programmikonstruktsioonid, tüübivihjed, veakäsitluse esinemine, abifunktsioonid jne. Töös tuleks välja valida sobivad markerid ning luua skriptid nende automaatseks eraldamiseks programmidest. Seejärel lugeda kokku nende markerite esinemiste arvud, analüüsida muutusi statistiliselt ja tõlgendada tulemusi. Algandmed on olemas. Teema ühendab endas programmeerimise ja andmeanalüüsi ning aitab mõista tehisaru rolli õppeprotsessis.
2. Ainete "Programmeerimine" ja "Teoreetiline informaatika" õppetulemuste vahelised seosed [Bak]
Kas programmeerimises edukal õppijal läheb hästi ka teoreetilises informaatikas? Informaatika bakalaureuseõppekavas on neil ainetel üsna erinevad suunitlused: "Programmeerimine" keskendub praktilisele programmeerimisoskusele, "Teoreetiline informaatika" aga arvutiteaduse teoreetilistele alustele. Paljud õppijad võtavad oma õpingute jooksul mõlemat, mistõttu saab neid aineid omavahel võrrelda.
Lõputöö eesmärk on uurida, kuidas on õppijate hindeliste tegevuste tulemused nendes ainetes omavahel seotud, kui püsivad on need seosed aastate lõikes ning mis järeldusi saab neist teha ainete sisu ja õppekorralduse kohta. Andmetena on olemas mõlema aine tulemuste tabelid aastatest 2019-2026, mida tuleks sobivate statistiliste meetoditega analüüsida ja tulemusi tõlgendada.
3. Prologi programmide automaatkontrolli süsteem [Bak]
Aine "Loogika arvutiteaduses" ühe teemana lahendavad õppijad Prologis programmeerimise ülesandeid. Praegu kontrollitakse esitatud programme käsitsi, mistõttu õppijad saavad tagasisidet viivitusega ja ühekordselt ning ka õppejõududele on programmide vigade tuvastamine töömahukas. Eesmärk on luua Moodle'i VPL-harjutuse jaoks automaattestimise süsteem, mis kontrollib õppijate esitatud Prologi programme ja annab kohest tagasisidet. Tuleks luua vajalikud käivitusskriptid ja testide failid, katsetada süsteemi õigete ja tüüpilisi vigu sisaldavate lahendustega ning hinnata süsteemi kasutatavust õppetöös.
4. Loogika õpitööriist [Bak/Mag]
Aines "Loogika arvutiteaduses" õpetatakse mitmesuguseid loogilisi meetodeid, kuid nende harjutamine toimub praegu paberil ja tekstmaterjalide põhjal. Oleks vaja luua õppimist toetav veebitööriist, mis võimaldab õppijal samm-sammult vastavat meetodit rakendada, tegevuse käigus ise otsuseid teha ja jooksvalt tagasisidet saada. Töö lõpuks peaks valmima töötav prototüüp koos mõnede näidisülesannete ning tööriista analüüsi või katsetusega. Kasuks tuleb veebirakenduste loomise oskus. Loogika ainet ei pea olema enne läbinud, kuid vajalik on valmisolek valitud meetod töö käigus selgeks õppida.
Mõned võimalikud tööriistad:
- Rekursiivsete definitsioonide ja struktuurse induktsiooni õpiprogramm. Kasutaja paneb kirja antud hulga või funktsiooni rekursiivse definitsiooni, programm kontrollib selle õigsust ning kuvab tagasiside. Seejärel saab kasutaja tõestada defineeritud objektide omadusi, kirjutades järjest võrdusi-võrratusi ja lihtsaid fraase ning lastes programmil neid kontrollida.
- Loomuliku tuletuse tuletusassistent. Kasutaja tuletab antud eeldustest antud väite lausearvutuse (soovi korral ka predikaatarvutuse) loomulikus tuletuses kastidega stiilis. Samme saab teha nii eeldustest väite kui ka väitest eelduste poole. Programm kontrollib sammude õigsust, skoobireeglite järgimist ning annab tagasisidet ja juhiseid.
- Valemite teisendamise tööriist. Kasutaja teisendab predikaatarvutuse valemi sammukaupa prenekskujule, Skolemi kujule või disjunktkujule, määrates igal sammul, kas samm säilitab samaväärsuse või ainult kehtestatavuse. Selle tööriista jaoks loodava infrastruktuuri saab realiseerida ka teiseks väljundiks, Herbrandi universumi ja Herbrandi laiendi koostamise õpiprogrammiks.
- Prologi otsingupuu visualiseerija. Etteantud Prologi teadmistebaasi ja päringu puhul avab programm sammukaupa otsingupuu tippe ja näitab, kus otsing igal hetkel parajasti asub, millist reeglit rakendatakse ning kuidas tekib tagasivõtt. Niimoodi on võimalik näha, miks mõni Prologi otsing võib kesta pikalt või lõpmatult. Esimeses lähenduses võib piirduda puhta Prologiga, aga võimalik on programmi kaasata ka järjendid, aritmeetika ja lõikepredikaat.
- Hoare'i loogika tuletusassistent. Kasutaja konstrueerib etteantud programmi korrektsuse tuletuse Hoare'i loogikas. Tööriist kontrollib tehtavate sammude õigsust, sealhulgas loogiliste implikatsioonide kehtivust kas ise (näiteks lineaarse aritmeetika ja lausearvutuse tehete puhul) või välise tööriista (näiteks Z3) poole pöördudes.
- Tsükliinvariantide õpiprogramm. Kasutaja sisestab antud tsükli ning antud eel- ja järeltingimuse jaoks tsükliinvariandi. Tööriist annab tagasisidet, kas invariant sobib või on liiga tugev, liiga nõrk või ei säili tsükli käigus. Kui invariant ei sobi, siis toob kontranäite.
Teemasid on võimalik laiendada või kitsendada.
Kontakt: reimo.palm@ut.ee