Hacker News new | ask | show | jobs
by thrower123 2578 days ago
If CLRS is an example of sonething that has direct real world application, then the other must be truly arcane and esoteric. My hatred for CLRS mostly stems from a completely terrible algorithms class I took which used it, ignored anything that might be useful, and focused 110% on proof-writing. For all the random crap that is covered in excruciating detail, there are some weird gaps where some things that are actually used in industry and have long been, don't get passing mention...

But Corman himself is also kind of a pretentious tool, so that doesn't help - he was certainly an abysmal freshman advisor.

3 comments

What enraged me about CLRS was that none of the exercises included answers. I'm not asking for fully worked-out solutions - just something I can gauge my own work against. ("I got 5. The back of the book says 12. Ok, I must have made a mistake somewhere...") The hostility that the authors direct at people who are looking for a quick sanity check like that fits into your observation that C is a pretentious tool.
Hahaha that is a great story. Though it does seem like teaching and advising are different skills and one can be good at one but not the other.

I have been watching Steven Skiena's lectures and reading his book, and I like both of them, but the lectures most of all because of his relaxed and practical approach. Skiena himself says that CLRS is a "better" book than his (and also more up to date) but I like the Skiena learning curve better.

In contrast, Tim Roughgarden's lectures and books are more mathematical, but his proofs seem reasonably well-motivated and clearly explained to me at least.

I also like how both of these guys point out that coming up with new algorithms or proofs from scratch is incredibly hard and you shouldn't expect (yourself or anyone) to be able to do so quickly or on the fly. Success with algorithm puzzle exams, algorithm puzzle "programming" contests, and algorithm puzzle "technical" interviews is largely based on familiarity with a large body of pre-existing algorithms and data structures and experience applying them to a wide range of problems. That sort of knowledge and experience greatly improves your odds of guessing the (often sneaky and non-obvious) trick required to solve a particular, usually weirdly stated, algorithm puzzle.

How is proofwriting not useful? What do you expect in an algorithms class? It’s called algorithms, not Python Frameworks or something.
I had hoped that we might write at least one line of executable code to actually implement any of the algorithms that we studied.

I think the same course could have been much more useful and even fun if you had to turn in working C code in addition to all the pen-and-paper work.

Algorithm Design by Tardos/Kleinberg is a much better book for this imho, going through 200+ problems and designing algorithms to solve them. Less reference style than CLRS and more like TAOCP.