Homework Assignments
The programming and written assignments count for half of your final grade. Much of what you learn in this course will be through completing these assignments. Your final homework grade is the average of your grades on the seven assignments.
# | Out | Assignment | Support Code | Due before midnight on: |
---|---|---|---|---|
0 | Aug 23 | Inductive Definitions | TeX template | Sep 1 Submit on Moodle |
1 | Sep 6 | Statics, Dynamics and Type Safety | TeX template | Sep 15 |
2 | Sep 30 | Meta Theory and Implementation: Language T with Finite Data Types |
OCaml template (Language E) | Oct 13 |
3 | Oct 14 | Meta Theory and Implementation: Language ETSPL with Generic Lists |
OCaml template (Language E) | Oct 27 | 4 | Nov 11 | Programming with Streams | (See link to left) | Dec 1 |
Handout and Handin
Assignments will be made available on this Web page, and solutions are to be submitted via Moodle. You may make as many submissions as you like before the due date, only the latest will be graded.
In general, for programming assignments we ask that you submit your code and a brief README detailing anything you think we need to know to understand your submission. The written assignments are to be submitted in PDF format (only!); they must be typeset using LaTeX. The tex directory contains some examples.
Late Policy
No late homeworks will be accepted or graded. They are worth zero points. Hence, you should turn in incomplete homework by the due date rather than to wait until after the due date to turn in something more complete: The former will be graded and probably receive some credit; the latter will receive no credit. Also see Grading Policy.Extra Credit
Some assignments will have extra credit questions. The intent is for such questions to be interesting, although some may be very hard. Partial answers and half-baked ideas are welcome and will receive some credit as long as it is clear you have seriously considered the question. See the home page for how extra credit will count towards your grade.
Advice on Programming Assignments
- Grading criteria:
- Correctness: does the program compile and run as prescribed?
- Functionality: which of the specified features have been implemented?
- Documentation: are there sufficient comments to understand the implementations?
- Criteria not applied unless explicitly specified:
- Efficiency: choose clarity over efficiency in your code.
- Some advice:
- Start your assignments early.
- Design your program from simple to more complex features.
- Finish implementations of the simpler specifications before moving on to more complex ones.
- Submit early and submit often. This will protect you against losing work or being caught out by autolab.
Advice on Written Assignments
- Grading criteria:
- Correctness and clarity for mathematical questions.
- Clarity and thoroughness for design or essay questions.
- Some advice:
- Start your assignments early.
- Don't wait until the last minute to type up your solutions: ideas that seem to work on paper will often break as you write them up carefully!