## Course Features

- Video lectures
- Subtitles/transcript
- Lecture notes
- Assignments and solutions
- Exams and solutions
- Recitation videos
- Instructor insights
- This Course at MIT

## Course Description

This is an intermediate algorithms course with an emphasis on teaching techniques for the design and analysis of efficient algorithms, emphasizing methods of application. Topics include divide-and-conquer, randomization, dynamic programming, greedy algorithms, incremental improvement, complexity, and cryptography.

**Note on Previous Versions:**

The Spring 2015 version of 6.046 contains substantially different content than the Spring 2005 version. The 2005 version was an introductory algorithms course assuming minimal previous experience, while the 2015 version is an intermediate course requiring a semester of introductory material found in 6.006.

## Other OCW Versions

OCW has published multiple versions of this subject.