Stop learning alone!

Learn faster and stay on-track by joining this free class with other self-learners.

Register for Introduction to Algorithms (MIT 6.046J) now.

Introduction to Algorithms (MIT 6.046J)

Class length: 16 weeks. Start anytime.

Creator: CoreyWhite

Status: Established

Join this class!

Course Home

Description

This course will follow MIT's Introduction to Algorithms class, specifically the Fall 2005 version. Why Fall 2005? Because some really excellent video lectures are available from MIT's Open Courseware, along with assignments, readings, solutions, and so forth. The same videos are also available for download through iTunes University in iPod/iPhone-ready formats if you prefer.

From MIT's OCW site: > "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." As much as possible, this course follows the same schedule and format as the original MIT class did.

Prerequisites and Difficulty

This is not an introductory programming class. There are a couple of great alternatives already available on Curious Reef for that: Introduction to Computer Science and Programming and Structure and Interpretation of Computer Programs.

This lectures and textbook for this class assume some programming knowledge. Some math background (probability, discrete math, basic calculus) will be very helpful, and the professors will assume that you already have it in their lectures. The textbook has several appendices that review some of the requirements, though.

The formal prerequisites from MIT are:

Materials and Technical Requirements

MIT OCW Site Quick Links

Note that you can also download all course materials (except for videos) at this page, and all videos through iTunes University.

Primary Textbook

The textbook for this course is Introduction to Algorithms, 2nd Edition, also known as CLRS after its authors: Thomas Cormen, Charles Leiserson (one of the lecturers!), Ronald Rivest, and and Clifford Stein.

It's worth noting that this edition is technically out of print, and has been superseded this year by the 3rd edition. So why are we using an out-of-date textbook?

  • This class is set up to follow the Fall 2005 section of 6.046J as closely as possible, so that we can take advantage of the awesome free lectures, assignments, exams, and solutions MIT OCW has provided.
  • We're going to be studying algorithms, not a specific programming language, so it's not essential to be perfectly up-to-date. What we'll be learning is "timeless" in a way, and CLRS is widely acknowledged as a classic text.
  • The 2nd edition has been out for a long time, and used copies can be found relatively cheap. The 3rd edition was just released and is much more expensive, but hasn't seen many changes that will be significant at an introductory level.

CLRS Supplementary Materials

Thomas Cormen, one of the authors, maintains a list of errata that can be viewed by printing date.

McGraw Hill has a supplementary site for the textbook. This is not very useful, but it might be worth looking at. It has per-chapter glossaries and summaries, along with pseudocode and PowerPoint slides for some chapters.

Optional Material

Lecture Notes

Peteris Krumins, author of the good coders use, great reuse blog, has posted notes on all of the lectures. These include his thoughts on the video lectures, even broken down by time, as well as photos of his hand-written lecture notes. I highly recommend taking a look at these -- it's a great way to get someone else's perspective on the material, check your understanding, and somewhat make up for the lost interactivity from taking this course online instead of at a university.

Supplementary Texts

One of the problems often mentioned with the CLRS textbook is that none of its exercises have solutions. We're a little better off, because the OCW site has solutions at least to the assigned problems. However, you may still want to see more examples of solved algorithms problems. In that case, consider checking out Ian Parberry's Problems on Algorithms, available on Amazon or free online.

The MIT OCW site has an extensive list of useful references that may be of value to you, especially if you have access to a university library (or a lot of cash to burn on books).

Finally, if you lack the mathematics background for the course, or just want to brush up a bit without taking a full class, consider picking up one of the Schaum's Outlines. In my experience, they're better than they're often made out to be, and their Discrete Mathematics Revised is apparently one of the better ones. I've ordered it myself (my Discrete Math class in college was not as rigorous as might be hoped), and I'll update this with more info if it ends up being helpful.

How Curious Reef Works

The purpose of the class is to learn collaboratively with others.
The course creator has organized the course information for everyone.

  • Complete one lesson and its assignments per week
  • Submit and self-grade your own work
  • Help each other in the class forum

License

Creative Commons, Attribution Non-Commercial Share Alike

Attribution Non-Commercial Share Alike

Recent Activity

yulemata joined
2 weeks ago
IrinaGry joined
1 month ago
Wiilwaal joined
2 months ago
harshitha joined
3 months ago
asztandi joined
4 months ago
mjohnse1 joined
4 months ago
ionceban joined
5 months ago
designcode joined
5 months ago

Class RSS Feed

Members (121)

yulemata
Joined 2 weeks ago
IrinaGry
Joined 1 month ago
Wiilwaal
Joined 2 months ago
harshitha
Joined 3 months ago
asztandi
Joined 4 months ago
mjohnse1
Joined 4 months ago
ionceban
Joined 5 months ago
designcode
Joined 5 months ago

All members