CS 473: Administrivia

About This Course

CS 473 (officially "CS 498 DL1") is an algorithms course aimed at advanced undergraduates and graduate students in computer science and related disciplines.
CS 374 or equivalent, or graduate standing. In particular, students are assumed to have mastered the material taught in CS 173 (discrete mathematics) and CS 225 (basic algorithms and data structures). We emphasize that "mastery" is not the same as "exposure" or even "a good grade"; hence, Homework Zero. Programming experience is helpful; a strong mathematics background is even more helpful.
Course grades are based on homeworks (25% total), two midterms (22.5% each), and a final exam (30%). All homework and exam grades will be posted on Moodle. See the grading policies for more details.
Am I in the right place?
Well, that depends.
This course replaces CS 573 as a prerequisite for all 500-level algorithms courses, in particular:
Degree Requirements
This course is not specifically required for any program on campus, but it has been approved to satisfy requirements in each of the following programs: However, this course does not count toward the requirement in all graduate programs for 500-level credits. It's a 400-level course.

Class Resources

We will use Moodle for grades. If you were registered for the course at the start of the semester, you should already have access to our Moodle site; if not, contact one of the instructors.
We will use Gradescope for homework submission and grading. Anyone can sign up for access to the CS 473 Gradescope site with their favorite alias and email address, using the self-enrollment code 9747W2. We will separately ask you for your alias, so that we can map your homework grades to you.
We will use Piazza for online discussions. Anyone can sign up for access with their favorite email address. We strongly encourage posting questions on any course-related topic to Piazza rather than emailing the course staff. You can even post your questions anonymously.
Reading Material
There is no required textbook. Pointers to existing lecture notes from various sources will be posted to the course web site as the semester progresses.
Illinois Course Materials
Course materials elsewhere
Both Coursera and Udacity are offering complete algorithms courses, with videos, readings, and automatically graded exercises. By necessity, these courses tend to focus more on implementation and less on proofs and open-ended design than CS 374 or 473. I have included only MOOCs with videos that are always freely available.
  • Algorithms: Design and Analysis Part 1 and Part 2, taught by Tim Roughgarden, loosely based on algorithms classes at Stanford.
  • Algorithms, taught by Michael Littman, loosely based on algorithms classes at Rutgers
  • Intro to Theoretical Computer Science, taught by Sebastian Wernicke
  • Algorithms, compiled by Bhanu Kapoor. Included for completeness, but good only for review of the most basic material.
For students who prefer an actual dead-tree reference, we recommend the following textbooks. The campus bookstore probably doesn't have them, but they're cheaper online anyway. Grainger Library has copies of all these books on reserve.
  • Recommended: Algorithm Design by Jon Kleinberg and Éva Tardos (Addison-Wesley, 2005). Based on algorithms classes at Cornell.
  • Algorithms by Sanjoy Dasgupta, Christos Papadimitriou, and Umesh Vazirani (McGraw-Hill, 2006). Based on the undergraduate algorithms course at Berkeley. A complete draft of the book is available online. This is the closest traditionally published approximation to the old CS 473 and the algorithms portion of CS 374.
  • Introduction to Algorithms (3rd edition) by Thomas H. Cormen, Charles Leiserson, Ronald L. Rivest, and Clifford Stein (MIT Press/McGraw-Hill, 2009). Based on algorithms classes at MIT. The first and second editions are also fine. A significant fraction of this book has been transcribed into Wikipedia.
  • Algorithms (5th edition) by Robert Sedgewick and Kevin Wayne (Addison-Wesley, 2011). Based on algorithms classes at Princeton. Focuses on more elementary material (taught in CS 225), with more emphasis on implementation and application than open-ended design and analysis. A crippled electronic version is available through the University library (sorry, only for Illinois folks).
For review of prerequisite material, we strongly recommend the following online resources. (This stuff is also covered in several dead-tree textbooks, but really, why bother?)