Computer Science > Introduction to Algorithms

# Introduction to Algorithms

Watch the Introduction to Algorithms course from MIT, taught by Prof. Erik Demaine and Prof. Srinivas Devadas in the fall of 2011. License: Creative commons BY-NC-SA 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. The course emphasizes the relationship between algorithms and programming, and introduces basic performance measures and analysis techniques for these problems.

### Videos

- Lecture 1: Algorithmic Thinking, Peak Finding
- Lecture 2: Models of Computation, Document Distance
- Lecture 3: Insertion Sort, Merge Sort
- Lecture 4: Heaps and Heap Sort
- Lecture 5: Binary Search Trees, BST Sort
- Lecture 6: AVL Trees, AVL Sort
- Lecture 7: Counting Sort, Radix Sort, Lower Bounds for Sorting
- Lecture 8: Hashing with Chaining
- Lecture 9: Table Doubling, Karp-Rabin
- Lecture 10: Open Addressing, Cryptographic Hashing
- Lecture 11: Integer Arithmetic, Karatsuba Multiplication
- Lecture 12: Square Roots, Newton's Method
- Lecture 13: Breadth-First Search (BFS)
- Lecture 14: Depth-First Search (DFS), Topological Sort
- Lecture 15: Single-Source Shortest Paths Problem
- Lecture 16: Dijkstra
- Lecture 17: Bellman-Ford
- Lecture 18: Speeding up Dijkstra
- Lecture 19: Dynamic Programming I: Fibonacci, Shortest Paths
- Lecture 20: Dynamic Programming II: Text Justification, Blackjack
- Lecture 21: Dynamic Programming III: Parenthesization, Edit Distance, Knapsack
- Lecture 22: Dynamic Programming IV: Guitar Fingering, Tetris, Super Mario Bros.
- Lecture 23: Computational Complexity
- Lecture 24: Topics in Algorithms Research