This page describes and provides access to print, video, and online content for four courses, which I have developed and taught at Princeton and Brown throughout my career and have been adopted in various forms at institutions throughout the world.

The courses are based on a 21st century model for disseminating knowledge, which is described on the IDEAS page and in an invited talk on this site. The best way to understand the model is as a natural extension that embraces technology of the familiar and highly successful “textbook” model that is still widely used for many core subjects throughout academia in the US since the 20th century. A short guide to this material follows.

laptops and devices with futuristic overlay

A Guide for Teachers and Learners

If you are teaching or learning introductory computer science, algorithms, discrete mathematics, or combinatorics, you may find the material here to be useful. These pages provide access to an enormous amount of content (I only teach a fraction of it myself), so I offer the following suggestions for taking advantage of it.

Watch a video. In my experience, many people make judgements about the utility of online videos without ever experiencing one. The VIDEOS tabs on these pages provide access to sixty lectures, along with a sample excerpt for each courses. To see what many people are experiencing nowadays, watch one of the samples (if you speed it up to double or even triple speed, it will take just a few minutes) .

Scan the slides. An excellent way to get an idea of a course’s content is to scan through the lecture slides. The SLIDES tabs on these pages provide a convenient way to do so.

Browse the booksites. The “Booksites” tabs on these pages provide access to a wealth of information that support the lectures and the textbook. If you spend some time browsing, you can see the depth and breadth of the information available.

Look at the textbook. We view each textbook as the “ground truth” for each course. We don’t cover everything in the book in a course, but everything in a course is placed into full context in the book.

Try an assignment. Weekly programming assignments are the backbone of our introductory courses. Among many other things, they serve the purpose of building confidence in our students and showing them that accomplishing amazing things with a computer is much less difficult than they might have thought. We provide a great deal of information to help them succeed. The assignments are carefully specified, and checklists can help keep you on track.

Study our exam questions. They are not perfect, but our exams in recent years are alpha- and beta-tested and graded with rubrics developed prior to the exams. We provide many exams with solutions on our Princeton websites. They are an expression of what we expect students to know after studying this material, and you are welcome to use them. There are also numerous short-answer questions in our course materials for you to study.

Further notes for teachers

“How do I make use of these materials (especially the lecture videos) while still justifying my existence as a faculty member?” That is the question that I get asked most often about these materials. The answer is that your job is to decide what you want your students to learn, to help them be successful in the effort, and to certify that they have done so. These materials may help you worry less about creating content and worry more about delivering it to your students.

Curate. Perhaps your most important function as an instructor is to decide what you want your students to learn. You can use our choices as a guide, but you also may wish to skip some of them, rearrange them, or add some of your own content. By clearly articulating which pages in the textbook you want them to read and which lectures you want them to watch, you can provide students with exactly the information they need to succeed in the course.

Concentrate on assessments. What do you want your students to know? How will you decide whether or not they know it? These are key questions for any teacher. Without question, students focus on them too. Quizzes, exams, and assignments are motivating factors for every student, and the more time you spend on putting them together, the better. As with our other content, you don’t have to create them from scratch—you can work with some of ours.

Break from the past. Before the pandemic, most people taught in pretty much the same way for years or even decades, often constricted by institutional requirements about meeting times and frequencies. Returning to precisely how things were before the pandemic would be a missed opportunity. You really do have better things to do than preparing a handout, lecture, assignment, or exam on a standard topic that is covered in a textbook or videos. It is not a given that the most effective path to learning is regular meetings in large or small groups. Synchronization of some kind is important, but we have many better options nowadays than the extreme synchronization suggested by regular live lectures.

My experience has been that using carefully prepared content such as a textbook and a set of curated lectures and taking advantage of modern technology can all allow teachers to efficiently and effectively provide a consistent learning experience for large numbers of students. I hope that these materials will help you do the same.

This is a model course in the ACM-IEEE curriculum.

Computer Science:
An Interdisciplinary Approach

by Robert Sedgewick and Kevin Wayne

This is a model course in the ACM-IEEE curriculum.

Algorithms
Fourth Edition

by Robert Sedgewick and Kevin Wayne

An Introduction to the
Analysis of Algorithms

by Robert Sedgewick and Philippe Flajolet

Analytic Combinatorics

by Philippe Flajolet and Robert Sedgewick