On this page:
Hack Your Own Language

Hack Your Own Language


(aka, 4620 Building Extensible Systems)

Extensible systems consist of many different components all written in different languages. For example, modern web pages use jQuery to inspect the DOM instead of traversing it manually and frameworks such as React or Vue to deal with events. Many other such embedded domain-specific languages have appeared, and developers continue to build new ones.

This instance of the course will focus on Racket’s advanced tools for building embedded domain-specific languages. Some of its tools have begun to migrate to the JavaScript universe (see sweet.js, for example) and other languages (see Rust and Scala, for example).

Students will first learn to use these tools and then build at least one language on their own.

The course will be highly interactive similar to the Software Dev course I usually teach. At least half of each class period will be spent on student presentation, and they are expected to learn from each others’ design and code presentations.


This course will mostly rely on a rock-solid understanding of Fundamentals I, but students will benefit from additional coding experience (prior to college, as a hobby, or via co-op).


Mon Jan 8 21:26:32 EST 2018

Please read A Programmable Programming Language for the meeting on Tue Jan 16.