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 Jan 27 Feb 9, 11:59 p.m. HW1 Solution
HW2 Feb 10 Feb 23, 11:59 p.m. HW2 Solution
HW3 Feb 22 Mar 7, 11:59 p.m. HW3 Solution
HW4 Mar 10 Mar 30, 11:59 p.m. HW4 Solution
HW5 Mar 31 Apr 13, 11:59 p.m. HW5 Solution
HW6 Apr 14 Apr 27, 11:59 p.m. HW6 Solution


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 20 Feb 4, 11:59 p.m. MP0 Solution
MP1 Feb 10 Mar 3, 11:59 p.m.
MP2 Mar 3 Apr 5, 11:59 p.m.
MP3 Apr 7 May 2, 11:59 p.m.

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