Learn faster and stay on-track by joining this free class with other self-learners.
Introduction to Algorithms (MIT 6.046J)
Class length: 16 weeks. Start anytime.
|Join this class!|
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.
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?
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.
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.
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.
LicenseCreative Commons, Attribution Non-Commercial Share Alike