Projekt
Eksamit võib asendada lõpuprojektiga, kui aine on muus osas selge ja kodutöödest on saadud vähemalt 91 punkti. Projekti raames tuleb kas midagi valmis programmeerida ja/või mõnest olemasolevast süsteemist aru saada ning anda sellest kirjalik ülevaade. Projekti sooritamiseks tuleb meiega eelnevalt kokku leppida. Projekte esitatakse suuliselt eksamisessiooni ajal. Projekt võiks olla raske/huvitab, aga mahu poolest võrreldav eksamiks õppimisega.
Teemad
Projekti teemaks sobivad kõik keelte disain ja implementatsiooniga seotud probleemide lahendamine, aga peamine on see, et meid peab see teema ka huvitama. Järgnevalt on juhendaja kaupa loetletud, mis teemad neid huvitavad.
Aivari teemad
Aivar on nõus juhendama igasugu oma keele loomise katsed. Ta arendab ka Pythoni IDE-t Thonny, mille raames on võimalik üsna palju huvitavaid ja kasulike projekte välja mõelda.
- Koodi analüüs ja testimise vahendid. Kõige lihtsam on arvatavasti analüüsida või teisendada Pythoni koodi.
- Domeenspetsiifilise keele leiutamine ja implementeerimine. Inspiratsiooni võite saada Columbia ülikooli projektidest (2012 ja 2013).
- AKTK keele edasi arendamine Xtext süsteemis.
Vesali teemad
Vesalit huvitab ainult programmi analüüs, verifitseerimine ja abstraktne teooria. Viimasel ajal ka dünaamilise analüüsi ja baitkoodi teisendamise teemad, aga üldiselt mida abstraktsem, seda parem! Siin on mõned näited Vesali teemadest.
- Me arendame koos Müncheni tehnikaülikooliga analüsaatorit Goblint, mistõttu programmianalüüs on minu peamine huvi. AKT aine raames võib alustada programmianalüüsi teooria või praktiliste raamistikedega tutvumist, näiteks LLVM või WALA.
- Oracle Labs katsetab ka väga huvitavate asjadega. Üks projekt on interpretaatori raamistik Truffle. Võiks proovida AKTK keele interpretaatori kirjutamine selle raamistiku abil.
- Võiks uurida erinevaid verifitseerimise süsteeme, näiteks Contracts for Java või KeY project, aga näiteks ka IntelliJ analüüs ja või Nullable annotatsioonid.
- Dünaamilise analüüs ja baitkoodi töötlemine. Siin võib lisaks ASM'ile ka uurida AspectJ ja natuke uuemad raamistikud, näiteks DiSL.
- Parsimise tehnoloogia või teooria uurimine. On väga palju teisi parsimise meetodeid ja töövahendid. Automaatide teema kohta on ka päris mitut uut kaasaegset arendust, mida julgem tudeng võiks uurida!
Milleks teha projekt?
Peamine eelis on teha midagi huvitavamat kui järjekordne käsitsi parser. Hea oleks sellise teema valida, millega saab bakalaureuse tööna edasi arendada. Kindlasti ei tasu projekti teha, kui programmeerimiskeelte temaatika ei huvita.