Online Course Materials

This page provides access to online lectures, lecture slides, and assignments for use in teaching and learning from the book An Introduction to the Analysis of Algorithms. It is appropriate for use by instructors as the basis for a "flipped" class on the subject, or for self-study by individuals.

Flipped Class.

If you are an an instructor teaching the analysis of algorithms, an effective way for you to teach the material in a typical college class is to adhere to a weekly cadence, as follows: Important note:A common mistake in teaching a flipped class is to add too much enrichment material. Our experience is that time in class meetings is much better spent preparing students for success on problem sets and exams. If an instructor makes it clear that the best way to prepare for exams is to watch the lectures and do the reading, most students will do so. Class meetings then can involve interacting with students and with the material in such a way as to reinforce understanding. For example, working on old exam questions is an excellent activity. You can find some of these at right in the table below.


An effective way to learn the material on your own is to play the lectures on some regular schedule, do the associated reading, and attempt to solve some of the assigned exercises on your own. If you get stuck on a particular exercise, find some others in the book or on this website, or try to solve some of the problems given in the lectures without looking at the solutions there. In the future, we plan to add more exercises with solutions to this website, but that is work in progress.

While some of the reading material may be difficult for a typical undergraduate to master on such a quick pass through, a substantial fraction of the coverage is elementary, and the lectures provide a firm basis for understanding the key concepts. At Princeton, we use these materials to teach the first half of a senior-level undergraduate course (the second half of the course covers Analytic Combinatorics).


Ex. 1.14

Ex. 1.16

  0. Introduction (Cardinality)

    (videos not yet available)

  1. Analysis of Algorithms

    1.1 History

    1.2 Approach

    1.3 Quicksort

    1.4 Resources




Ex. 2.13

Ex. 2.17

Ex. 3.20

Ex. 3.28

  2. Recurrences

    2.1 Computing

    2.2 Telescoping

    2.3 Types

    2.4 Mergesort

    2.5 Master Theorem

  3. Generating Functions

    3.1 OGFs

    3.2 Solving recurrences

    3.3 Catalan numbers

    3.4 EGFs

    3.5 Counting with GFs




Ex. 4.9

Ex. 4.23

Ex. 4.38

Ex. 4.71

  4. Asymptotics

    4.1 Standard scale

    4.2 Manipulating expansions

    4.3 Asymptotics of finite sums

    4.4 Bivariate asymptotics

AA04-Asymptotics.pdf AofAteq3.pdf