I’ve been asked to recommend a resource (on-line, book or tutorial) to learn Algorithms (in the sense of of the MIT Intro to Algorithms) for non-CS or Math majors. Obviously the MIT book is way too involved and some of the lighter treatments (like OReilly’s Algorithms in a Nutshell) still seem as if you would need to have some background in algorithmic analysis. Is there resource that presents the material in a way that developers who do not have a background in theoretical computer science will find useful?
I’ve been asked to recommend a resource (on-line, book or tutorial) to learn Algorithms
Share
I think the best way to learn algorithms are through the various competition sites.
As far as books, the best single intro I’ve seen for the non-math specialist is Data Structures and Algorithms. It takes you through an algorithm line by line and shows you how it decomposes mathematically, something CLRS’s otherwise excellent analysis section is a little less clear on.
Skiena’s Algorithm Design Manual is also excellent, as is his Programming Challenges, which is essentially a tutorial through the Valladolid Online Judge.
Honestly, though, I think the single most helpful thing a beginner can do is to implement the various algorithms — merge sort, say, followed by Quicksort — and time them against variously sized inputs. Create a spreadsheet with a graph that shows their growth over time. Very few non-specialists will have the patience or the know-how to set up a recurrence relation and solve their way through it. But you must understand the effect of, say O n^2 growth over time, and there’s no better way to learn this than to watch your own program blow through its memory stack. 🙂
I say this as a non-CS, non-math programmer who has spent a good couple of months wrapping my mind around algorithmic analysis.