The homework will consist of machine problems: programs you will construct or extend to implement a language. Doing the machine problems is how you really learn the material. It is not possible to succeed in the course without doing the machine problems.
Links to the problems will be posted here as they are issued.
On most weeks, the problem will be posted here sometime after lecture (usually Friday), and will generally be due at 6 PM of the following Friday.
You will do some of the machine problems in groups of two; other problems will be for individual work and submission. Each machine problem will state whether it is for partner or individual submission.
When a problem is assigned to partners, your pair may divide the work as you see fit. We recommend that you use pair programming.
You will need to find a partner in time to do Machine Problem 2 together. We suggest you spend time after the next lecture doing this. If you are not able to find a partner by 26 September, please email your instructor and he will assign you a partner.
You may switch partners for different problem sets. You may use the class mailing list to seek partners. Make sure to inform your former partners of the change in your relationship.
Each assignment will require at least the following:
Here are instructions for submitting your assignment.
Here is guidance on how machine problems are graded.
All work must be submitted as text documents. Microsoft Word documents will not be accepted, nor will other non-text documents (unless explicitly indicated in the assignment).
See also the instructor's notes on running R6RS programs in PLT Scheme and in Larceny.
| MP | Title | Out | Due | Solutions to non-textbook problems |
|---|---|---|---|---|
| 0 | Getting Acquainted | 9/16/2008 | 9/26/2008 | |
| 1 | Programming Inductively (solo) | 9/17/2008 | 9/26/2008 | |
| 2 | Environments | 10/3/2008 | 10/8/2008 | |
| 3 | LCv Interpreter | 10/10/2008 | 10/17/2008 | |
| 4 | Nameless LCv Interpreter | 10/17/2008 | 10/24/2008 | |
| 5 | Modifying an Interpreter | 11/04/2008 | 11/11/2008 | |
| 6 | Continuation-passing Interpreters | 11/14/2008 | 11/21/2008 |
Last modified: 14 November 2008