- Illinois course materials
- Lecture notes, slides, lab handouts, homeworks, and exams are available for several past semesters of algorithms classes at Illinois. For each class, I've listed only the most recent iteration for each instructor, but several older semesters are also available.
- Course materials elsewhere
- Sadly, it has become significantly less common for instructors to post their lecture notes/slides, homeworks, lab/discussion/recitation handouts, and other course materials to the open web. Most instructors either lock their course materials inside walled gardens (Piazza, Moodle, Stellar, etc.) or simply delete them when the course is over. Here are some useful exceptions.
-
Toronto:
Course Notes for CSCB38/236/240 - Introduction to the theory of computation by Vassos Hadzilacos. Excellent coverage of regular langauges and expressions, DFAs and NFAs, and context-free langagues and grammars. Also includes an excellent review of induction, especially for proving correctness of algorithms.
-
MIT
(Fall 2005,
Spring 2008,
Fall 2011) — notes, videos, and problem sets
-
Berkeley
(Spring 2009,
Fall 2014,
Fall 2016,
Fall 2017)
— homeworks, occasional slides
-
CMU
(Spring 2013,
Fall 2013,
Spring 2014,
Fall 2014,
Spring 2015,
Fall 2015,
Spring 2016,
Fall 2016,
Spring 2017,
Fall 2017,
Spring 2018,
current semester) — notes/slides for all semesters, recitation worksheets for some semester, homeworks only for current semester
-
Stanford (Summer 2013) — slides and problem sets
-
Washington (several quarters) — notes/slides, sporadic problem sets
- UC Davis (videos on iTunes):
- MOOCs
-
Both Coursera and Udacity offer 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.
- Coursera — Videos for these MOOCs are available only for enrolled students when the class is in session, and some assignments are available only to students who pay Coursera to receive a certificate. So basically, they're like textbooks that you can only read during certain times of the year, and only by sacrificing a goat first. But if your timing is right and you have a spare goat, the quality is pretty high.
- Udacity — These courses are always freely available.
- Other
- Algorithms, compiled by Bhanu Kapoor. Included for completeness, but good only for review of the most basic material.
- Free Online Textbooks
- Hopefully this list will continue to grow.
- Dead Trees
- 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. And they're all in the library. You remember that big brick building with the coffee shop and the study tables in it? Yeah, they have actual books in the basement.
-
Recommended:
Algorithm Design by Jon Kleinberg and Éva Tardos (Addison-Wesley, 2005). Based on algorithms classes at Cornell.
-
Recommended:
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).
- Review
- 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?)
- Programming contests
- ...which (at least at the advanced levels) are really algorithm design contests where you also happen to write some code.
- Other
-
We'll add more links here as we discover them. Suggestions are welcome!