Overview
Save Big on Coursera Plus. 7,000+ courses at $160 off. Limited Time Only!
This course teaches a calculus that enables precise quantitative predictions of large combinatorial structures. In addition, this course covers generating functions and real asymptotics and then introduces the symbolic method in the context of applications in the analysis of algorithms and basic structures such as permutations, trees, strings, words, and mappings.
All the features of this course are available for free. People who are interested in digging deeper into the content may wish to obtain the textbook Analysis of Algorithms, Second Edition (upon which the course is based) or to visit the website aofa.cs.princeton.edu for a wealth of additional material.
This course does not offer a certificate upon completion.
Syllabus
- Analysis of Algorithms
- We begin by considering historical context and motivation for the scientific study of algorithm performance. Then we consider a classic example that illustrates the key ingredients of the process: the analysis of Quicksort. The lecture concludes with a discussion of some resources that you might find useful during this course.
- Recurrences
- We begin this lecture with an overview of recurrence relations, which provides us with a direct mathematical model for the analysis of algorithms. We finish by examining the fascinating oscillatory behavior of the divide-and-conquer recurrence corresponding to the mergesort algorithm and the general "master theorem" for related recurrences.
- Generating Functions
- Since the 17th century, scientists have been using generating functions to solve recurrences, so we continue with an overview of generating functions, emphasizing their utility in solving problems like counting the number of binary trees with N nodes.
- Asymptotics
- Exact answers are often cumbersome, so we next consider a scientific approach to developing approximate answers that, again, mathematicians and scientists have used for centuries.
- Analytic Combinatorics
- Analytic Combinatorics. With a basic knowledge of recurrences, generating functions, and asymptotics, you are ready to learn and appreciate the basic features of analytic combinatorics, a systematic approach that avoids much of the detail of the classical methods that we have been considering. We introduce unlabeled and labelled combinatorial classes and motivate our basic approach to studying them, with numerous examples.
- Trees
- The quintessential recursive structure, trees of various sorts are ubiquitous in scientific enquiry, and they arise explicitly in countless computing applications. You can find broad coverage in the textbook, but the lecture focuses on the use of analytic combinatorics to enumerate various types of trees and study parameters.
- Permutations
- The study of sorting algorithms is the study of properties of permutations. We introduce analytic-combinatoric approaches to studying permutations in the context of this relationship.
- Strings and Tries
- From DNA sequences to web indices, strings (sequences of characters) are ubiquitous in modern computing applications, so we use analytic combinatorics to study their basic properties and then introduce the trie, an essential and fundamental structure not found in classical combinatorics.
- Words and Mappings
- We view strings as sets of characters or as functions from [1..N] to [1..M] to study classical occupancy problems and their application to fundamental hashing algorithms. Functions from [1..N] to [1..N] are mappings, which have an interesting and intricate structure that we can study with analytic combinatorics.
Taught by
Robert Sedgewick
Tags
Reviews
4.0 rating, based on 6 Class Central reviews
4.4 rating at Coursera based on 978 ratings
Showing Class Central Sort
-
Difficult, and mathematically demanding.
Self-paced and ungraded, due to both, the inherent difficulty of the subject, and the difficulty of grading the exercises. -
Some mistakes. Master theorem a basic tool was wrong. Proofs are not well laid out. The mooc is not self sufficient, but needs the book to be useful.
I would not recommend this course though the instructor is extremely knowledgeable. I liked his other course on algorithms in Coursera a lot. -
I haven't completed this course completely tbh. But the materials and notes were great , author goes into good detail in some topics.
Might be a bit hard mathematically for those who suck.
Author uses Java -
-