There will be roughly one assignment per week. Assignments will have a substantial programming component; some assignments will also involve written questions.
Assignment 0: Course Survey (due Saturday Jan 13) -- A brief survey about your background and interests to aid in course planning. Should take about 10 minutes.
Description and logistics for test jousting
Assignment 0.1: Jousting trials -- a mock assignment to let you get a feel for using the test jousting infrastructure. Optional, but will save you headaches once jousting starts for real next week.
Style guidelines and expectations on assignments
Assignment 1: Basic Interpreters (due Thursday Jan 17, 11:59pm)
Assignment 2: Extended Interpreter (due Thursday Jan 24, 11:59pm)
Assignment 3: Haskell and Laziness (due Thursday Jan 31, 11:59pm)
Assignment 4: Mutation and Parameter Mechanisms (due Thursday Feb 7, 11:59pm)
Assignment 5: Continuations (due Thursday Feb 14, 11:59pm)
Do one of the following two options:
The BS/MS assignment: Implementing Stack Inspection via Continuations (due date negotiable, but ideally before D-term starts)
Assignment 6: Garbage Collection (due Thursday Feb 21, 11:59pm)
Assignment 7: Types (due Friday, Feb 29, 5pm)
There are two options for homework 7, of which you must do one. The type checker is easier. As such, students who are aiming for As in the course should do type inference. Doing the type checker will cap your course grade at B (in exchange for an easier assignment).
There will be no exams. Grades will be based on the assignments (with some point available for participation and engagement with the material).