EECS336 Algorithm Design and Analysis Programming Assignments