The programming and written assignments are the heart of this course and count for half of your final grade. Much of what you learn in this course will be through completing these assignments. There are 4 programming assignments and 4 written assignments; written assignments are scheduled for 1 week, and programming assignments are scheduled for 2 weeks. Your final homework grade is the average of your grades on the eight assignments. All homeworks are due on Tuesday by 11:59PM.
| Out | Type | Assignment | Due | Solutions | Statistics | ||
|---|---|---|---|---|---|---|---|
| 1 | Jan 14 | W | Warm-Up Card Game hw01.tex, hw01.pdf | Jan 20, 11:59pm | hw01-sol.pdf | ||
| 2 | Jan 21 | P | Implementing ABTs and Substitution hw02.tex, hw02.pdf, hw02.tgz | Jan 27, 11:59 | hw02-solution.pdf, hw02-solution.sml | ||
| 3 | Jan 28 | W/P | Proving Type Safety hw03.tex, defs.tex, hw03.pdf, hw03.tgz | Feb 5 | hw03-solution.pdf, hw03-solution.sml | ||
| 4 | Feb 6 | W/P | Godel's T and Plotkin's PCF hw04.tex, defs.tex, hw04.pdf, hw04.tgz | Feb 17 | hw04-solution.pdf, godels_T.sml pcf.sml | ||
| 5 | Feb 18 | W/P | Translating From a Dynamic to a Static Language hw05.tex, defs.tex, hw05.pdf, hw05.tgz | Mar 3 | hw05-solution.pdf, hw05-solution.sml | ||
| 6 | Mar 17 | W/P | Boilerplate Programming hw06.tex, hw06.pdf, hw06.tgz | Mar 31 | hw06-solution.pdf, boilerplate.sml | ||
| 7 | April 1 | W/P | Nondeterministic Search hw07.tex, hw07.pdf, hw07.tgz | April 14 | hw07-solution.pdf, hw07-solution.tgz | ||
| 8 | April 15 | W/P | Parallelism hw08.tex, defs.tex, hw08.pdf, hw08.tgz | May 1 | hw08-solution.pdf, hw08-solution.tgz |
Assignments will be made available on this Web page, and solutions are to be submitted by copying files into a directory. Your handin directory for an assignment is /afs/andrew/course/15/312/handin/userid/assnn/ for assignment n. You may place files into that directory as many times as you like before the assignment is due; at the due-date, we will copy the contents of your directory to another location and that copy will be graded.
We will provide specific handin instructions for each assignment. 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 may be typeset using whatever formatting tool you prefer. For this course, LaTeX is strongly encouraged. The tex directory contains some examples.
Every student has up to 3 late days he may use for any assignment throughout the semester, but no homework may be more than two days late (this is so that we can discuss assignments in lecture the Thursday after they are due). For example, a student may hand in Assignment 1 one day late and Assignment 4 two days late, but then all remaining assignments must be handed in by the deadline. By one day late we mean 24 hours late.
Late homework should be submitted as usual, by copying it to your handin directory; we will take snapshots of your directory 24 and 48 hours after an assignment is due. If you are submitting an assignment late, we ask that you mail the TAs by Tuesday morning to notify us and then mail us again once you have completed your final handin. This will save us from accidentally grading a preliminary handin.
No homework assignment will be accepted more than two days after the due date. Once you used your budget of three late days for the semester, each late day will be assessed a 25% on your grade for that assignment. So, if you are two days late and over budget, you can earn at most 50% credit for an assignment.
Extra CreditSome 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.
| Assignment | 1-50 | 51-60 | 61-70 | 71-80 | 81-90 | 91-100 | Average |
| Hw1 | 3 | 1 | 2 | 6 | 13 | 34 | 88 |
| Hw2 | 1 | 0 | 5 | 11 | 22 | 15 | 87 |
| Hw3 | 2 | 2 | 5 | 8 | 3 | 29 | 85 |
| Hw4 | 0 | 1 | 0 | 8 | 7 | 33 | 91 |
| Hw5 | 1 | 2 | 3 | 7 | 8 | 25 | 86 |
| Midterm | 0 | 4 | 4 | 13 | 19 | 10 | 80 |
| Hw6 | 2 | 2 | 3 | 6 | 13 | 19 | 85 |