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.
Grading breakdown is subject to change.
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 | |
---|---|---|---|---|
Monday | April 1st | Evan, Matthew | Intro & External DSLs I | slides, live coding |
Wednesday | April 3rd | Evan | External DSLs II | live coding |
Monday | April 8th | Alex | Internal DSLs | slides, live coding |
Wednesday | April 10th | Alex | Need Finding | slides, by: Veronica Rivera |
Friday | April 12th | Due: External Lab | ||
Monday | April 15th | Matthew, Evan | Field work: interviews | |
Tuesday | April 16th | Due: Project brainstorming | ||
Wednesday | April 17th | Discuss brainstorming ideas | slides | |
Monday | April 22nd | AJ | Clinic I kick-off | |
Tuesday | April 23rd | Due: Internal Lab | ||
Wednesday | April 24th | AJ | Clinic I | |
Monday | April 29th | Matthew | Clinic II kick-off | |
Tuesday | April 30th | Due: Project proposal (?) | ||
Due: Clinic I | ||||
Wednesday | May 1st | Matthew | Clinic II | |
Monday | May 6th | Clinic II | ||
Wednesday | May 8th | Clinic II | ||
Friday | May 10th | Due: Clinic II | ||
Monday | May 13th | Studio Day | ||
Wednesday | May 15th | Studio Day | ||
Monday | May 20th | Project Demos | ||
Wednesday | May 22nd | Project Demos | ||
Monday | May 27th | Holiday | ||
Wednesday | May 29nd | Writer's Workshop | ||
Monday | June 3rd | Project Presentations | ||
Wednesday | June 5th | Project Presentations | ||
Thursday | June 6th | Due: Project implementation (?) |