- Professor of Computer Science
- Antoni van Leeuwenhoek Professor
- Chair of TU Delft Programming Languages Group
- Department of Software Technology
- Faculty of Electrical Engineering, Mathematics and Computer Science
- Delft University of Technology
- Delft, The Netherlands (CEST/CET)
- email@example.com | firstname.lastname@example.org
- About | Contact
Prospective PhD Students & PostdocsI'm looking for PhD students, postdocs, and student programmers. See my research topics, research projects, and publications for an impression of my interests. See the PL group's open positions for what is available right now. Send me an email with CV and motivation/research interests, also to explore future opportunities.
Expressing IntentHow to enable software engineers to express intent directly in terms of the concepts of a domain of interest (and get the corresponding implementation for free)? Most of my (group's) research is related, one way or another, to that question, and includes: design of meta-languages for language design (to support the development of new languages), language theory and implementation techniques (such as parsing, name resolution, constraint solving, rewriting), design of domain-specific languages for particular domains (such as web programming, build systems, digital printers), evaluation of these languages in applications (such as WebLab, conf.researchr.org).
Declare Your Language with SpoofaxHow to enable language engineers to design and implement (domain-specific) programming languages? In the Spoofax Language Workbench project we explore solutions and integrate these in a programming environment for the development of languages using high-level declarative meta-languages for syntax, static semantics, dynamic semantics, program analysis, and program transformation.
Name Resolution with Scope GraphsHow to formalize the name binding rules of programming languages? We are developing scope graphs, a uniform framework for the representation of a wide range of name binding patterns in programming languages. A general theory of name resolution interprets scope graphs to resolve references to their corresponding declarations. Scope graphs are a core component of the Statix language for type system specification.
Declarative Syntax Definition with SDF3How to declaratively specify the syntax of programming languages and derive a variety of syntactic tools? The Syntax Definition Formalism SDF3 supports declarative specification of all syntactic aspects of a programming language in a single source from which a range of syntactic processors can be derived. Notable features of SDF3 include template productions to generate pretty-printing directives, safe and complete declarative disambiguation, and layout constraints for the definition of layout sensitive languages.
[New: Multi-Purpose Syntax Definition with SDF3 (SEFM'20)]
Programming Education at Scale with WebLabHow to scale programming education to large numbers of students? How to scale delivery of many assignments and exam questions for a course and still provide feedback to students? WebLab provides a web-based learning environment for programming education that supports lab assignments and proctored digital exams. WebLab is currently used in 25 courses at TU Delft, including a course on concepts of programming languages that got it all started.
In this course students study declarative meta-languages for compiler construction such as context-free grammars, scope graphs, type constraints, and strategic rewriting. Using this knowledge they build a compiler and IDE for ChocoPy using the Spoofax language workbench.Master CS | CS4200 | Q1+Q2 | Info
Seminar Programming Languages
In this seminar we discuss papers from the programming languages literature.Master CS | CS4130 | Q1 | Info
Web Programming Languages
In this course students study programming language facilities for web programming.Master CS | CS4275 | Q3 | Info
Language Engineering Project
In this course students explore (some aspect) of the design and implementation of a (domain-specific) programming language by building an implementation in Spoofax.Master CS | IN4333 | Q4 | Info
I supervise bachelor and master thesis projects in computer science at TU Delft. See my research areas to get an impression of my interests. Send me an email if you are interested in doing a project with me.Bachelor & Master CS | CSE3000, IN5000 | Q1-4 | Info
- Other PL courses | Older courses
- Program Committee Member of ECOOP 2021
- Program Committee Member of PEPM 2021
- Review Committee Member of OOPSLA 2020
- Steering Committee Chair of ACM SPLASH 2019-2021
- Co-organizer of BAPL 2020
- Track co-chair of VERSEN track at ICT.OPEN 2020
- Program Committee member of PLNL 2019
- Review Committee Chair of OOPSLA 2019
- Associate Editor of PACMPL 2019
- Track co-chair of VERSEN track at ICT.OPEN 2019
- Steering Comittee Member of SPLASH 2013-2022
- Older activities
Paper: Gradually Typing Strategies by Jeff Smits and Eelco Visser accepted at SLE 2020November 15, 2020 (posted September 09, 2020)
Keynote/Paper: Multi-Purpose Syntax Definition with SDF3 at Software Engineering and Formal Methods 2020 (SEFM20) at CWI in Amsterdam [PDF,Slides].September 16, 2020
Talk: A Declarative Syntax Definition for OCaml at OCaml'20August 28, 2020
Tutorial: Slides and recordings of my tutorial on the Spoofax Language workbench at PLDI'20June 19, 2020
Demonstration: SDF3 at Strumenta Community MeetupApril 24, 2020
Demonstration: Statix at Strumenta Community MeetupApril 24, 2020
Paper: FlowSpec: A declarative specification language for intra-procedural flow-Sensitive data-flow analysis by Jeff Smits, Guido Wachsmuth, and Eelco Visser published in Journal of Computer Languages.March 31, 2020
Talk: Constructing Hybrid Incremental Compilers for Cross-Module Extensibility with an Internal Build System at IFIP WG2.11 meeting in Paris (based on Programming 2020 article).January 24, 2020
Talk: Type Checkers from Declarative Specifications in Statix at INRIA in Paris.January 24, 2020