Programming Languages Dissertation Series

Doctoral dissertations completed within the Programming Languages group (and previously in the Software Engineering group under supervision of Eelco Visser), and defended at Delft University of Technology are listed below.

Language-Parametric Methods for Developing Interactive Programming Systems
Gabriël Konat (TU Delft)

Date: Mon, November 18, 2019
Time: 15:00
Room: Aula
Note: This is a PhD defense. The candidate's talk starts at 15.00.

All computers run software, such as operating systems, web browsers, and video games, which are used by billions of people around the world. Therefore, it is important to develop high-quality software, which is only possible through interactive programming systems that involve programmers in the exchange of correct and responsive feedback. Fortunately, for many general-purpose programming languages, integrated development environments provide interactive programming systems through code editors and editor services.


Declarative Syntax Definition for Modern Language Workbenches
Eduardo Amorim (TU Delft)

Date: Wed, June 19, 2019
Time: 12:30
Room: Science Centre
Note: This is a PhD defense. The candidate's talk starts at 12:00.

Programming languages are one of the key components of computer science, allowing programmers to control, define, and change the behaviour of computer systems. However, they require considerable effort to design, implement, maintain, and develop them. Fortunately, declarative approaches can be used to define programming languages facilitating their development and implementation.


Declarative Specification of Information System Data Models and Business Logic
Daco Harkes (TU Delft, Google)

Date: Tue, March 26, 2019

Room: Aula Conference Centre (building 20), Mekelweg 5, 2628 CC Delft
Note: This is a PhD defense. The candidate's talk starts at 14:30.

Information systems are systems for the collection, organization, storage, and communication of information. Information systems aim to support operations, management and decision-making. In order to do this, these systems filter and process data according to business logic to create new data. Typically these information systems contain large amounts of data and receive frequent updates to this data. Over time requirements for information systems change, from the decision making logic to the number of users interacting with the system. As organizations evolve, so must their information systems. Our reliance on information systems to make decisions and the ever changing requirements poses the following challenges for information system engineering. Validatability: how easy is it for information system developers to establish that a system ‘does the right thing’? Traceability: can the origin of decisions made by the system be verified? Reliability: can we trust the system to consistently make decisions and not lose our data? Performance: can the system keep responding promptly to the load of its users? Availability: can we trust that the system performs its functionality all of the time?And finally, modifiability: how easy is it to change the system specification when requirements change?In this dissertation we show the feasibility and usefulness of declarative programming for information systems in light of these challenges. Our research method is design research. This iterative method repeats four phases: analysis, design, evaluation, and diffusion. We analyze the challenges of information system engineering, design a new programming language to address these, evaluate our new programming language in practice, and diffuse our knowledge through scholarly articles. This resulted in four new declarative languages: the Relations language, IceDust, IceDust2, and PixieDust. Our contributions can be summarized by the new features of these languages. Native multiplicities, bidirectional relations, and concise navigation improve information system validatability and modifiability over object-oriented and relational approaches. Derived attribute values improve traceability. Incremental and eventual computing based on path analysis and calculation strategy switching improve information system modifiability without sacrificing performance and availability over object-oriented and relational approaches. Calculation strategy composition improves validatability, modifiability, and reliability over reactive programming approaches. And finally, Bidirectional derived relations improve information system validatability over relational approaches. The results of this dissertation can be applied in practice. We applied IceDust2 to the learning management information system WebLab. We found that validatability, traceability, reliability, and modifiability were considerably improved while retaining similar performance and availability. Moreover, the fact that IceDust and PixieDust work in different domains, business logic and user interfaces respectively, suggests that our language features could be applied to more domains.


  1. Markus Völter. Generic Tools, Specific Languages. June 2014. Advisors: Eelco Visser and Arie van Deursen.
  2. Maartje de Jonge. Language-Parameteric Techniques for Language-Specific Editors. January 2014. Advisors: Eelco Visser and Arie van Deursen.
  3. Sander van der Burg. A Reference Architecture for Distributed Software Deployment. June 2013. Advisors: Eelco Visser, Eelco Dolstra, and Arie van Deursen.
  4. Sander Vermolen. Software Language Evolution. October 2012. Advisors: Eelco Visser and Arie van Deursen.
  5. Zef Hemel. Methods and Techniques for the Design and Implementation of Domain-Specific Languages. January 2012. Advisors: Eelco Visser and Arie van Deursen.
  6. Lennart Kats. Building Blocks for Language Workbenches. December 2011. Advisors: Eelco Visser and Arie van Deursen.