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 with potential exam questions is an excellent activity. You can find examples at right in the table below.

Self-study.

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.

Princeton students.

At Princeton, we use these materials to teach the first half of our senior-level undergraduate course An Introduction to Analytic Combinatorics (the second half of the course is on the Analytic Combinatorics booksite). Click on the COS 488 tab on the sidebar for logistical details. We update the material as the semester progresses. You can look ahead in the table below to get an idea of what is to come, but assignments are not "official" until you receive them by e-mail.



WEEKLY ASSIGNMENT LECTURE VIDEOS LECTURE SLIDES Q&A
AofAweek1.txt

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

AA00-Cardinality.pdf

AA01-AofA.pdf

AAqa1.pdf
AofAweek2.txt

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

AA02-Recurrences.pdf

AA03-GFs.pdf

AAqa2.pdf
AofAweek3.txt

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 AAqa3.pdf
AofAweek4.txt

Ex. 5.1

Ex. 5.3

Ex. 5.7

Ex. 5.23

  5. Analytic Combinatorics

    5.1 The symbolic method

    5.2 Labelled objects

    5.3 Coefficient asymptotics

    5.4 Perspective

AA05-AC.pdf

AAqa4.pdf
AofAweek5.txt

Ex. 6.6

Ex. 6.42

Ex. 7.29

Ex. 7.45

  6. Trees

    6.1 Trees and forests

    6.2 BSTs

    6.3 Path length

    6.4 Other types of trees

  7. Permutations

    7.1 Basics

    7.2 Sets of cycles

    7.3 Left-right minima

    7.4 Other parameters

    7.5 BGFs and distributions

AA06-Trees.pdf

AA07-Perms.pdf

AAqa5.pdf
AofAweek6.txt

Ex. 8.3

Ex. 8.14

Ex. 8.57

Ex. 9.58

  8. Strings

    8.1 Bitstrings with restrictions

    8.2 Languages

    8.3 Tries

    8.4 Trie parameters

  9. Words and Mappings

    9.1 Words

    9.2 Birthday problem

    9.3 Coupon collector problem

    9.4 Hash tables

    9.5 Mappings

AA08-Strings.pdf

AA09-Words.pdf

AAqa6.pdf