15-351/15-650/02-613
Algorithms & Advanced Data Structures

Fall 2015

Course Information:

Course Description: The objective of this course is to study general computational problems, with a focus on the principles used to design those algorithms. Efficient data structures will be discussed to support these algorithmic concepts. Topics include: Run time analysis, divide-and-conquer algorithms, dynamic programming algorithms, network flow algorithms, linear and integer programming, large-scale search algorithms and heuristics, efficient data storage and query, and NP-completeness. Although this course may have several programming assignments, it is primarily not a programming course. Instead, it will focus on the design and analysis of algorithms for general classes of problems. This course is not open to Computer Science majors. Crosslisted with 15-650 and 02-613.

What's the deal with the 3 course numbers? All the courses have the same structure, same lectures, same TAs, etc. Those who are signed up for one of the graduate numbers (02613 or 15650) will have a few additional assignments. The grading curve will also be computed separately in each of the three courses.

Instructor: Carl Kingsford
Associate Professor, Computational Biology Department, School of Computer Science, Carnegie Mellon University.

Office: GHC 7705

Contact information for TAs and graders: will be posted on Piazza.

To contact the course staff: use Piazza.

Estimated Coursework: Coursework will consist of near weekly homeworks that will include algorithm design and analysis problems, 2 midterms, and a final. There may be 1 or 2 small programming assignments, or there may not be.

Textbook: Algorithm Design by Jon Kleinberg and Éva Tardos, ISBN 0-321-29535-8.

Announcements & Assignments