EECS 336 -- Design and Analysis of Algorithms -- Winter 2011
Required Text: Kleinberg and Tardos, Algorithm Design, Addison-Wesley, 2005. [order from amazon.com]
Teaching Assistant:Nima Haghpanah
Overview. Algorithm design and analysis is fundamental to all areas of computer science and gives a rigorous framework for the study optimization. This course provides an introduction to algorithm design through a survey of the common algorithm design paradigms of greedy optimization, divide and conquer, dynamic programming, network flows, reductions, and randomized algorithms. Important themes that will be developed in the course include the algorithmic abstraction-design-analysis process and computational tractability (e.g., NP-completeness).
Prerequisites. EECS 310 (Mathematical Foundations of Computer Science) and EECS 311 (Data Structures and Data Management) which cover abstract data types such as stacks, queues, and binary search trees; and discrete mathematics such as recurrence relations, sets, and graphs.
Grading. 60% Problem sets, 15% Midterm, 25% Final, 3% classroom participation (bonus).
Homework Policy. Homeworks may be done in pairs. Both students must contribute to the solution of all problems. One copy of the assignment should be turned in with the names of both students on it. Both students will receive the same grade. You may consult your text book and course notes when answering homework questions; you must not consult the Internet. Homeworks are assigned in class and due on Thursday the week after (or as noted). Late homework will be accepted until Monday 5pm (in section) and will be marked down by 25% of the grade received.