On this page:
Project Organization
The Projects


this is serious

The goal of this course is to enable you to develop a small programming language (extension). To demonstrate this, you will describe a language (extension), develop it, and present it to your peers.

Milestone 1 Meet with the instructor during office hours to discuss your ideas for a language (extension) by early February.

Milestone 2 Decide what your language (extension) will be about and describe it in a one-page memo. This memo is required regardless of which part of the class you’re enrolled in. It is due by end of February, before spring break.

Milestone 3 Meet with the instructor during office hours to explain your progress by March 15.

Milestone 4 Demo and present your language (extension) to your peers in class during late March and early April.

Delivery Each pair will deliver a pointer to a public GitHub repo, a presentation PDF, and a brief documentation of the grammar of the language (extension) and a brief English description of its meaning. The length of the documentation depends on your language and whether you wish to continue its development; it will not affect your grade in a positive or negative manner.

Send the PDF slides to the instructor.

Capstone For "capstone students", also write a one-page memo that describes your experience with the language-building process. Include the pointer to the repo in the memo.

Send the PDF page to the instructor.

Project Organization

Each project’s code repo must consist of four folders:
  • lib, which contains the language implementation;

  • test, which contains the language tests;

  • doc, which contains language documentation; and

  • design, which contains design documents.

Naturally a project also comes with a README.md file.

Other directories and files will be added as needed.

The Projects

Nathaniel Rosenbloom and Isaac Walker



Alex Knauth and Milo Turner


Functors from Macros

Ian Smith and Edward Li


Symbolic Basic Language

Alex Cherry and Yifan Xing


Racket Spark Light

DJ Chu and Ryan Drew


Music Embedding Language (MEL)

Xiangxi Guo and Sam Gupta


The Traveler Language

Jakob Hain and Kevin Zhang



Alexandre Jolly and Neil Locketz


The HTML Matching Language

Adrian Kant and Taylor Murphy



Dexter Kearney and Ty Nichols



Jared Gentner and Matthew Kolosik



Jacob Ginsparg and Mitchell McLean


Yomi: A Fighting Game Language

Daniel Melcer and Josh Goldman


The Inverse Language