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.
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
TU Delft offers PhD-candidates a 4-year contract, with an official go/no go progress assessment after one year. Salary and benefits are in accordance with the Collective Labour Agreement for Dutch Universities, increasing from € 2395 per month in the first year to € 3061 in the fourth year. As a PhD candidate you will be enrolled in the TU Delft Graduate School. The TU Delft Graduate School provides an inspiring research environment with an excellent team of supervisors, academic staff and a mentor. The Doctoral Education Programme is aimed at developing your transferable, discipline-related and research skills.
The TU Delft offers a customisable compensation package, discounts on health insurance and sport memberships, and a monthly work costs contribution. Flexible work schedules can be arranged. For international applicants we offer the Coming to Delft Service and Partner Career Advice to assist you with your relocation.
TU Delft (Delft University of Technology)
Delft University of Technology is built on strong foundations. As creators of the world-famous Dutch waterworks and pioneers in biotech, TU Delft is a top international university combining science, engineering and design. It delivers world class results in education, research and innovation to address challenges in the areas of energy, climate, mobility, health and digital society. For generations, our engineers have proven to be entrepreneurial problem-solvers, both in business and in a social context. At TU Delft we embrace diversity and aim to be as inclusive as possible (see our Code of Conduct). Together, we imagine, invent and create solutions using technology to have a positive impact on a global scale.
Challenge. Change. Impact!
Faculty Electrical Engineering, Mathematics and Computer Science
The Faculty of Electrical Engineering, Mathematics and Computer Science (EEMCS) brings together three disciplines – electrical engineering, mathematics and computer science. Combined, they reinforce each other and are the driving force behind the technology we use in our daily lives. Technology such as the electricity grid, which our faculty is helping to make future-proof. We are also working on a world in which humans and computers reinforce each other. We are mapping out disease processes using single cell data, and using mathematics to simulate gigantic ash plumes after a volcanic eruption. There is plenty of room here for ground-breaking research. We educate innovative engineers and have excellent labs and facilities that underline our strong international position. In total, more than 1,100 employees and 4,000 students work and study in this innovative environment.
Click here to go to the website of the Faculty of Electrical Engineering, Mathematics and Computer Science.
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 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.
For information about this vacancy, you can contact Dr. Casper Bach Poulsen, email: firstname.lastname@example.org, tel: +31 15 27 87181.
For information about the selection procedure, please contact R. Sharabi, secretary, email: email@example.com.
Are you interested in this vacancy? Please apply before 01-06-2021 via the application button and upload:
- a detailed CV (including list of publications if available).
- a statement of research interests.
- a list of courses taken and grades obtained.
- a copy or link to your Master’s thesis.
- contact details of 2-3 references.
- A pre-employment screening can be part of the selection procedure.
- You can apply online. We will not process applications sent by email and/or post.
- Acquisition in response to this vacancy is not appreciated.