Overview
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 Entities
- Algorithmic Program Verification group: PV, MC
- Model Learning group: PV, MC
- Optimisation research group: CP, CBLS
- Programming Language research group: FS, PV, PS, PP, RS, PL
Software
- Concuerror
- Daisy
- Dialyzer
- Encore
- Optimisation software of the Optimisation research group
Faculty Members
- Parosh Abdulla: PV
- Mohamed Faouzi Atig: PV
- Johannes Borgström: PP, FS
- Elias Castegren (see also his homepage
): FS, PV, PL
- Eva Darulova (see also her homepage
): PS, PV
- Pierre Flener (see also his homepage
): CP, CBLS
- Bengt Jonsson: MC
- Sven-Olof Nyström: PL
- Justin Pearson (see also his homepage
): CP, CBLS
- Kostis Sagonas (see also his homepage
): MC
- Tobias Wrigstad (see also his homepage
): FS, RS
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
Courses
- 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)