The schedule is tentative and may change over the course of the semester


Homework must be done individually. High-level discussion of solution strategies is allowed, but copying of solutions will be treated as plagiarism and dealt with according to the Student Code. Homeworks must be typed (hand-written diagrams are fine).

Late Policy

Each student is allowed 48 hours of late assignments to be used up during the semester. E.g., you may submit HW1 13 hours late, HW2 8 hours late, and HW3 27 hours late. Once your late submission time has been used up, any further late submissions will not be graded. Exceptions will be made only in case of well documented medical or other emergencies.

Assignment Out Due Solutions Notes
HW1 Feb 5 Feb 19, 11:59 p.m. HW1 Solution
HW2 Feb 19 Mar 4, 11:59 p.m. HW2 Solution
HW3 Mar 5 Mar 19, 11:59 p.m. HW3 Solution
HW4 Mar 19 Apr 1, 11:59 p.m. HW4 Solution
HW5 Apr 2 Apr 16, 11:59 p.m.
HW6 Apr 16 Apr 29, 11:59 p.m.


MPs should be carried out in a group of two. Solo MPs are permissible but will be held to the same standard as teams of two. You may change groups between MPs but you must notify the course staff. MPs should be implemented in one of C++, Go, Java, or Python (with MP2 specifically requiring a Go implementation).

Late Policy

MPs may be submitted up to 50 hours late but you will lose 2% of your grade for every late hour or portion thereof. E.g., a submission at 1:00 a.m. for an 11:59 p.m. deadline will be considered 2 hours late and your grade will be multiplied by 0.96. Exceptions will be made only in case of well documented medical or other emergencies and must be approved prior to the deadline.

Assignment Out Due Solutions Notes
MP0 Jan 29 Feb 12, 11:59 p.m. MP0_Solution
MP1 Feb 24 Mar 17, 11:59 p.m.
MP2 Mar 17 Apr 9, 11:59 p.m.
MP3 Apr 14 May 5, 11:59 p.m.

The source code of the website has been borrowed from Nikita Borisov