6 Assignments

All work will be due at 11:59pm of the indicated day.

The abbreviation ML stands “mystery language”, not the ML family of programming languages. See the Anticipated Frequent Questions to learn more about these assignments and how you’re expected to respond to them.

Note: all submissions must be done using your Brown Google account. Please do not contact us to “request access”. Use a browser that knows your Brown identity to submit.






ML: Numbers


Wed, Sep 06


Thu, Sep 07

ML: Conditionals


Fri, Sep 08


Sun, Sep 10

ML: Named Functions


Mon, Sep 11


Thu, Sep 14

ML: Scope


Fri, Sep 15


Tue, Sep 19

ML: Function Calls


Wed, Sep 20


Thu, Sep 21

ML: Anonymous Functions


Fri, Sep 22


Sun, Sep 24

ML: Loops


Mon, Sep 25


Tue, Sep 26

Interpreter: Base


Wed, Sep 27


Tue, Oct 03

Calc Locals Vars


Wed, Oct 04


Tue, Oct 10

ML: Fields


Wed, Oct 11


Sun, Oct 15

Type Checker


Mon, Oct 16


Thu, Oct 19

Calc Local Fields


Fri, Oct 20


Tue, Oct 24

ML: Mutable Variables


Wed, Oct 25


Sun, Oct 29

ML: Mutable Structures


Mon, Oct 30


Tue, Oct 31

Interpreter: State


Wed, Nov 01


Tue, Nov 07

Calc Local Vars: With


Wed, Nov 08


Sun, Nov 12

ML: Evaluation Order


Mon, Nov 13


Tue, Nov 14

Interpreter: Lazy


Wed, Nov 15


Sun, Nov 19



Mon, Nov 20


Thu, Nov 30



Fri, Dec 01


Thu, Dec 07

If you’re new to Pyret, you should consider doing the Learning Pyret exercise, which will help you gain practice with the language. Though this assignment is not required, if you haven’t programmed in Pyret before, we strongly encourage you to complete it. You will use Pyret in the non-ML assignments. This gives you some time to learn the language, but don’t put this off to the last minute.

You may also find these two labs useful:

If you know Racket, you may find this guide helpful.