My research is broadly focused on language design and domain-specific languages. I believe that clear and expressive languages are essential for understanding, solving, and explaining difficult problems. I am especially interested in type systems, functional programming, visual languages, and in designing languages for domain experts who may not be professional programmers.
Currently, I am researching formal representations and analyses of variation. This research is motived by improving the development and maintenance of massively configurable software, such as software product lines and the Linux kernel. I am the co-creator of the choice calculus, a simple calculus of variation that can be easily extended with new features and instantiated by new object languages.
A property of good software is the ability to add new features in a modular way. Many programming languages provide good support for some kinds of modular extensions but not others. For example, in most object-oriented programs it is trivial to add new kinds of objects, but adding new operations on existing objects is not modular since we must edit existing class definitions. Conversely, in most functional programs it is easy to add new functions, but adding new kinds of objects is hard since we must edit the data type definitions. The challenge of supporting all kinds of modular extensions has been called the “expression problem”. In this seminar we will study modular extensibility, focusing especially on the design patterns and language features that address the expression problem.
Past courses are listed on my teaching page.
- Projectional Editing paper accepted to GPCE'14 – July 8, 2014
- Variational Data Structures paper accepted to Onward!'14 – May 27, 2014
Talk at VARIETE project kickoff –
November 5, 2013
I’ll be giving a talk on variational data structures at the Copenhagen Meeting on Variability Analysis on Nov 18.
Elsewhere on the Web
I have accounts at all the usual places, though most of them are neglected. Here are my profiles at some sites I actively use.