This is the website of Abulsme Noibatno Itramne (also known as Sam Minter). Posts here are rare these days. For current stuff, follow me on Mastodon

Categories

Calendar

November 2024
S M T W T F S
 12
3456789
10111213141516
17181920212223
24252627282930

Introduction to Algorithms: Second Edition

Author: Thomas H. Cormen and others
Started: 10 Apr 2010
Finished: 3 Oct 2010
Format: Hardcover
1180 p / 177 d
6.7 p/d

So, this was another book from my “to read for work” pile. The idea behind this one was to increase my technical depth in certain areas that might be helpful for me. The material in here was of course not all completely new. I’d covered some of it in 15-211 back at Carnegie Mellon, and even some at a Computer Science course at John’s Hopkin’s Center for Talented Youth when I was in high school. The difference of course was that in both of those, at least as far as I can remember them… it has been a long long time… the overview happened at a bit higher level, not diving as deep or getting as intensely into the proofs and such that this textbook does.

Which brings up an important thing. This is indeed a textbook. It isn’t really intended to be “read” in the way I read it, sequentially from beginning to end, one page at a time. Ideally it is used in conjunction with an actual instructor led course and lectures. You might jump around in the book, spending lots of time on some areas, not much in others, and skipping others entirely. Reading straight through is a bit of a slog. 1180 pages of for the most part really dry and boring stuff. Now, to be clear, some of the material itself is kind of fun and interesting. I like thinking about algorithms and the ways in which those kind of things can work. But a textbook like this in isolation, without a course, without any multimedia, etc, and one that concentrates on the proving of theorems about the algorithms and such, just isn’t the most fun way to investigate these things. At least for me. (And this translates directly into my pretty sad 6.7 pages per day average rate for this book.)

Time after time when reading about some new algorithm, I would bemoan the figures and diagrams in the book and think that my intuition of what was supposed to happen could be instantly jumpstarted if instead of the static diagrams and text there were engaging animations, perhaps with interactivity to change initial parameters and see how things were affected, etc. Instead, on any of the more complex ones, I would need to decide to either spend a decent amount of time slogging through log by line, or just decide it wasn’t worth it and move on. Now, I guess I know that the POINT is to slog through it line by line and figure it out. But still, getting the general concept across could happen so much more efficiently in other ways. But again, the goal here often is not getting the general concept across, but is rather in all the little details.

Of course, some chapters were more fun than others. From my particular perspective, not that excited by sorts or data structures, or analysis techniques. Graph algorithms on the other hand are fun. I especially enjoyed the chapter on Maximum Flow. (Not that I have retained much, other than I found it interesting.) The number theory stuff is fun too. I thought I’d enjoy the NP-Completeness discussion as well, but in the end I really didn’t.

Overall, it was a text book. So although there were bits that were interesting or piqued my interest, for the most part it was a chore to get through rather than something enjoyable. I really should get it through my head at some point that books like this are useful as reference, and most certainly as something augmenting an actual course… but reading books like this from beginning to end, one page at a time, definitely just kill my enjoyment of reading as an activity. Which isn’t to say there might not be others like this in my future. There will be. There are some on my list. But hopefully it will be a little while.