6.006 Introduction to Algorithms

MIT OCW - 6.006 Introduction to Algorithms (Fall 2011). Taught by Professor Erik Demaine and Professor Srinivas Devadas, 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. (from ocw.mit.edu)

Algorithmic Thinking, Peak Finding


Lecture 01 - Algorithmic Thinking, Peak Finding
Lecture 02 - Models of Computation, Document Distance
Lecture 03 - Insertion Sort, Merge Sort
Lecture 04 - Heaps and Heap Sort
Lecture 05 - Binary Search Trees, BST Sort
Lecture 06 - AVL Trees, AVL Sort
Lecture 07 - Counting Sort, Radix Sort, Lower Bounds for Sorting
Lecture 08 - Hashing with Chaining
Lecture 09 - 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

References
Introduction to Algorithms (Fall 2011)
Instructors: Prof. Erik Demaine and Prof. Srinivas Devadas. Assignments and Solutions. Exams and Solutions. Recitation Videos. Readings.