# MIT 6.006 Introduction to Algorithms, Fall 2011

#### This course provides an introduction to mathematical modeling of computational problems. It covers the common algorithms, algorithmic paradigms, and data structures used to solve these problems. Created by MIT OpenCourseWare.

50 hours

###### Skill Level

Intermediate

Creative Commons (non commercial)

##### Pick a lesson

1: 1. Algorithmic Thinking, Peak Finding
2: 2. Models of Computation, Document Distance
3: 3. Insertion Sort, Merge Sort
4: 4. Heaps and Heap Sort
5: 5. Binary Search Trees, BST Sort
6: 6. AVL Trees, AVL Sort
7: 7. Counting Sort, Radix Sort, Lower Bounds for Sorting
8: 8. Hashing with Chaining
9: 9. Table Doubling, Karp-Rabin
10: 10. Open Addressing, Cryptographic Hashing
11: 11. Integer Arithmetic, Karatsuba Multiplication
12: 12. Square Roots, Newton's Method
14: 14. Depth-First Search (DFS), Topological Sort
15: 15. Single-Source Shortest Paths Problem
16: 16. Dijkstra
17: 17. Bellman-Ford
18: 18. Speeding up Dijkstra
19: 19. Dynamic Programming I: Fibonacci, Shortest Paths
20: 20. Dynamic Programming II: Text Justification, Blackjack
21: 21. DP III: Parenthesization, Edit Distance, Knapsack
22: 22. DP IV: Guitar Fingering, Tetris, Super Mario Bros.
23: 23. Computational Complexity
24: 24. Topics in Algorithms Research
25: R1. Asymptotic Complexity, Peak Finding
26: R2. Python Cost Model, Document Distance
27: R3. Document Distance, Insertion and Merge Sort
28: R5. Recursion Trees, Binary Search Trees
29: R6. AVL Trees
30: R7. Comparison Sort, Counting and Radix Sort
31: R8. Simulation Algorithms
32: R9. Rolling Hashes, Amortized Analysis
33: Recitation 9b: DNA Sequence Matching
34: R10. Quiz 1 Review
35: R11. Principles of Algorithm Design
36: R12. Karatsuba Multiplication, Newton's Method