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
- HW5 has been assigned (5/26). Due 6/8.
- HW4 has been assigned (5/11). Due 5/25.
- HW3 has been assigned (4/21). Due 5/8.
- HW2 deadline has been extended to Sun, 4/24, 11:59pm.
- HW1 deadline has been extended to Wed, 4/13, 11:59pm. HW2 will be extended, too, based on the survey we are conducting now.
- HW1 has been assigned (3/28). Due 4/10.
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)
- Why domain-specific languages (pdf)
- Hands-on session: fluent regular expressions (pdf)
- D3: a language for data visualization (pdf)
HW1 assigned. Due 4/10 4/13, 11:59pm. (HW1 handout)
2. Interpreters (4/4)
- The architecture of interpreters. Desugaring. Scoping. (pdf)
- Query interpreters. Case study: LINQ. (pdf)
- Hands-on session: a data query language.
HW2 assigned. Due 4/17, 4/24, 11:59pm. (HW2 handout)
3. Parsing and Compilation (4/11)
- Background in grammars, parsing, and syntax-directed translation (ppt, pdf)
- The ANTLR parser and translator framework (ppt, pdf)
- Hands-on session: constructing a regex visualizer with ANTLR (repo)
Part II: Languages for modern domains
4. Templating (4/18)
- Mustache/Handlebars (pdf, tutorial), Genshi (pdf, tutorial)
- HW3: Implementing templating with ANTLR (pdf)
- React, the data binding part (tutorial)
HW3 assigned. Due 5/8, 11:59pm. (HW3 handout)
5. Reactive Programming (4/25)
- React reactivity; Functional reactive programming with Elm (pdf, code)
- Stream-based reactive programming with Rx (pdf)
- State-based reactive programming with Arrowlets; CPS-based implementation (pdf)
6. Visualization (5/2)
- Drawing dynamic visualizations (the talk, notes)
- Grammar of graphics and ggplot (slides, Jupyter notebook, R code)
- Reactivity in Vega (slides, tutorial, online Vega editor)
HW4 assigned (reactivity)
7. High-performance computing (5/9)
- Productive parallel programming (slides, Cray Chapel, guest lecture by Brad Chamberlain)
- Graphics (slides, thesis, Halide)
8. Big data (5/16)
- Grappa: (pdf)
- Data parallel computing for data centers: MapReduce/Hadoop (pdf)
- Embedding data parallel computations in Scala: Spark (pdf)
9. Data manipulation and program synthesis (5/23)
- Program synthesis and programming by examples with PROSE (slides, project)
- 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