PhD Students in Software Restructuring

The TU Delft Department of Software Technology has open positions for two PhD students in the Programming Languages group in the area of Software Restructuring.

One position has been filled. The other position will remain open until filled. Please submit your application.

(See also the related position on dynamic semantics specification.)

Code: TUD01176

Project: Programming and Validating Software Restructurings

Legacy software is the result of years of accumulated investment, leading to code bases that are complex, poorly documented, and hard to modify. The maintenance effort for legacy code bases is significant. In fact, maintenance dominates the software development budget over the lifetime of a software system. To keep up the rate of innovation, software engineers should be enabled to make large-scale code restructurings efficiently and systematically to reduce complexity of the code. Modern integrated development environments such as Visual Studio and Eclipse support a fixed set of automated refactorings, i.e., transformations that improve the structure of existing code while preserving its behavior. Such refactorings are useful, but they are insufficient for the majority of maintenance restructurings, which require the ability to define custom, project specific transformations. Moreover large-scale restructurings do not have to be universally applicable, software engineers should instead be able to validate their correctness in the context of the project under consideration.

The goal of this project is to develop a language parametric framework that supports software engineers to define custom, project-specific software restructurings that can be automatically applied at scale to large code bases, and that supports the validation of the correctness of (the result of) restructurings. We will combine our expertise in language engineering and verification to develop a framework consisting of the following components: (1) A language parametric program model with graph-based semantic models including data-flow, control-flow, and name binding for executing large-scale restructurings of software projects with extraction from and rendering to program texts. (2) A domain-specific language for defining custom restructurings in terms of the concrete syntax of the language under transformation, operating on the semantic program model. (3) Techniques for validating the correctness of (the results of) restructurings, including static checks of safety properties on restructuring specifications, and post-translation validation of structural and behavioral properties of the program after restructuring. We will evaluate the framework by instantiating it to the C++ language, and applying it to restructuring case studies from the C++ code base of Philips.

Project Organization

The project is a collaboration between TU Delft, TU Eindhoven, TNO/ESI, and Philips Healthcare and funded by a project in the NWO/TTW Mastering Complexity (MasCot) program.

The project has funding for three PhD students, two at TU Delft and one at TU Eindhoven.

All PhD students will work two days per week on site at Philips Healthcare in Best to explore software restructuring requirements and test solutions in practice.


The project is part of, and funded by the MasCot partnership programme, set up between NWO-TTW and ESI (TNO). The goal of this programme is to investigate, develop and deliver the next generation of engineering methodologies that help manage the increasing complexity of high-tech systems. Achieving this goal helps to improve the quality and reduce the development costs of future generations of cyber-physical systems, thereby providing the Dutch industry a competitive advantage.

The MasCot programme constitutes in total 11 PhD students from six universities in four projects, executed in close collaboration with ASML, Philips Health Care and Canon Production Printing. The MasCot projects offers a unique opportunity to learn about different industrial cases, exemplifying the increasing complexity of high-tech systems, and take part in the design and implementation of the potential solutions for these problems. The research work will be done both at the university and on site at the partner companies, thereby providing a broader perspective. At least once a year, the projects’ members meet for a full day at the MasCot Annual meeting to interact with each other, with representatives of the industry partners and with ESI. Besides this, through the MasCot Newsletter, and other initiatives further interaction across the program is facilitated, providing ample opportunity to build up a strong network with industry, ESI (TNO), and fellow PhD students from other universities, increasing future employability.

TU Delft Job Description

The Spoofax team at TU Delft is pursuing a broad research program to develop a language workbench that supports high-level declarative language definition, the generation of programming environments (including editors, parsers, type checkers, and interpreters/compilers) from language definitions, and the (automated) verification of properties of language definitions and their implementations.

One line of research in this program is concerned with the formalization of the name binding rules in programming languages. To that end, the group has developed a theory of name resolution based on scope graphs, and applied it in the design and implementation of a meta-language for static semantics. In dynamic semantics, scope graphs provide a uniform model for memory at runtime and serve as the basis for intrinsically-typed definitional interpreters, enabling the automatic verification of type soundness.

We are seeking two PhD Students to join the Spoofax team to (1) extend the theory and application of scope graphs to the specification of programmable software restructurings, (2) develop analogs to scope graphs for capturing and transforming control flow, (3) develop a software restructuring framework for the C++ programming language based on this framework, and (4) validate the restructuring infrastructure through restructuring production C++ code at Philips Healthcare.

We are looking for versatile candidates 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 case studies.

For more information see the publications on scope graphs. For this project see the ESOP’15, OOPSLA’18, OOPSLA’20 papers. Also see the work on Coccinelle on patching C programs based on control-flow graph matching.

The PI on the project was Eelco Visser. The PhD student will be supervised by Casper Bach Poulsen. Furthermore the students wil collaborate with the PhD student from TU Eindhoven, with co-applicants Jan Friso Groote and Jeroen Keiren at TU Eindhoven, Arjan Mooij from TNO/ESI.


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 also TU Delft or contact Casper Bach Poulsen.

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

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