This is a model course in the ACM-IEEE curriculum.
by Robert Sedgewick and Kevin Wayne
THE BASIS for course content is our comprehensive textbook, which introduces and surveys the field.
The book surveys the most important computer algorithms in use today and teaches fundamental techniques to the growing number of people in need of knowing them. It is based on complete implementations using a modern programming style based on data abstraction, and it emphasizes a scientific approach to evaluating performance.
The broad perspective taken makes the book both an appropriate introduction to the field and a valuable reference. Since 1983, its various editions, written in many programming languages and translated into many foreign languages, have sold over one million copies and have educated generations of programmers and developers around the world.
Algorithms, Third Edition in C/C++/Java, written in 1998–2003, has in-depth coverage of much of the same material.
Lectures in this course are based on over 1000 carefully prepared presentation slides, which you can browse below. Clicking on a lecture title allows you to scroll through the slides for that lecture. These slides give full information about the content of the course.
All the lectures for this course are available as online videos. These are carefully prepared, integrated with course content, and produced in a studio. As with traditional in-person lectures, their purpose is to introduce topics to learners and to inspire further study.
To get an idea of what a modern online lecture video is like, try this one, the lecture on MSTs from this course. Important note: The best way to experience a lecture video is to speed it up when not interested (or bored) and slow it down when interested (or confused). You can quickly scan this video in twenty minutes or so.
All of the videos are available for viewing on the CUbits platform. This platform is recommended because it applies modern machine-learning models to build searchable transcripts, indices, and other features that enhance the experience of learning from the videos.
Our Algorithms booksite is freely available on the web. It contains tens of thousands of files, is fully coordinated with our lectures and textbook and also is useful as a standalone resource. It consists of the following elements:
Excerpts. A condensed version of the text narrative.
Java code. Hundreds of easily downloadable Java programs and our I/O libraries for processing text, graphics, and sound.
Data. Real-world data sets for testing code (ours and yours).
Exercises. Selected exercises from the book and “web exercises” developed since its publication, along with some solutions.
Programming assignments. Interesting applications problems for teaching programming by challenging students to address tasks that may take a week or more to complete.
This is a living resource that is constantly being improved and updated.
You can find details on how we conduct our course at Princeton on our Princeton COS 226 course website. This course is suitable for all students and one of the highest-enrolled classes in the university’s history. The following elements may be useful for both teachers and learners outside of Princeton.
Syllabus. A detailed “contract” between faculty and students, including a full description of how we synchronize a huge class that meets as a group only occasionally, and collaboration and plagiarism policies that have been negotiated for decades.
Precepts/labs. Exercises that reinforce the lecture and textbook content, with solutions.
Exams with solutions. A treasure trove of past exam questions that instructors can use to create their own exams and students can use for self-assessment.
Programming assignments. Fully detailed specifications of the programming challenges that our students face each week.
This content has evolved through the efforts of many of our faculty since 1992 to the benefit of many thousands of Princeton students and many other teachers and learners around the world.