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.

...
Strategic Language Workbench Improvements
Jeff Smits (TU Delft)

Date: Fri, September 08, 2023
Time: 10:00
Room: Senaatszaal, Auditorium
Note: This is a PhD defense. The candidate's talk starts at 09.30.

Computers execute software to do the tasks we expect from them. This software is written by human beings, we call this programming. The most common way to program is by writing text in a programming language. A programming language is very structured so we can be precise, but ultimately these languages are still for humans to read and write. In order to execute the written program, we need to translate it to a list of tiny instruction steps that the hardware of the computer can execute. This translation is also automated with software. The most common forms this software takes is (1) interpreters that execute a program live as they read it, or (2) compilers that translate the entire program for later execution.

[more]


...
Correct by Construction Language Implementations
Arjen Rouvoet (TU Delft)

Date: Thu, October 14, 2021
Time: 15:00
Room: Senaatszaal, Auditorium
Note: This is a PhD defense. The candidate's talk starts at 14.30.

The PhD thesis is about the design of meta-languages for the specification and implementation of typed programming languages, such that the implementation is formally proven type-correct. For language front-ends—i.e., type checkers—the thesis contributions a method for automatically obtaining sound type checkers from declarative type-system specifications. Language back-ends—i.e., interpreters and compilers—are developed in the dependently typed meta-language Agda in an intrinsically typed style so that the implementation also encompasses a type-safety proof. The contributions of the thesis there is to make it to scale these ideas from simply typed functional languages, to languages with references a la ML or concurrency and session-typed cross-thread communication, and a low-level language with labels and jumps. This is made possible by developing, among other things, an abstract, shallowly embedded separation logic in Agda, as a basis for functional abstractions (e.g., monads) that encapsulate both computational work and proof work.

[more]


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

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

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.

[more]


...
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.

[more]


...
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.

[more]


...
Generic Tools, Specific Languages
Markus Voelter (TU Delft)

Date: Wed, June 18, 2014
Time: 12:30
Room: Aula Conference Centre (building 20)

Reference

[more]


...
Methods and Techniques for the Design and Implementation of Domain-Specific Languages
Zef Hemel (TU Delft)

Date: Wed, January 11, 2012
Time: 12:30
Room: Aula Conference Centre (building 20)

Reference

[more]


...
Building Blocks For Language Workbenches
Lennart Kats (TU Delft)

Date: Tue, December 13, 2011
Time: 15:00
Room: Aula Conference Centre (building 20)

Reference

[more]


  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.