Final Project Assignment

Your final project will be to implement an interpreter for a programming language. There are two main choices on what features to add to your language, that we will discuss below. But in all cases your submission will contain the following:

You can choose to implement one of the following two types of languages. These sections describe features of your language, but give you plenty of flexibility to evolve the language from that starting point.

Functional Programming

This language follows OCAML closely. You can choose to use a Racket-like syntax instead. In general you can use whatever syntax you want externally. For instance you don’t have to call the let statements “let”, they can be “define” or whatever else.

Basic expectations:

Bonus items. You can choose to implement one or more. The more you do the better.

Class-based Object-Oriented Imperative

This language would be a bit close to Java, except for no type-checking.

Basic expectations:

Bonus items. You can choose to implement one or more. The more you do the better.