# Lecture Notes

LEC # TOPICS
Unit 1: Introduction
1 Algorithmic thinking, peak finding (PDF - 1.9MB)
2

Models of computation, document distance

Unit 2: Sorting and Trees
3 Insertion sort, merge sort (PDF) (Courtesy of Charles Leiserson, Piotr Indyk, Constantinos Daskalakis, and Srini Devadas. Used with permission.)
4 Heaps and heap sort (PDF) (Courtesy of Charles Leiserson, Piotr Indyk, Constantinos Daskalakis, and Srini Devadas. Used with permission.)
5 Binary search trees, BST sort (PDF - 1.2MB)
6

AVL trees, AVL sort

7

Counting sort, radix sort, lower bounds for sorting

Unit 3: Hashing
8

Hashing with chaining

9

Table doubling, Karp-Rabin

10 Open addressing, cryptographic hashing (PDF)
Unit 4: Numerics
11 Integer arithmetic, Karatsuba multiplication (PDF)
12 Square roots, Newton's method (PDF)
Unit 5: Graphs
13

14

Depth-first search (DFS), topological sorting

Unit 6: Shortest Paths
15 Single-source shortest paths problem (PDF)
16 Dijkstra (PDF)
17 Bellman-Ford (PDF - 1.2MB)
18 Speeding up Dijkstra (PDF - 1.1MB)
Unit 7: Dynamic Programming
19

Dynamic programming I: Fibonacci, shortest paths

20

Dynamic programming II: text justification, blackjack

21

Dynamic programming III: parenthesization, edit distance, knapsack

22

Dynamic programming IV: guitar fingering, Tetris, Super Mario Bros.