CS 4536: Programming Languages (C08)


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:

If you've never done web programming, do the first option. If you didn't really get continuations, do the first option. Basically, the second option is for those who found continuations funky and want to try thinking with them on new problems. Don't try the second option unless you followed the coroutines implementation in class.

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).