Kalmer Apinis
Mingi algoritmi formaalne tõestamine Rocq-is
Üks viis korrektse koodijupi saamiseks see genereerida Rocq-i koodist, kus on võimaik korrektsust formaalselt tõestada. Kuna formaalne tõestamine on parajalt keerukas, ei saa lõputöö jaoks valida väga keerukat algoritmi. Baka tasemel pakun välja intervalli hulga aritmeetika. Hea oleks, kui keegi jätkaks Aksel Õim-i tööd ja looks praktiliselt kasutatava korrektse Push-Relabel algoritmi implementatsiooni. Siin võite ka ise oma lemmikalgoritmi välja pakkuda.
Teine variant oleks jätkata Kadi Sammuli tööd ja tõestada midagi seoses meie PRG projektiga. Sellisel juhul oleks kõne all maksta ka stipendiumi.
Teemad
- tõestada oma valitud algoritm
- viia praktiliseks Push-Relabel algoritmi implementatsioon
- tõestada midagi seoses võrrandisüsteemide lahendajatega
Java baitkoodi staatiline analüüs
Uurimisrühmal on palju kogemusi C keele staatilise programmianalüüsiga. Nüüd soovime lisaks tegeleda ka Java maailma programmide analüüsiga. Programmi staatiline analüüs arvutab programmi koodi järgi selles kehtivaid invariante. Selle põhjal saab anda hinnanguid programmi (korrektsuse) kohta. See muidugi oleneb sellest, milliseid analüüse käivitatakse (ehk milliseid invariante otsitakse).
Abstraktse interpretatsiooni teooria järgi on staatiline programmianalüüs põhimõtteliselt lahendatud juba seitsmekümnendatel. Meie uurimisrühma liikmed on samuti 15 aastat kirjutanud programmianalüüsi temaatilisi teadusartikleid ja programme. Samas, praktilisi ja tavakasutajale sobivaid tööriistu praktiliselt ei eksisteeri.
Kuna see teema on seotud meie PRG projektiga, siis saame nende teemade puhul arutada stipendiumi maksmist.
Teemad
- võrrandisüsteemi lahendajate implementeerimine (teadusartiklite põhjal)
- relatsioonilise analüüsi tulemuse selgitamine (saab kirjutada teadusartikli)
- mäluanalüüsi integreerimine süsteemi
- Põder analüsaatori parandamine, et võistelda SV-COMP'l
- Põder analüsaatori parandamine
Õppematerjalid Funktsionaalprogrammeerimise jaoks
Siin on palju erinevaid võimalusi, millest alustada, aga lõppkokkuvõttes tahame FP kursuse jaoks saada juurde kvaliteetseid, sisukaid ja väljakutset pakkuvaid ülesandeid. Näiteks tõlkida mingi reaktiivse programmeerimise lahendus Haskellist Idrisesse, uurida/lahendada mingit andmeteaduse tüüpprobleemi Idrises või uurida mingit huvitavat algoritmi.
Lisaks on võimalus täiendada FP õpikut.
Teemad
- projektitööd õppematerjalide loomine kursusele FP
- mingi muu teema, mis teeb FP kursust paremaks
- FP õpiku jaoks ülesannete valmistamine
- FP õpiku lisapeatükid --- OCaml, Elm, Haskell
Funktsionaalne programmeerimine
Teame, et FP on teoorias tore. Aga kas seda on ka tegelikult tore kasutada? Selliste mõtete uurimiseks oleme nõus juhendama teie toodud ülesande, kui selle lahendamine kasutab FP-d piisavalt suures mahus.
Teemad
- Teie toodud probleemi lahendamine mõne uue FP lahendusega (näiteks Elm või Elixir)
- Teie toodud probleemi lahendamine mõne klassikalise FP lahendusega (näiteks Haskell või Ocaml)
Kontakt: Kalmer Apinis (kalmer.apinis@ut.ee)
Tehtud lõputööd
- Aksel Õim, "Push-relabel algoritmi formaalne tõestamine Coq raamistikus", 2024
- Kadi Sammul, "Võrrandi lahendamine kombineeritud laiendamise ja kitsendamise abil Coqis", 2024
- Maarika Markus, "Veebirakendus funktsionaalprogrammeerimise ja -keele Idris õppimiseks", 2022
- Karoliine Holter, "Funktsionaalprogrammeerimise õpetamine Idrises ", 2021
- Peter Kallaste, "Efektisüsteemide õpetamine Haskellis", 2021
- Karl Marten Mägi, "Modulaarne staatiline programmianalüüs", 2021
- Halliki Mullari, "Java baitkoodi sünkroniseerimise analüüs raamistikus Põder", 2020
- Liem Radita Tapaning Hesti, "Autotööstuse tarkvara mudelipõhine arendamine ja analüüs", 2019
- Raul Redpap, "Kahni algoritmi tõestamine Coq raamistikus", 2019
- Mirjam Iher, "Nõrgima eeltingimuse staatiline analüüs pinukeeltele", 2019
- Andre Sinisalu, "Java programmide staatiline intervallanalüüs raamistikus Põder", 2019
- Simmo Saan, "Abstraktsete domeenide omaduspõhine testimine", 2018
- Liisi Kerik, " Funktsionaalse programmeerimiskeele liigisüsteem", 2018
- Tenno Veber, "Haskelli FRP teegi uurimine: Reactive-banana", 2017
- Karl-Martin Uiga, "Tüübiohutu FRP teegi uurimine: Grapefruit", 2017
- Kaarel Tinn, "Veebirakenduse loomine funktsionaalses programmeerimiskeeles Elixir", 2017
- Marti Mutso, "Haxl teegi uurimine", 2017
- Margus Pollmann, "Haskelli teegi Euterpea uurimine", 2017
- Sebastian Wiesner, "Implementing Widening as an Abstract Domain", 2014
- Stefan Dangl, "State space reduction by injecting external invariants into the internal program representation of Goblint"
- Yannick Scherer, "Signed agnostic interval analysis for Gobint", 2013