Hack Your Own Language
(aka 3620 Building Extensible Systems, Spring 2025)
Difficult programming problems call for the creation of domain-specific languages (DSLs) to express concise solutions—like React.js for web UIs, TensorFlow for machine learning, or D3.js for data visualization.
This course will introduce DSL design and implementation techniques including embedding, macros, and compilation. We’ll use Racket’s advanced language-oriented programming tools: its macro system and the syntax-spec metalanguage. These technologies are developed by researchers at Northeastern and have influenced features in other programming languages such as the macro systems in Rust and Lean 4.
The first half of the course will build your knowledge with weekly programming assignments. In the second half, you will design implement and present your own DSL with a partner.
Information about a similar previous offering of the course is available here including previous student student projects.
Edit April 27: Thanks for a great semester! Here are the completed projects:
Alexander Chang-Davidson and Collin McKinley | |
Aiden Sato | |
Brendan Brady and Robert Patterson | |
Ari Prakash and Zack Eisbach | |
Matthew Coscia and Dilan Piscatello | Options Trading: Test complex options trades before executing them |
Smaran Teja Penikelapati and Luke Christenson | TradingDSL: A DSL for defining, testing, and analyzing stock trading strategies |
Andrey Piterkin and Luke Jianu | Logical Student Language V2: A student language with contracts and property-based testing |
Joshua Goldberg and Will Du | Elements: A DSL for optimizing and calculating Genshin Impact damage rotations |
Nate White and Jordan Zedeck | CA-DSL: A DSL for expressing and simulating Cellular Automata |
Owen Duckham and Kesava Chandra Vedula | |
Joshua Torre and Nikhil Khot | |
Rishikesh Kanabar and Aryan Kalaskar |