CS 585: Domain-Specific Languages (Spring 2018)


Course Description

CS 585, Domain-Specific Languages, is a four-credit course for graduate students. This course presents aspects of the design and implementation of domain-specific languages. This course presents aspects of the design and implementation of domain-specific languages and focuses on the development of domain-specific languages. A major part of this class will be a student project, in which each student (possibly in a team) will design, redesign, and implement (prototypically) a domain-specific language of their choice. The focus of this class is on the development of domain-specific languages. A major part of this class will be a student project, in which each student will design, redesign, and implement (prototypically) a domain-specific language of their choice. The format of this class will be a combination of:

Contents of this web page:

Slides and Code Examples

I will make the slides and code examples available after the lectures.

1.Introduction [pdf] (Version 03/30/18)
2.Denotational Semantics (in Haskell) [pdf] (Version 03/31/18)
3.DSLs in Haskell [pdf] (Version 03/31/18)
4.Domain Analysis [pdf] (Version 04/06/18)
5.Semantic Language Design [pdf] (Version 04/16/18) Cal.hs Map.hs DateTime.hs BiFunctor.hs Rep.hs

Back to the table of contents

In-Class Paper Presentations

Back to the table of contents

Background Material

  1. DSL Report Card
    Description: DSL-ReportCard.pdf
    Template: DSL-ReportCard.tex
  2. Semantics-Driven DSL Design
    Book chapter: SDDD-BookChapter.pdf
    SLE'11 paper: SemanticsFirst_SLE11.pdf
    Don Norman: Human-Centered Design Considered Harmful
  3. Evaluation
    Cognitive Dimensions: Alan Blackwell's Resource Web Site
  4. Exemplary previous student projects
    Data Visualization DSL, Karl Smeltzer, GPCE 2014
    Surveyor DSL, Wyatt Allen, Haskell 2012
    Juggling Animation DSL, Chris Bogart, Report
    Game Theory DSL, Eric Walkingshaw, JFP 2009
    Declarative Scripting DSL, Tim Bauer, SLE 2009
    Probabilistic Programming DSL, Steve Kollmansberger, JFP 2006

Back to the table of contents

Grading

Grades will be roughly computed as follows: For 90% or more, you get an A; for less than 30% you get an F. The remaining grades in between are assigned linearly. I might lift individual grades if clustering of points achieved by students suggests so (but I won't assign grades worse than indicated by the above linear schema). If you are too lazy to calculate, you can look up grades in this table.

Back to the table of contents


last change: April 16, 2018 Martin Erwig  erwig@oregonstate.edu