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.
CS 583 Functional Programming (Fall 2014)
An introduction to advanced functional programming features and techniques, using Haskell. The course will begin with an accelerated introduction to Haskell, so no prior experience is necessary. However, students new to functional programming may need to invest some extra effort in the first few weeks. We will focus especially on producing elegant functional programs, and use peer-critiquing throughout the course.
Past courses are listed on my teaching page.
- Best paper award at GPCE'14 – September 15, 2014
- Projectional Editing paper accepted to GPCE'14 – July 8, 2014
- Variational Data Structures paper accepted to Onward!'14 – May 27, 2014
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.