Boonuspunktid kuldklientidele
Meie eksam väga suuresti kordab semestris õpitu. Eksamit võib seetõttu asendada lõpuprojektiga, kui aine on juba selge. Mida rohkem punkte on juba kogutud, seda kergema projektiga võib pääseda! Projekt on eelkõige mõeldud tudengitele, kes on aasta jooksul oma oskusi juba tõestanud, seega peab olema kogutud vähemalt 55 punkte kodutööde ja kontrolltööde pealt.
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 uurimine. Äkki tead ise mõnda huvitavad programmeerimiskeelt või programmianalüüsi vahendit, mida tahaksid uurida? Tasub ka vaadata meie õppetooli lõputöö teemad, sest kõik seal mainitud süsteemid võib siin ka uurida.
Teine variant on oma (domeenspetsiifilise) keele leiutamine ja implementeerimine. Inspiratsiooni võite saada Columbia ülikooli projektidest. Võib ka teha mõned edasiarendused AKTK keelele või katsetada Xtext, et AKTK keele IDE luua.
Thonny!
Aivar on valmis järgmisel aastal juhendama lõputöid, mis lisavad Thonny IDE-le mõne kasuliku täienduse (http://plas.cs.ut.ee/index.php/Teemad/Thonny) AKT-ga seostuksid kõige paremini teemad, kus üritatakse kasutaja poolt kirjutatud programmi kuidagi analüüsida -- olgu siis staatiliselt (st. ilma programmi käivitamata) või dünaamiliselt (nt. lisades programmi mingeid lisainstruktsioone, mis annavad programmi jooksutamisel tema käitumise kohta infot).
Kui arvad, et midagi sellist võiks sulle meeldida, siis on meil sulle ainukordne pakkumine -- alusta programmianalüüsiga juba AKT projekti raames ning otsusta, kas sulle see tõesti meeldib (või kas see tundub sulle jõukohane). Alustada võiks näiteks siit: https://courses.cs.ut.ee/2017/AKT/spring/Main/PythonASTIntro
Projekt võiks olla midagi sellist:
- Programm, mis etteantud Pythoni programmist leiab ebavajalikud read (piisab, kui tuvastatakse ilmsed juhtumid, nt. "x = 2 + 34" kui muutujat x järgnevalt ei kasutata)
- Programm, mis tuvastab, kas tudengi lahendus rekursiooniülesandele on tõepoolest rekursiivne või ta asendas rekursiooni tsükliga.
- ... <sinu oma ettepanek> ...
Funktsionaalprogrammeerimine!
Kui Sul on huvi funktsionaalprogrammeerimise vastu, siis on ka väga hea uudis! Vesalil on käimas uus küberkaitse initsiatiiv, mille aluseks on töökindel programmeerimine. Selle raames on väga suur roll verifitseerimisel, programmianalüüsil ja kõrgemal tasemel (funktsionaalsete) veebiraamistikude kasutamisel. Siin on mõned suuremad projektid võimalik teha, aga AKT raames oleks piisaks uurida nende raamtehnoloogiad:
- Heartbleed tüüpi vigade leidmine staatilise analüüsiga. AKT raames piisaks tutvuda programmeerimiskeelega OCaml või uurida Facebook'i Infer analüsaatorit.
- Microservice arhitektuuride kohta luua Scala õppematerjale. AKT raames lihtsalt uurida Lagom raamistiku või Lift või Slick, jne. Me ei eelda siin, et peaks Scalat ise oskama, pigem peaks üritama aru saama, mis nendega teha saab.
- ... kõik funktsionaalprogrammeerimisega seotud teemad on teretulnud ...
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.