This is a new design-studio course for the creation of domain-specific languages (DSLs). We will start with lectures teaching fundamental skills for designing and implementing DSLs, followed by a long term project designing and implementing a DSL of the student's choice. The course will particularly emphasize the role that languages can play in tasks that we do not usually think of as programming, such as DSLs for knitting patterns or geometric constructions.
It is being held for the first time in Spring 2024.
All deadlines are at 11:59pm, except in-class presentations. The schedule is subject to change, and events marked with (?) are explicitly tentative.
| Day | Instructor | Topic | Notes/Links | ||
|---|---|---|---|---|---|
| Tuesday | April 1st | Evan, Matthew | Intro & External DSLs I | slides | |
| Thursday | April 3rd | Evan | External DSLs II | live coding | |
| Tuesday | April 8th | Evan | External DSLs III | live coding | |
| Thursday | April 10th | AJ | Internal DSLs | slides and code | |
| Tuesday | April 15th | AJ | Graphics DSLs: Images, Simulations, Knitting, and Diagrams | slides | |
| Thursday | April 17th | Matthew | Clinic Day I + Project brainstorming | ||
| Thursday | April 17th | Due: External Lab | |||
| Tuesday | April 22nd | Matthew | Overflow Day for Clinic + Brainstorming | ||
| Tuesday | April 22nd | Due: Project Brainstorming | |||
| Thursday | April 24th | Group feedback on project ideas | |||
| Tuesday | April 29th | Group feedback on project ideas | |||
| Thursday | May 1st | Group Feedback on Project Ideas + Work day for interim project presentations | |||
| Thursday | May 1st | Due: Project proposal | |||
| Tuesday | May 6th | Work day for interim project presentations | |||
| Tuesday | May 6th | Due: Internal Lab | |||
| Thursday | May 8th | Work day for interim project presentations | |||
| Thursday | May 8th | Due: Clinic | |||
| Tuesday | May 13th | Matthew | Interim project presentations and feedback | ||
| Thursday | May 15th | Interim project presentations and feedback | |||
| Tuesday | May 20th | Lecture on documentation | |||
| Thursday | May 22nd | Final project work day | |||
| Tuesday | May 27th | Documentation writers workshop | |||
| Thursday | May 29nd | Final project presentations | |||
| Tuesday | June 3rd | Final project presentations |