Published using Google Docs
CSEP590 Spring 2016: Domain-Specific Languages
Updated automatically every 5 minutes

CSE P 590c: Domain-Specific Languages

Spring 2016

Location: Johnson 111

Mondays 6:30pm -- 9:20pm

Table of Content

News

Course Description

Course Format

The course forum

Staff and Office Hours

Lectures

Part I: Three methods for implementing a language, with case studies.

1. Overview and Call-Chaining-Based DSLs (3/28)

2. Interpreters (4/4)

3. Parsing and Compilation (4/11)

Part II: Languages for modern domains

4. Templating (4/18)

5. Reactive Programming (4/25)

6. Visualization (5/2)

7. High-performance computing (5/9)

8. Big data (5/16)

9. Data manipulation and program synthesis (5/23)

10. Memorial Day (5/30)

News

Course Description

The design principles of domain-specific languages.  Implementation methods based on lightweight compilation and meta-programming support included in modern programming languages such as Lua, JavaScript and Scala.  Case studies include DSLs for data visualization (d3), web client programming (jQuery, arrowlets, Rx), and big data frameworks (the Hadoop family).

Course Format

A homework will be assigned on most weeks and will be due in 13 days.  The lecture will be divided into two lectures and one hands-on session which will typically introduce concepts that will be elaborated in the homework. Some guest lectures may be given.

The course forum

We will be using piazza for both class-wise discussions and messages to the staff. Please sign up on piazza if you haven’t done so.

Staff and Office Hours

Ras Bodik, Monday 5-6pm in CSE 644

email: bodik@cs.washington.edu 

skype: rbodik2

phone: (206) 616-7172

Pavel Panchekha, Wednesdays 4:30-5:30pm in CSE 407

email: pavpan@cs.washington.edu

hangouts: me@pavpanchekha.com

phone: (201) 421-4942

Alex Polozov, Tuesdays 5-6pm in CSE 220

email: polozov@cs.washington.edu

skype: apskim

phone: (425) 623-4121

Lectures

Part I: Three methods for implementing a language, with case studies.

1. Overview and Call-Chaining-Based DSLs (3/28)

  1. Why domain-specific languages (pdf)
  2. Hands-on session: fluent regular expressions (pdf)
  3. D3: a language for data visualization (pdf)

HW1 assigned.  Due 4/10 4/13, 11:59pm. (HW1 handout)

2. Interpreters (4/4)

  1. The architecture of interpreters. Desugaring. Scoping. (pdf)
  2. Query interpreters.  Case study: LINQ. (pdf)
  3. Hands-on session: a data query language.

HW2 assigned.  Due 4/17, 4/24, 11:59pm. (HW2 handout)

3. Parsing and Compilation (4/11)

  1. Background in grammars, parsing, and syntax-directed translation (ppt, pdf)
  2. The ANTLR parser and translator framework (ppt, pdf)
  3. Hands-on session: constructing a regex visualizer with ANTLR (repo)

Part II: Languages for modern domains

4. Templating (4/18)

  1. Mustache/Handlebars (pdf, tutorial), Genshi (pdf, tutorial)
  2. HW3: Implementing templating with ANTLR (pdf)
  3. React, the data binding part (tutorial)

        

        HW3 assigned. Due 5/8, 11:59pm. (HW3 handout)

5. Reactive Programming (4/25)

  1. React reactivity; Functional reactive programming with Elm (pdf, code)
  2. Stream-based reactive programming with Rx (pdf)
  3. State-based reactive programming with Arrowlets; CPS-based implementation (pdf)

6. Visualization (5/2)

  1. Drawing dynamic visualizations (the talk, notes) 
  2. Grammar of graphics and ggplot (slides, Jupyter notebook, R code)
  3. Reactivity in Vega (slides, tutorial, online Vega editor)

        HW4 assigned (reactivity)

7. High-performance computing (5/9)

  1. Productive parallel programming (slides, Cray Chapel, guest lecture by Brad Chamberlain)
  2. Graphics (slides, thesis, Halide)

8. Big data (5/16)

  1. Grappa: (pdf)
  2. Data parallel computing for data centers: MapReduce/Hadoop (pdf)
  3. Embedding data parallel computations in Scala: Spark (pdf)

9. Data manipulation and program synthesis (5/23)

  1. Program synthesis and programming by examples with PROSE (slides, project)
  2. Herbie: synthesis of precise floating-point expressions (slides, project)

        HW5 assigned (design a DSL or integrate two languages from HW1-4).

10. Memorial Day (5/30) --- no lecture