Welcome to CS343S!

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.

Construct language Pandas Tutor Drawing in the Context Free language Wavedrom

Logistics

Assignments

Class Schedule

All deadlines are at 11:59pm, except in-class presentations. The schedule is subject to change, and events marked with (?) are explicitly tentative.

DayInstructorTopicNotes/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