
Cover of 6.046J textbook, Introduction to Algorithms, Second Edition, by Cormen, Leiserson, Rivest, and Stein. (Image courtesy of MIT Press.)
Instructor(s)
Prof. Charles Leiserson
Prof. Erik Demaine
MIT Course Number
6.046J / 18.410J
As Taught In
Fall 2005
Level
Undergraduate
Translated Versions
Course Description
Course Features
- Video lectures
- Captions/transcript
- Selected lecture notes
- Assignments: problem sets with solutions
- Assignments: programming with examples
- Exams and solutions
Course Highlights
This course features a complete set of lecture notes and videos. The course textbook was co-written by Prof. Leiserson.
Course Description
This course teaches techniques for the design and analysis of efficient algorithms, emphasizing methods useful in practice. Topics covered include: sorting; search trees, heaps, and hashing; divide-and-conquer; dynamic programming; amortized analysis; graph algorithms; shortest paths; network flow; computational geometry; number-theoretic algorithms; polynomial and matrix calculations; caching; and parallel computing.
This course was also taught as part of the Singapore-MIT Alliance (SMA) programme as course number SMA 5503 (Analysis and Design of Algorithms).
Other Versions
Other OCW Versions
OCW has published multiple versions of this subject.
- 6.046J Design and Analysis of Algorithms (Spring 2015)
- 6.046J Design and Analysis of Algorithms (Spring 2012)
Archived versions: