Master of Programming Languages

For students participating in the TU Delft Computer Science and Embedded Systems master’s programs we always have openings for master’s thesis projects.

All master’s thesis projects are aligned with our research. They often are connected to one of our ongoing research projects, but we also frequently use master’s projects to explore new research directions.

Note that research is rarely finished and that projects often generate new research questions. If you are interested in the topic of one of the ongoing or closed projects below, do contact the supervisors to find out if there is more to do in that area.

Project Location

Projects can be conducted at:

  • TU Delft in our own research labs, in close collaboration with our postdocs and PhD students
  • Industry (as part of an internship), usually with companies (in The Netherlands or abroad) with which we have an ongoing research collaboration (e.g. Oracle, Océ, ING, …)
  • Other (international) universities – we have a rich network of academic friends around the world.

You can make an appointment with one of the PL faculty members to see what projects are currently open, or you can propose your own project, provided there is a clear connection with the research we conduct at our labs.

Composing your Study Program

If you plan to conduct your master’s project at PL, you will need to include at least two of the CS master’s courses PL teaches in your IEP (Individual Exam Program). We strongly recommend you to follow our compiler construction and programming languages seminar courses. Besides our own programming languages related courses, when choosing the electives in your program you can consider including courses in such areas as software engineering, machine learning, data science, distributed systems, and security.

Optionally, you can start your research with a 7-8 week literature survey (IN4306, 10EC). This assignment is concluded with a report containing an overview of the state-of-the-art in a particular branch of research.

Proposing your Own Project

Under certain conditions it can also be possible to propose your own project. In those cases it is important to

  • Study a number of previous master’s theses
  • Identify an ongoing research project to which your proposal is connected.
  • Study a number of currently open master’s project ideas and identify the ones that are closest to your idea.

In particular you need to carefully think about the research component of your proposal, and have a clear idea on why your proposal is novel — it should advance the state-of-the-art in programming languages. If you wish to pursue this route it is advisable to select and contact a possible supervisor as early as possible.

Thesis Template

As a template for your master thesis, it is recommended that you fork the PL Master Thesis LaTeX Template repository, and manage your references at

Open Projects

Versioned Data Models

Supervisor(s): Eelco Visser, Christoph Lofi, Asterios Katsifodimos
Posted: March 17, 2019

Software Restructuring

Supervisor(s): Eelco Visser, Casper Bach Poulsen
Location: TU Delft, industry
Posted: March 15, 2019

Ongoing Projects

Incremental Scannerless Generalized-LR Parsing

Student: Maarten Sijm
Supervisor(s): Eelco Visser, Jasper Denkers

Previous Projects

Dynamix on the Frame VM

Student: Chiel Bruin
Supervisor(s): Eelco Visser, Casper Bach Poulsen
Defended: April 29, 2020

Redesigning the Spoofax Testing Language

Student: Volker Lanting
Supervisor(s): Eelco Visser, Gabriël Konat
Defended: January 29, 2020

Incrementalizing Statix: A Modular and Incremental Approach for Type Checking and Name Binding using Scope Graphs

Student: Taico Aerts
Supervisor(s): Eelco Visser, Hendrik van Antwerpen
Defended: September 26, 2019

A type system for dynamic instances

Student: Albert ten Napel
Supervisor(s): Eelco Visser, Robbert Krebbers
Defended: September 05, 2019

SCL-T - Template programming for Siemens SCL

Student: Jeffrey Goderie
Supervisor(s): Eelco Visser, Casper Bach Poulsen
Defended: August 29, 2019

Task Observability in change driven incremental build systems with dynamic dependencies

Student: Roelof Sol
Supervisor(s): Eelco Visser, Gabriël Konat
Defended: August 29, 2019

Dependent Types for Invariants in Session Types

Student: Wiebe van Geest
Supervisor(s): Eelco Visser, Casper Bach Poulsen
Defended: December 14, 2018

Testing Code Generators against Definitional Interpreters

Student: Giannis Papadopoulos
Supervisor(s): Eelco Visser, Sebastian Erdweg
Defended: December 05, 2018

Incremental Type Checking in IncA

Student: Sander Bosma
Supervisor(s): Eelco Visser, Sebastian Erdweg
Defended: November 02, 2018

Abstract Interpretation of Program Transformations using Regular Tree Grammars

Student: Jente Hidskes
Supervisor(s): Eelco Visser, Sebastian Erdweg
Defended: November 02, 2018

Towards Language Parametric Web-Based Development Environments

Student: Olaf Maas
Supervisor(s): Eelco Visser
Defended: July 13, 2018

Portable Editor Services

Student: Daniël Pelsmaeker
Supervisor(s): Eelco Visser, Gabriël Konat
Defended: May 03, 2018

The Design and Implementation of a Domain-Specific Language for the Description of Medical Devices

Student: Tim Rensen
Supervisor(s): Eelco Visser
Defended: April 18, 2018

Random Term Generation for Compiler Testing in Spoofax

Student: Martijn Dwars
Supervisor(s): Eelco Visser, Hendrik van Antwerpen
Defended: March 12, 2018


Student: Gerben Kunst
Supervisor(s): Eelco Visser, Daco Harkes
Defended: January 30, 2018

A Modular SGLR Parsing Architecture for Systematic Performance Optimization

Student: Jasper Denkers
Supervisor(s): Eelco Visser, Eduardo de Souza Amorim
Defended: January 24, 2018

TODO: add links to (more) previous theses and student papers