6.006 | Fall 2011 | Undergraduate

Introduction to Algorithms

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

Breadth-first search (BFS)

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.

Unit 8: Advanced Topics
23

Computational complexity

24

Topics in algorithms research

Course Info

Learning Resource Types
Lecture Videos
Recitation Videos
Problem Sets with Solutions
Exams with Solutions
Programming Assignments with Examples
Lecture Notes