Skip to main content
Department of Information Technology

Programming Languages and Systems

Improving the programmer’s toolbelt


A programming language is what a programmer uses to specify what a program should do. The program code acts as instructions for the computer, meaning that efficient code better utilises the resources of the computer. But programs are often developed over time by more than one person, and being able to write reusable code that is understandable by another human can be as important as writing code that makes the program run fast.

Programming language research is about developing new programming languages, as well as tools for existing programming languages, that help programmers write code that is correct, efficient, and which allows programmers to clearly express their intent. The research includes both theoretical and practical aspects, from the mathematical modelling of programming language semantics to the implementation of efficient runtime systems.

Research Topics

  • Formal semantics (FS): Mathematical modelling of programming languages, for example to prove properties about programs or programming languages
  • Model checking (MC): Verifying the correctness of finite-state models
  • Programming language design (PL): Design of type systems and other programming language constructs for increased programmer expressivity
  • Probabilistic programming (PP): Statistical modelling using techniques from programming languages
  • Program synthesis (PS): Synthesising programs from other sources than code, for example natural language descriptions or examples
  • Program verification (PV): Ensuring that programs are correct with respect to their specification
  • Runtime systems (RS): Efficient implementations of memory management, garbage collection and concurrency
  • Constraint programming (CP): An AI approach to optimisation by systematic search: modelling languages, high-level constraints, high-level types for decision variables
  • Constraint-based local search (CBLS): Modelling languages, search languages, solver design

Research Awards

  • Distinguished Artefact at Programming Language Design and Implementation (PLDI) 2020 (Albert Mingkun Yang, Erik Österlund, and Tobias Wrigstad)
  • Distinguished Artifact at Software Language Engineering (SLE) 2019 (Elias Castegren and Kiko Fernandez)
  • Dahl-Nygaard Junior Prize 2012 to Tobias Wrigstad


  • 1DL006: Programming for Teacher Training Students
  • 1DL028: Object-Oriented Programming in Java
  • 1DT034: Programming Theory
  • 1DL042: Programming
  • 1TD062: High Performance Programming
  • 1DT096: Operating Systems and Process-Oriented Programming
  • 1DL201: Program Design and Data Structures
  • 1DL221: Imperative and Object-Oriented Programming Methodology
  • 1DL242: Advanced Software Design
  • 1DL311: Semantics of Programming Languages
  • 1DL321: Compiler Design I
  • 1TD327: Programming in Python
  • 1DL330: Functional Programming I
  • 1TD433: Computer Programming I
  • 1DL442: Combinatorial Optimisation and Constraint Programming (slides)
  • 1DL450: Advanced Functional Programming
  • 1DL451: Modelling for Combinatorial Optimisation (slides)
  • 1DL530: Introduction to Parallel Programming
  • 1DL541: Language Abstractions for Concurrent and Parallel Programming
  • 1DL550: Low-Level Parallel Programming
  • 1DL560: Parallel Programming for Efficiency
  • 1DL580: Project in Concurrent and Parallel Programming
  • 1DL601: Maintenance Programming
  • 1TD722: Computer Programming II
  • Introduction to Programming Language Research (PhD course)
Updated  2022-06-08 11:35:16 by Victor Kuismin.