Eelco Visser (1966–2022) In Memoriam

Eelco Visser

Prospective PhD Students & Postdocs
I'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.
We are looking for a PhD student to work on software restructuring.
Expressing Intent
How 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 Spoofax
carview.php?tsp= How to enable language engineers to design and implement (domain-specific) programming languages? In the award winning 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. Read a brief history of the Spoofax language workbench or this TU Delft story.
Name Resolution with Scope Graphs
carview.php?tsp= How 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. A theory of critical edges enables sound scheduling of name resolution queries in evolving scope graphs and parallel execution of type checkers.
Multi-Purpose Syntax Definition with SDF3
carview.php?tsp= How 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, including syntax aware editors. 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. A recent paper provides an overview of the features of SDF3.
Programming Education at Scale with WebLab
carview.php?tsp= How 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.
Research in Practice
External applications of my group's research include: The NixOS linux distribution and software deployment system was first developed in my group. Oracle uses Spoofax to develop their graph analytics languages and compilers. Stack Graphs for code navigation at github are based on scope graphs.

Teaching

  • Compiler Construction

    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
  • Thesis Projects

    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

Recorded Talks

A YouTube Playlist with recordings of tutorials and research talks about (research related to) the Spoofax Language Workbench. See also the TU Delft Programming Languages Playlist.

Recent Publications

Recent Talks

Building 28 at Van Mourik Broekmanweg
Static Semantics

Goal: Enable language designers to declaratively specify the name binding and typing rules of programming languages and automatically derive (efficient and incremental) type checkers from such specifications. Develop high-level model for representation of name binding rules and operations such as name resolution and refactoring, depending on name binding.

Techniques: name binding and resolution with scope graphs, constraints, constraint solving.

Languages: Statix, NaBL2, NaBL.