Joachim Tilsted Kristensen

Doctoral Research Fellow - Programming Technology
Image of Joachim Tilsted Kristensen
Norwegian version of this page
Mobile phone +45 20781940
Username
Visiting address Gaustadalléen 23B 0373 Oslo
Postal address Postboks 1080 Blindern 0316 Oslo

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:

Traditionally, systems programming languages, such as C++, have provided a very fine grained, although unsafe, control over the low-level details of memory management. In this context, "unsafe" means that programming errors lead to undefined or unexpected program behaviour, rather than being rejected by the compiler.

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. 

Publications

View all works in Cristin

  • Kristensen, Joachim Tilsted; Vadgaard, Lars-Bo; Thomsen, Michael Kirkedal & Kirkeby, Maja Hanne (2023). Semi-Inversion with Sum Types.
  • Kristensen, Joachim Tilsted (2023). Tail recursion transformation for invertible functions.
  • Kristensen, Joachim Tilsted; Kaarsgaard, Robin & Thomsen, Michael Kirkedal (2023). Unification as a means of completing partial data structures.
  • Kristensen, Joachim Tilsted (2023). Tail recursion transformation for invertible functions.
  • Kristensen, Joachim Tilsted (2022). Dependent types modulo phase distinction.
  • Kristensen, Joachim Tilsted (2022). Jeopardy : an invertible programming language.
  • Kristensen, Joachim Tilsted; Kirkedal Thomsen, Michael & Kaarsgaard, Robin (2022). Jeopardy: An Invertible Functional Programming Language.

View all works in Cristin

Published Apr. 21, 2022 3:39 PM - Last modified Dec. 3, 2023 4:36 PM