The Implementation thread will have you implement the core of multiple languages and tools.


These can take several hours, as is common with programming assignments. Come get help if you’ve spent more than five hours. The calendar duration of an assignment is proportional to the expected implementation time.

Grading Standard

Your implementation needs to be correct, robust (well-tested), and clear (well-structured, clean code). Yes, we do care about “software engineering” issues, not only whether the code “works”.The correctness expectations for languages are exceptionally high, especially when compared to most other software artifacts. How often do you run into errors in your language implementation? Essentially, the onus is on you to convince us that your program is correct, not for us to convince you it’s not. The “software engineering” bits (clean code, strong tests, etc.) are the best way to make that case.


You will use the Plait language for some of the assignments, and Racket’s macro system for the others.

Both will be introduced during the course.

For Plait:
  • Install Plait by going into DrRacket, File | Package Manager… | Do What I Mean, and type plait (in all-lower-case) into the box. DrRacket will find Plait in the catalog and install it automatically.

  • Watch the tutorial videos by Matthew Flatt.

  • The documentation is online and, after the language has been installed, in your local installation. Go to Help | Racket Documentation for the local installation, and type plait in the search box.


Follow the instructions in the assignments below.

    1 Interpreter

    2 Macros

    3 OMac

    4 SMoLTalk

    5 Type Checker

    6 Type Inference

    7 ACI

    8 Lazy

    9 Generators

    10 Testing Guidelines