top | item 16377259

The Algorithm Design Manual (2008)

186 points| Chris2048 | 8 years ago |algorist.com | reply

34 comments

order
[+] jnordwick|8 years ago|reply
> False Starts -- Algorithms textbooks generally present important algorithms as a fait accompli, obscuring the ideas involved in designing them and the subtle reasons why other approaches fail.

I really really like this idea. It is fairly common that I'm working on an algorithm and I have pieces of it and can see goal line, but can't quite figure out to get there.

Learning to see patterns and generalize solutions from past failures is incredibly useful.

[+] epberry|8 years ago|reply
One of my favorite technical books. The sections on dynamic programming and heuristics were a revelation for me working on some of my first non trivial algorithms.
[+] danharaj|8 years ago|reply
Algorithms taught by Skiena was one of two CS courses I took at Stony Brook (the other was formal logic) as they were cross listed with MAT. It was an enjoyable class, i think Skiena has really nailed down how to teach CS. This book covers more than can be taught in a semester so it was a great way for me to get a wide breadth of basic algorithmic knowledge. I think its treatment of simulated annealing stuck with me most.
[+] eru|8 years ago|reply
The Algorithm Design Manual is very 'fluffy'. I never understood why so many people like it.

If you enjoy hand-waving and hate rigour, it's a nice read. But if you don't like computer science in the first place, why don't you pick a good novel or a book about giraffes?

https://www.mccaughan.org.uk/g/books/alg-design.html puts a similar objection in a much more sympathetic tone that I can manage.

I am quite enjoying the lecture notes on http ://jeffe.cs.illinois.edu/teaching/algorithms/ recently, but there are for a more advanced course.

[+] cf|8 years ago|reply
I love it since it has actual C code for implementing the ideas. You get the intuition for the algorithms, how that intuition translates into pseudocode, and how that pseudocode becomes real C code.

Another lesson that it uniquely provides is that in day to day life you don't use these algorithms. You create new algorithms using the ideas behind the famous ones as a guide. An algorithms book or class that doesn't teach you that problem-solving mindset is basically useless.

[+] westoncb|8 years ago|reply
It really depends on what you're looking for. If you're trying to build a solid understanding of algorithmic patterns, the Algorithm Design Manual is a quite good choice, and not hand-wavy nor lacking in rigor in any meaningful way.

If you are trying to prove properties of particular algorithms or you already have a specific algorithm in mind that you're considering using and need to analyze its complexity, then this would not be the best choice.

You shouldn't dismiss/denigrate the book because it doesn't fit with your personal use case.

The whole 'lacking rigor' idea here is a common pitfall for programmers—seems predicated on the false idea that coding is this one dimensional activity with a hard side and a fluffy side, and the fluffy side is largely comprised of deceptions for the weak or timid. I bet there's a strong correlation between folks who prefer (e.g.) Cormen to Skiena and those who insist on using terminal windows and vi/emacs for every task—and yet the correlation you might hope to find with the quality/depth/interest of their work fails to hold.

I always feel kind of bad when I see programmers taking on this attitude (often times it manifests as they're trying to freak out more novice programmers and display their supposed superiority), and unnecessarily hampering themselves. It's one aspect of our culture I'd really like to see die out before it spreads to the next generation.

[+] aardvark291|8 years ago|reply
I love it for the wonderful, engaging "war stories" and practical approach. It's not as theoretical as CLRS but much more practical, approachable, and readable, making it likely a better choice for most programmers.
[+] wetpaws|8 years ago|reply
It's the only book where author actually tries to make you understand the topic rather than mastrubating on it's academic background and a bunch of pseudomath.
[+] dmlorenzetti|8 years ago|reply
You don't have to "hate rigor" in order to like non-technical treatments of a subject.

One reason I like the book is it gives a high-level overview of what algorithms are available to solve a problem, and a sense of which is most appropriate to my problem. If I need rigor after that, I can go to an appropriate source.

[+] Apocryphon|8 years ago|reply
The majority of people reading algorithm books are looking to brush up for technical interviews or to supplement a bootcamp education, not because they are CS postgrads or genuinely love algorithms.
[+] justin66|8 years ago|reply
> I never understood why so many people like it.

It's a good reference for anyone who is researching how to approach a given problem. One can switch off to a different text later on if they need to, and one of the nice features of Skiena is that he provides links at times to source code and further reading.

Ideally you'd know all the basics and use something like Kao's Encyclopedia of Algorithms to lookup the rest, but that thing is big enough to beat a man to death with. Skiena is a lot more approachable.

[+] ryanmarsh|8 years ago|reply
I didn't go to university thus I do not have a CS degree. This book was incredibly helpful in teaching me the basics of algorithms. I found it approachable but technical enough.
[+] shahbaby|8 years ago|reply
I felt the exact same way.

Personally I've found the best thing is to see a lot of problems. The more problems you've solved, the more reference points you have for solving future ones.

But these have to be problems that you've personally solved.

That's why fluffy algorithm books are a waste of time. Books cannot do the thinking for you.

[+] nagVenkat|8 years ago|reply
Do you have any other book that can be considered as an alternative with some rigor but still be approachable to a beginner?
[+] fuball63|8 years ago|reply
This was my textbook for an Algorithms course in school. I recently had to crack it open again to brush up on algorithms before a tech interview; I think it helped.