6.006 Introduction to Algorithms
6.006 Introduction to Algorithms (Fall 2011, MIT OCW). 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)

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, KarpRabin 
Lecture 10  Open Addressing, Cryptographic Hashing 
Lecture 11  Integer Arithmetic, Karatsuba Multiplication 
Lecture 12  Square Roots, Newton's Method 
Lecture 13  BreadthFirst Search (BFS) 
Lecture 14  DepthFirst Search (DFS), Topological Sort 
Lecture 15  SingleSource Shortest Paths Problem 
Lecture 16  Dijkstra 
Lecture 17  BellmanFord 
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. Lecture Notes. Assignments and Solutions. Exams and Solutions. Recitation Videos. Readings.
