Motivation:
Studying computer science is the most enjoyable thing I have ever done.
Programming in particular, has sparked something in me and I am sure that you know the feeling, your sense of time shifts, it is addictive, it is challenging, and suddenly you realize that it is 4 am.
However, after working in industry for a couple of years, my joy for programming has been tainted by the realization that software systems often degrade into a complicated mess. I have become quite inquisitive figuring out why this happens and what can be done about it. As such, my curiosity and my search for a meaningful career has imposed a resolute desire to do research.
I have a broad range of interests within the area of programming technology. I am especially fond of formal semantics, complexity theory and distributed systems programming, and I find programming language design to be particularly exhilarating.
I teach the course Programming Language Implementation and Formalisation in collaboration with Lars Vadgaard and Michael Thomsen from the Programming Technology section. Furthermore, if you are a master student who is highly interested in practical programming, I have a suggested topic for your master thesis below:
Master thesis proposal:
On the other hand, modern systems programming languages, such as Rust, attempt to achieve safety without sacrificing runtime performance by inferring proof obligations about references. For instance, the Rust compiler performs a program analysis called borrow checking, that ensures that no pointers are dereferenced outside of their conservative lifespan, and that certain kinds of data races cannot happen.
High-performant memory-safe programming models such as Rust's ownership model, makes Rust preferable in large systems programming projects. However API's for proprietary computing platforms such Nvidia's Compute Unified Device Architechture (CUDA) only support traditional languages such as Fortran and C++. So, intefacing with such platforms may sacrifice memory safety, and state-of-the art is still experimental.
In this thesis, we attempt at enabling efficient image processsing programming Rust and CUDA _without_ sacrificing memory safety, by designing and implementing a domain specific language (DSL) about image processing.
The student is encouraged to develop the language as an open source project, and can collaborate with the Oslo company MuyBridge, against dual licensing the software under the Apache 2.0 and MIT licenses, and signing an NDA.