6.046J / 18.410J Introduction to Algorithms (SMA 5503)

Fall 2005

Cover of textbook, Introduction to Algorithms.
Cover of 6.046J textbook, Introduction to Algorithms, Second Edition, by Cormen, Leiserson, Rivest, and Stein. (Image courtesy of MIT Press.)

Course Highlights

This course features a complete set of lecture notes and videos. Homework assignments with solutions are also available in the assignments section. In addition, an extensive bibliography of assigned and recommended readings is provided in the readings section. The course textbook was co-written by Prof. Leiserson.

Previous versions of this course are also available: Fall 2004Fall 2001.

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).

Special Features

Technical Requirements

Special software is required to use some of the files in this course: .c, .java.

Donate Now


Prof. Erik Demaine
Prof. Charles Leiserson

Course Meeting Times

2 sessions / week
1.5 hours / session

1 session / week
1 hour / session



Archived Courses

Previous version