PhD student in Dynamic Semantics Specification

The TU Delft Department of Software Technology has a open position for a PhD student in Programming Languages.

The starting date for the position could be as soon as July 1, 2021.

This ad also appears on academic transfer.

(Note: See also the related positions on static semantics specification and software restructuring (transformation).)

Code: TUD00245

Project Problem Outline

There is a lack of frameworks and tools that aid language designers in defining and implementing languages in a way that strikes a balance between:

  • Declarativity: allowing language definitions to be read and understood by language designers as well as programmers.
  • Executability: supporting realistic and efficient implementations of language run times.
  • Verifiability: providing a foundation for proving meta-properties of the defined language, and verifying properties of programs.

Definitional interpreters are an attractive style of language definition, since they are executable by construction. The key idea of a definitional interpreter is to define an object language by implementing an interpreter for it in a second, better-understood meta-language. There is no shortage of meta-languages that can be used to implement definitional interpreters, but existing meta-languages do not strike a satisfactory balance between declarativity, executability, and verifiability. Executability and efficiency typically comes at the cost of sacrificing declarativity and verifiability, and vice versa. The proposed Ph.D. project revolves around the development of a new language for defining languages that addresses this shortcoming. The vision is to provide a framework and tool that generates efficient language run times from declarative and verifiable language definitions. The goal of the Ph.D. project is to contribute to this vision.

Context: Scopes-and-Frames

Recent work on scopes-and-frames introduced a set of memory primitives for implementing lexical name binding (such as binders in λ calculus), and non-lexical name binding (such as module imports, class inheritance, etc.). Scopes-and-frames are:

  • Declarative: can be used to implement clear and concise definitional interpreters.
  • Executable: based on a relatively low-level memory model that we believe is amenable to implementation in realistic language run times.
  • Verifiable: based on a formal correspondence with scope graphs, to provide a uniform type safety principle for name binding in defined object languages.

But, to date, scopes-and-frames have not been integrated into any definition language that strikes a balance between the concerns above.

Potential Lines of Research

There are several research objectives that could be explored as part of this project. For example:

  • A definition language that provides integrated support for scopes-and-frames.
  • Language-parametric garbage collection for scopes-and-frames.
  • Abstractions for control and memory (the “control stack” in many language run times). Control and memory is important for efficient execution, and for defining language features such as exceptions, co-routines, continuations (call/cc), etc.
  • A virtual machine for executing language definitions. Inter-operability between different languages running on the same VM.
  • Type-safe compilation of type-safe language definitions.
  • […]

About the Position

We are looking for a versatile candidate who can contribute to the development of theoretical foundations, design of meta-languages, implementation and integration of languages and libraries in the language workbench, and evaluate the new techniques in language design case studies.

For more information see the publications on scope graphs. For this project see especially the ESOP’15, ECOOP’16, POPL’18, and ECOOP’19 papers.

The PI on the project is Casper Bach Poulsen. The PhD student will be co-supervised by Eelco Visser.


We are looking for an excellent candidate with the following qualifications, knowledge, and skills:

  • A master’s degree (or equivalent) in computer science

  • A strong and demonstrable interest in program languages and language engineering, including experience with language engineering topics such as compiler construction, type checking, and definitional interpreters.

  • A strong commitment to research: turn insights about programming languages and software development into generalizable and elegant theory and solutions; investigate the state-of-the-art/literature; evaluate ideas and solutions against relevant and motivating examples from software engineering practice.

  • A strong commitment to turning theory into software and demonstrable software engineering skills (with object-oriented and functional programming languages) to realize that.

  • Independent, self-motivated, reliable, and eager to learn.

  • Ability to work in a project team and take leadership and responsibility for different research tasks.

  • An excellent command of English and good academic writing and presentation skills.

Conditions of Employment

Fixed-term contract: 4 years.

TU Delft offers a customisable compensation package, a discount for health insurance and sport memberships, and a monthly work costs contribution. Flexible work schedules can be arranged. An International Children’s Centre offers childcare and an international primary school. Dual Career Services offers support to accompanying partners. Salary and benefits are in accordance with the Collective Labour Agreement for Dutch Universities: Gross salary PhD student ranging from € 2.395,– (1st year) to € 3.061,– (4th year) per month, plus holiday allowance (8%) and end-of-year bonus (8.3%).

As a PhD candidate you will be enrolled in the TU Delft Graduate School. TU Delft Graduate School provides an inspiring research environment; an excellent team of supervisors, academic staff and a mentor; and a Doctoral Education Programme aimed at developing your transferable, discipline-related and research skills. Please visit for more information.

The Organization

The Programming Languages Research Group is an internationally leading research group in programming languages, and active in areas such as language engineering, language design, domain-specific languages, software verification, and program logics. The section employs over 15 people, including academic staff, around 10 PhD students, and two postdoctoral researchers. The group is responsible for programming and programming languages education at the bachelor and master’s levels in the TU Delft Computer Science curriculum.

The Software Technology (ST) Department is one of the leading Dutch departments in research and academic education in computer science, employing over 150 people. The ST Department is responsible for a large part of the curriculum of the bachelor’s and master’s programmes in Computer Science as well as the master’s programme Embedded Systems. The inspiration for its research topics is largely derived from technical ICT problems in industry and society related to large-scale distributed processing, embedded systems, programming productivity, and web-based information analysis.

The Faculty of Electrical Engineering, Mathematics and Computer Science (EEMCS) is known worldwide for its high academic quality and the societal relevance of its research programmes. Offering an international working environment, the faculty has more than 1100 employees (including about 500 PhD students) and more than 3000 bachelor’s and master’s students. Together they work on a broad range of technical innovations in the fields of electrical sustainable energy, microelectronics, intelligent systems, software technology, and applied mathematics.

Additional Information

For more information about this position see the website or contact Casper Bach Poulsen and Eelco Visser.

To apply, please send your application letter by e-mail as soon as possible to Casper Bach Poulsen and Eelco Visser including in the subject the position code “TUD00245”.

All applications should include a PDF attachment with:

  • an application letter, including a statement of research interests that demonstrates an understanding of the project topic
  • a detailed CV (including list of publications if available)
  • a list of courses taken and grades obtained
  • a copy or link to your Master’s thesis
  • contact details of 2-3 references