Fall 2016

CS 111: Domain-Specific Languages

MW 1:15pm2:30pm in SHAN 2475

Monday Wednesday
(0) 08 · 29 (no class) DSLs: What, why, and how? 08 · 31
What is a DSL?
Due: Sunday 9/4 at 11:59pm
Critique: Tuesday 9/6 at 11:59pm
(1) 09 · 05 What is a DSL? Fluency 09 · 07
Language design
Due: Wednesday 9/14 at 11:59pm
Critique: Friday 9/16 at 11:59pm
(2) 09 · 12 Finding problems, ignoring solutions
class meets at the Hive
Language design 09 · 14
Project ideas
Due: Wednesday 9/21 at 11:59pm
Critique: Friday 9/23 at 11:59pm
(3) 09 · 19 Getting up and running in Scala Scala tour 09 · 21
Practice Scala
Due: Wednesday 9/28 at 11:59pm
Critique: Friday 9/30 at 11:59pm
(4) 09 · 26 Internal data structures (in Scala) Internal control-flow structures (in Scala) 09 · 28
Internal DSL: regular expressions
Due: Wednesday 10/5 at 11:59pm
Critique: Friday 10/7 at 11:59pm
(5) 10 · 03 External DSLs in Scala
language architecture & parser combinators
Lab: External DSLs 10 · 05
Language design: Piconot
Due: Sunday 10/23 at 11:59pm
Critique: Tuesday 10/25 at 11:59pm
(6) 10 · 10 Extensibility: traits Common patterns in DSLs 10 · 12
(7) 10 · 17 Fall Break (no class) Metaprogramming 10 · 19
Project pitch
Due: Sunday 10/23 at 11:59pm
Critique: Tuesday 10/25 at 11:59pm
(8) 10 · 24 critique studio 10 · 26
Project: description and plan & repositories
Due: Sunday 10/30 at 11:59pm
Critique: Tuesday 11/1 at 11:59pm
(9) 10 · 31 critique studio 11 · 02
Project: design and implementation
Due / notebook: Sunday 11/6 at 11:59pm
Critique: Tuesday 11/8 at 11:59pm
(10) 11 · 07 critique studio 11 · 09
Project: prototype
Due / notebook: Sunday 11/13 at 11:59pm
Critique: Tuesday 11/15 at 11:59pm
(11) 11 · 14 critique studio 11 · 16
Project: preliminary evaluation
Due / notebook: Sunday 11/20 at 11:59pm
Critique: Tuesday 11/22 at 11:59pm
(12) 11 · 21 critique Logos 11 · 23
(13) 11 · 28 studio studio 11 · 30
Notebook: Sunday 12/4 at 11:59pm
Critique: Tuesday 12/6 at 11:59pm
(14) 12 · 05 critique The end?! 12 · 07
Project: final product and writeup
Due: Friday 12/9 at 11:59pm
Project: demo / presentation
Wednesday 12/14, 2–5pm