Lecture Overview
Schedule
| Title | Description |
|---|---|
| Meet the course and the teaching team. Learn what an algorithm is, compare linear and exponential growth, and use Big O notation to describe how running time grows. | |
| Reason about how much memory code uses. Explore hashing, Python dictionaries and sets. | |
| Learn graph vocabulary (nodes, edges, paths, connectivity) and how to build graphs in Python. See why sparse matrices save memory for data that is mostly zeros. | |
| Pick the right sparse format (COO, CSR or CSC) for the job. Build stacks and queues, then use them to search a graph with breadth-first and depth-first search. | |
|
5. Trees and Recursive Algorithms coming soon |
Meet trees: roots, leaves and subtrees. Break problems into smaller copies of themselves, identify base and recursive cases, trace the call stack, and see where recursion goes wrong. |
|
6. Recursive Data Structures coming soon |
Build data structures defined in terms of themselves, such as linked lists and trees. Use binary search trees and k-d trees for fast lookup and nearest-neighbour search. |
|
7. Dynamic Programming I coming soon |
Spot problems with overlapping subproblems, like Fibonacci and climbing stairs. Speed them up with caching (top-down) and tables (bottom-up). |
|
8. Dynamic Programming II coming soon |
Apply dynamic programming to harder optimization problems such as edit distance, and recover the optimal solution by backtracking through the table. |
No matching items