PhD position in Software Language Engineering @ University of Amsterdam

by Thomas Van Binsbergen, Dec. 22, 2020

The position offers a large degree of freedom and the topic of research can be discussed.
Potential candidates can send me their own project proposals touching upon one or more of the following topics:

- Modular language definition and implementation in meta-languages, language workbenches and/or host languages for embedded languages
- Component-based language definitions
- Generalized parsing and disambiguation
- (Modular) operational semantics and definitional interpreters
- Rapid prototyping of domain-specific languages
- Development environments for exploratory programming (e.g. notebooks and REPLs)

Relevant terms, techniques, and technologies: attribute grammars, functional programming, (generalized) LL/LR parsing, structural operational semantics, static analyses, term rewriting, compilation, interpretation, language design, modularity, monads, algebraic effects

The Complex Cyber Infrastructure (CCI) group of the University of Amsterdam is constructing and applying domain-specific languages (DSLs) in the context of complex cyber infrastructures (CCIs).

The efficacy of the DSLs is evaluated through prototype language implementations derived from formal definitions of the languages, thereby relying on the `correct by construction' principle.

Rapid DSL prototyping drastically speeds up the DSL design process and requires modular, extensible and maintainable language definitions given within meta-languages or language workbenches.

To truly realize the potential of rapid DSL prototyping, further research is required in several areas of software language engineering, including modular semantics, component-based language definitions, attribute grammars and ambiguity reduction.

In this role you will work with dr Thomas van Binsbergen to improve the state of the art with regard to meta-languages and rapid prototyping of DSLs. You will apply the developed techniques to the design and implementation of DSLs for CCIs, thereby impacting directly the wider research efforts of the CCI group.

In this position you will master and develop software language engineering techniques and learn how to apply these techniques within programming language research.

What are you going to do?

This project offers the freedom to explore and develop your own interests on the intersection of software language engineering and architecture design and implementation. Possible focus and starting points can be on one or more of the following topics:

  • the application and improvement of declarative formalisms (such as attribute grammars, or semantic specification languages) for defining DSLs through executable specifications;
  • the identification and definition of the fundamental constructs (funcons) of classes of DSLs and evaluating the efficacy of these definitions for rapid DSL prototyping;
  • the compilation of norm specifications to operational control and enforcement mechanisms within reference infrastructures or blockchain platforms;
  • actor-oriented programming as a target of for DSL compilers or as a host language for so-called embedded DSLs;
  • a project of your own description related to the topics of software language engineering, DSLs and distributed systems.

Embedded in the Systems and Networking Lab, you will become part of a large group of fellow PhD students and researchers actively pursuing and solving challenges in distributed, cloud and parallel computing.

What do we require?

  • An MSc degree in computer science, software engineering or a related discipline;
  • enthusiasm for the research process: studying research papers, solving complex problems, applying creative thinking, evaluation, reflection and disseminating findings via writing and oral presentations;
  • a strong affinity with programming language technology across language paradigms, i.e. object-oriented, event-driven, functional, and logical programming;
  • demonstrable skills in functional and logical programming;
  • the ability to critically analyze abstract models as well as concrete implementations;
  • the ability to work individually as well as effectively in a team;
  • fluency in written and spoken English.

Our offer

A temporary contract for 38 hours per week for the duration of 4 years (the initial contract will be for a period of 18 months and after satisfactory evaluation it will be extended for a total duration of 4 years). This should lead to a dissertation (PhD thesis). We will draft an educational plan that includes attendance of courses and (international) meetings. We also expect you to assist in teaching undergraduates and master students.

The starting salary will be in accordance with university regulations for academic personnel. It will range from a minimum €2,395 to €3,061 (scale P) gross per month based on full-time employment.

This is exclusive 8% holiday allowance and 8.3% end-of-year bonus. A favourable tax agreement, the ‘30% ruling’, may apply to non-Dutch applicants. The Collective Labour Agreement of Dutch Universities is applicable.

Are you curious about our extensive package of secondary employment benefits like our excellent opportunities for study and development? Take a look here.


Do you have questions about this vacancy? Or do you want to know more about our organisation? Please contact:

About the Faculty of Science and the Informatics Institute

The Faculty of Science has a student body of around 7,000, as well as 1,600 members of staff working in education, research or support services. Researchers and students at the Faculty of Science are fascinated by every aspect of how the world works, be it elementary particles, the birth of the universe or the functioning of the brain.

The mission of the Informatics Institute is to perform curiosity-driven and use-inspired fundamental research in Computer Science. The main research themes are Artificial Intelligence, Computational Science and Systems and Network Engineering. Our research involves complex information systems at large, with a focus on collaborative, data driven, computational and intelligent systems, all with a strong interactive component.