Hacker News new | ask | show | jobs
by vinayms 2578 days ago
This is a series more for engineers who want to delve into the depths of "computer science" that takes them to the magical world of mathematics. That way, its not worth if you are looking for direct real world application, like the CLRS or Sedgeick books provide.

That said, I think its worth having this for the humbling experience it provides. This experience is very much needed for every engineer, and specifically software engineers, because after a while of reapplying same old tropes to churn out solutions to problems, there creeps a feeling that we are at the top of our game, and "experts", when in reality most of us are only "experts" in a specific insipid framework or technology which are as permanent as the latest fashion trends. This series of books makes us feel worthless and keenly introspect. It makes us see that there is a vast array of knowledge that we severely lack. It builds personality and keeps us grounded. It separates true musicians from college band guitarists who shred the neck to cheering crowds.

I have Combinatorial Algorithms Part 1 Volume 4A and it makes me cry every time I peruse it.

3 comments

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.

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.
Alternately, I implemented the algorithm for generating all permutations straight out of Knuth.

They may be extremely dense and hard to read, but I feel like you are hanging a lot of emotional baggage on a set of reference books.

>I have Combinatorial Algorithms Part 1 Volume 4A and it makes me cry every time I peruse it.

Is that a recommendation or anti-recommendation? Or both?