15-819: Domain-Specific Languages

Instructor Jean Yang
Time Tuesday/Thursday 3:00-4:20pm
Location GHC 4102
Prerequisites Students should have strong backgrounds in programming and be able to understand formal semantics of programming languages.

These days, making your own programming language is all the rage. If Facebook and Apple have them, then we should all have them too. But what does it mean to make a programming language? What does it mean to make a research language? What is a programming language?

This seminar aims to answer these questions by providing an overview of the state-of-the-art in domain-specific languages. We begin with a survey of domain-specific languages, from those well-specified in research to those popular in practice, as well as tools and techniques for specifying and implementing domain-specific languages. The course will include five units:

  1. Why domain-specific languages? We survey DSLs for different purposes.
  2. How do we implement domain-specific languages? We survey state-of-the-art techniques for implementing embedded and stand-alone DSLs.
  3. DSLs for systems programming. We examine how good language design can make low-level programming less error-prone.
  4. DSLs for security. We examine how language-level constructs help ensure security and privacy properties.
  5. DSLs for biological modeling. We examine how programming languages can improve expressiveness and reasoning for other domains.

The first 30 minutes of each class will involve a presentation of the reading and the rest of the class will take a discussion format.