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

Lecture 1

Lecture 2

Lecture 3

Lecture 4

Lecture 5

Lecture 6

Lecture 7

Lecture 8

Lecture 9

Lecture 10

Lecture 11

Lecture 12

Lecture 14

Lecture 15

Lecture 16

Lecture 17

Lecture 18

Lecture 19

Lecture 20

Lecture 21

Lecture 22

Lecture 23

Lecture 24

### Introduction to Algorithms

### Instructor(s)

Prof. Erik Demaine

Prof. Srini Devadas

### MIT Course Number

6.006

### As Taught In

Fall 2011

### Level

Undergraduate

## Course Features

## Course Description

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.

Share