1
Introduction

Syllabus

Readings

2
Lecture Vidoes

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

3
Lecture Notes

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

4
Exams

Quiz 1

Quiz 1 solutions

Quiz 2

Quiz 2 solutions

Final exam

Final exam solutions

Education

Introduction to Algorithms

About

The 6.006 course logo, with a 2x2x2 Rubik's Cube in place of each zero.

In Problem Set 6, students develop algorithms for solving the 2x2x2 Rubik's Cube.

Instructor(s)

Prof. Erik Demaine

Prof. Srini Devadas

MIT Course Number

6.006

As Taught In

Fall 2011

Level

Undergraduate

CITE THIS COURSE

 

 

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