In order to successfully take this course, you should already have a basic knowledge of algorithms and mathematics. Here's a short list of what you are supposed to know:
- O-notation, Ω-notation, Θ-notation; how to analyze algorithms
- Basic calculus: manipulating summations, solving recurrences, working with logarithms, etc.
- Basic probability theory: events, probability distributions, random variables, expected values etc.
- Basic data structures: linked lists, stacks, queues, heaps
- (Balanced) binary search trees
- Basic sorting algorithms, for example MergeSort, InsertionSort, QuickSort
- Graph terminology, representations of graphs (adjacency lists and adjacency matrix), basic graph algorithms (BFS, DFS, topological sort, shortest paths)
The material for this course is based on the course notes that can be found under the resources tab. We will not cover everything from the course notes. The course notes are there both for students who did not fully understand the lectures as well as for students who would like to dive deeper into the topics.
The video lectures contain a few very minor mistakes. A list of these mistakes can be found under resources (in the document called "Errata"). If you think you found an error, report a problem by clicking the square flag at the bottom of the lecture or quiz where you found the error.