UW-Madison
Computer Sciences Dept.

CS 577 - Introduction to Algorithms

Summer 2015
Picture of Kleinberg-Tardos cover

Course Description

This course provides an undergraduate-level introduction to the design and analysis of algorithms. The main focus lies on techniques for constructing correct efficient algorithms and on tools to reason about them. Design paradigms include greed, divide-and-conquer, dynamic programming, and reductions. The course also includes an introduction to computational intractability through the notion of NP-completeness.

The course forms a foundation for all areas of computer science. The particular computational problems discussed have applications in artificial intelligence, computational biology, compiler construction, hardware and network protocols, and optimization.

Tentative Schedule

Week 1: Program correctness
Week 2: Divide & conquer
Week 3: Graph primitives
Week 4-5: Greed
Week 6-7: Dynamic programming
Week 8-9: Network flow
Week 10: NP-completeness
Week 11: Review and exam

Text

Jon Kleinberg and Eva Tardos, Algorithm Design, Addison-Wesley, 2006

Prerequisites

CS 367 (Data Structures) is an essential prerequisite.

Prior exposure to the logic and algorithmic content of CS 240 (Discrete Mathematics), corresponding to the first half of the lecture notes for that course, is also helpful but not assumed. A questionnaire is distributed before the start of class to gauge the knowledge of that material and calibrate the course.

Staff

Lectures

Mon 5:30pm-8:30pm in The Beatles, Epic campus. The first lecture is June 8, and the last one August 10.

Review Sessions

Wed and Thu 6:00pm-7:00pm in Hyperion, Epic campus

Course Work

  • Homework (60%)

    There is an assignment every week of lecture except the last one (week 10). An assignment typically consists of:

    • Several design and analysis problems. Expect those problems to be challenging. Two of the problems need to be turned in by the start of the subsequent week's lecture, either on paper in class, or electronically via Moodle. The other problems are intended for the review session, additional practice later on, or extra credit.
    • One optional programming problem similar to the ACM International Collegiate Programming Contest. In order to get credit for this problems, you need to submit it via an automated judge. Detailed instructions are given in the first assignment.

    No sources other than the instructor, the TA, and your fellow students in the course are allowed. Model solutions are handed out during the lecture in which the homework is due, so no late assignments can be accepted. The lowest score will be dropped.

  • Exam (40%)

    The final and only exam takes place during the lecture slot of week 11: Monday, August 17, 5:30-8:30pm. The exam is closed book and closed notes.

More info

  • Moodle: lecture schedule, notes, assignments, other course materials, grades
  • Piazza: on-line discussions

 
Computer Sciences | UW Home