How (Not) To Drain The Life Out Of Algorithms

0. Intro 🗿

I think that it’s extraordinarily important that we in computer science keep fun in computing. When it started out, it was an awful lot of fun.
— Alan J. Perlis

A most intriguing—and confounding—book is CLRS, the much-talked-about book on algorithms, one that’s heavily geared toward researchers’ needs, and which has come to be known simply by the initials of its four co-authors. Titled Introduction to Algorithms, and now in its fourth edition, it is published by the venerable shop that is The MIT Press.

CLRS is a monumental work, being a veritable goldmine for researchers, but a perennial landmine for (unwary) students—students who approach it with the hope of learning algorithms, that is—with correspondingly explosive and dismally obliterating consequences for the latter.

I think you sense where we’re going: Let’s make sure nobody gets buried under any monument. And we’ll look for the upside with an eye on keeping the study—and practice—of algorithms a fun pursuit. It doesn’t have to be root canal, amirite?

Intrigued? Read on.

This stuff—the relevance, or otherwise, of books and such to the lives of everyday programmers and other tech types—goes to the heart of how life might well get (unwittingly) drained out of algorithms. More importantly, how does one avoid such a fate: We simply don’t do gloom-and-doom around here. Oh no, none of that.

Looks like we’ve got some unpacking to do, amirite? With a ton of ideas already jostling about, seeking clarity, the thing to do is to unpack them together, you and I.

Onward.

1. With A Straight Face 🎭

A fine quotation is a diamond on the finger of a man of wit, and a pebble in the hand of a fool.
— Joseph Roux

But first things first: Check the Easter Island-like monumental bust pictured above. That’s my pal, Long Face. So I had to commission a small commando operation to snag Long Face from a neighborhood garden, namely mine. Hush now. You’re not a tattletale, are you?

Not a few moments had passed after my putting Long Face alongside CLRS—juxtaposition being the fancy word for that—than his face grew measurably longer. Evidently, our pal had had some prior exposure to CLRS, none of it too endearing. Oh my!

And that’s how Long Face came to be chosen as the poster child for this essay. You see, our pal had fashioned a life revolving around algorithms, devoting his days and nights to the study of algorithmic coolness.

But then came that ill-starred day when CLRS crossed Long Face’s threshold. And needless to say, given that Long Face had always been an oh so ardent student of all things algorithms—not a researcher, mind you—everything went south from there. His unalloyed, pristine school of thought had led him to a solid algorithms education based on prep stuff such as that featured at the coordinates below:

But this CLRS, with its intimidating mathematical machinery—researchers take note—was a bit too much for poor Long Face.

2. We Got… Um, Color đŸŽȘ

There’s hope a great man’s memory may outlive his life half a year.
— Shakespeare

Anyhow, with CLRS now into its fourth edition—and colorization now featured prominently as a selling point—what do we have on our hands?

Alas, it is still algorithms with the life drained out of them, albeit in (flatline) color this time. Oh, it comes in colors everywhere, oh everywhere, just like a rainbow; hey, did anyone catch the reference to that Rolling Stones song with the rainbow and colors theme?

Recall how the colorization of that canonical movie, The Wizard of Oz, is a legend unto itself. The same, when applied to CLRS, a bit less so. You see, analogies can take one only so far—and this is not an especially pretty one, though it’s the one that leapt to mind—is of the meme that’ll have you put lipstick on the pig. Sigh, all in a day’s work, amirite?

Let’s lunge for an analogy here. Consider how, outside of its two principal authors—Bertrand Russell and Alfred North Whitehead—how many people really, really understood what the Principia Mathematica was all about? Five? Ten, tops? I’m sure CLRS has its ardent adherents; researchers all, in all likelihood. I mean, the copious references and mathematical rigor is great. But when it comes down to the business of learning algorithms, students—and other mere mortals—would be best served by looking elsewhere.

In other words, here—in CLRS land—be dragons everywhere, oh everywhere, for newcomers, that is. Oh yes, they got the red and black trees in color all right, but with the selfsame rigor mortis attendant on previous (oh so black and white) editions. Thank goodness, as I was muttering under my breath just the other day, that they did not consider featuring daguerreotype to illustrate algorithms. Go, creativity.

Look, the authors are to be commended for the monumental effort that they have been putting in over the years. It’s just that the material is way too opaque for the mathematically uninitiated: In a remarkably candid self-admission, which I recall from Professor Cormen’s slender volume titled Algorithms Unlocked, that one decidedly aimed at beginners, the highly learned professor—the “C” in CLRS—talks about how the book reviewers of CLRS at The MIT Press had given feedback to him that the material in the manuscript was too technical for students at MIT. Now fancy that.

3. Getting Concrete 🎃

And out there in that great big concrete jungle, I wonder how many others there are like me. Poor bedeviled guys on fire with thirst.
— Charles Brackett

Now give me something concrete, you say. Well, taking a cue from that imposing Greek sigma letter featured above, the one engraved in concrete, let’s just say that there’s a kindler, gentler approach to learning algorithms than what CLRS offers.

Please know that this is not meant—by any stretch of the imagination—to be a takedown of CLRS. To the contrary, and as I’ve gone to great lengths to acknowledge, the authors of said tome are to be commended for the monumental effort that they’ve been putting in over the years. Researchers rejoice; learners, (much) less so.

Let’s not beat about the bush: The material in CLRS is way too unfriendly for the uninitiated.

Interestingly enough, a duck has lined up to check the chiseled-in-concrete sigma, amirite?

4. But, Compared To What? 🍄

I compare human life to a large Mansion of Many Apartments, two of which I can only describe, the doors of the rest being as yet shut upon me.
— John Keats

Concrete and ducks and all, the question remains, though: Compared to exactly what does CLRS come out short? Glad you asked. And this one’s simple. All I have to do is point you in the direction of algorithms texts that are eminently friendly for the student:

Aimed as they are for learners, the mileage of researchers may (well) vary. Or, as they, YMMV.

But wait a second: Are we ready for a hint from the playbook of ace sleuth Tintin, he who has barged into the scene pictured above? And we hear him say, his mouth wide agape, quoting from a fellow—and equally eminent—sleuth on a predicament:

“Data! Data! Data!” Sherlock Holmes cried impatiently. “I can’t make bricks without clay.“
— Arthur Conan Doyle (in The Adventure of the Copper Beeches)

You see, it’s elementary: Keep the material friendly for learners of algorithms. (And if a book is aimed at researchers, please say so; please don’t be disingenuous about advertising who a given book’s audience is. Are learners the audience, or researchers?)

5. And The Plot Thickens đŸŽ«

The life of every man is a diary in which he means to write one story, and writes another; and his humblest hour is when he compares the volume as it is with what he vowed to make it.
— James Barrie

Elementary indeed, except that poor Tintin was heading in the wrong direction a few moments ago, sigh, back when we were contemplating whether we were ready for a hint from the playbook of our ace sleuth. Oops!

But not to worry: We now have our star sleuth looking some upright, algorithmic material straight in the face, as in the pic above, amirite?

The plot thickens, and the algorithmic picture grows richer by the minute. (Check that globe-enshrined dandelion just to Tintin’s left-hand side.) And with everyone—Tintin, duck, dandelion, and Long Face—peering intently in the direction of algorithmic coolness, we’re ready to bring on-stage some splendid volumes on the subject of algorithms.

6. Check These Out, For Example 🐳

It has often been said that a person does not really understand something until he teaches it to someone else. Actually a person does not really understand something until he can teach it to a computer, i.e., express it as an algorithm
 The attempt to formalize things as algorithms leads to a much deeper understanding than if we simply try to comprehend things in the traditional way.
— Donald E. Knuth

And there you have it: A handful of splendid volumes on the subject. (For a whole lot more, check the two linked references from a few minutes ago, repeated here for your handy reference:

At this time, we thank Tintin, duck, dandelion, and Long Face for their rapt attention in this matter of being our captive audience.

Check that: Tintin gets to stand on his soap-box.

Wait, what? That’s no soap-box! That’s a nifty Ahmad Tea-box
 What could be brewing there here for us? And while Tintin ascends to the Pantheon, we mere mortals have plenty of (algorithmic) coolness right here on our hands, no?

7. Always, Keep Going Back To The Basics ☕

I got into my bones the essential structure of the ordinary British sentence—which is a noble thing
. 
— Winston Churchill

One thing’s for sure: It pays—it will always repay—to keep going back to the basics,  to keep going back to the classics. Keep looking for that friendly text on algorithms that resonates with you, the one which lights your spark.

And what do you know? Featured above, standing right behind Tintin’s outstretched raincoat is a friendly volume titled Algorithms Unlocked by none other than Professor Cormen. (You’ll recall him as the “C” in CLRS.) You may notice it being spiral-bound; its pages had fallen apart from overuse or something.

Speaking of the fine professor, I invite you to check out his sincere review (of CLRS) on Amazon.com.

8. Algorithms Unchained, Yay! 🚧

Scorn not the sonnet; Critic, you have frowned,
Mindless of its just honors; with this key
Shakespeare unlocked his heart.
— William Wordsworth

Interestingly enough—and check Professor Cormen’s Algorithms Unlocked pictured above, Polaroid-style, and from a time when said book’s pages were still intact—the fabled Towers of Hanoi make a guest appearance, amirite?

One of these days, let’s you and I chat some about a certain package delivery company, you know the one with those inimitably endearing, chocolate-brown trucks, and really about how they go about finding near-optimal routes for their trucks; that’s algorithms at work, amirite? (TSP, anyone?)

Onward.

9. A Happy Reunion 🍎

Live now, believe me, wait not till tomorrow;
Gather the roses of life today.
— Pierre de Ronsard

Finally, we have a reunion of sorts, one featuring the following ragtag, motley crew: Tintin, duck, dandelion, cardboard house and, most of all, our pal, Long Face. The only thing missing is algorithmic stuff. But we’re good there, having shared a boatload of learner-friendly algorithms resources, amirite?

Life that might have otherwise gotten drained is resurgent, reveling in the glory of motivation, all revved up. Check the river teeming with life, coming right next up.

10. Life Is Coming Back, The River Flows Again 🌊

Th’ imperial ensign, which, full high advanc’d,
Shone like a meteor, streaming to the wind.
— John Milton (in Paradise Lost)

Life is good. A river runs through it, one coursing with life. A thing well begun is half done, they say, so let’s echo the quote from Alan Perlis, the one with which we had set the tone of this essay at the outset: “I think that it’s extraordinarily important that we in computer science keep fun in computing. When it started out, it was an awful lot of fun.”

And we’re no stranger to that tone, amirite? Hey, that’s the bedrock of the philosophy here at Programming Digression: Keep the fun in programming and stuff like that.

Oh, and wedging in a (last) word, edgewise: Look for patterns and, really, look for the unreasonable effectiveness of patterns at work. That study will enrich you for a lifetime.

With that, I thank you for checking an exploration of why it’s “extraordinarily important that we keep fun in computing,” algorithms and all. See you next time.

Meanwhile, we would love to hear from you, by way of comments and stuff like that.

5 comments

  1. This article is over 2,000 words long and says almost nothing about CLRS beyond “it’s unfriendly for the uninitiated” and “it’s only for researchers”. Most of the photos add nothing meaningful to the review and make the process of scouring for useful, specific information even more laborious. The corresponding review on Amazon isn’t a Verified Purchase, so there’s no real evidence that this author has made an honest effort to read the latest edition of the book.

    As for the singular critique: you don’t have to be “mathematically initiated” to get value from the book. Thousands of undergraduate-level students read (and understand) parts of the book every year as a reference for algorithms classes. A review of logarithms and a brief online course on discrete math is sufficient.

    On the Amazon page, CLRS claims to be rigorous and comprehensive. This is a well-known reference book; claiming otherwise is a complete misunderstanding of the book and its goals.

    Please, be concise and specific. This prose is verbose to the point that I feel my time as a reader was disrespected.

    • I thank you for the detailed observations, Tim. To be sure, the whole point of the essays posted around here is to have some fun while learning something new, picking up another perspective, sparking conversation, etc., all in a leisurely way. So if desiccated prose—wholly factual and one drained of life and vigor—suits your reading style better, then by all means I agree that your time may be better spent elsewhere. I still thank you, though, for stopping by to check this essay out.

      Also to be sure, I went well out of my way to show sincere respect to the fine professor, Professor Cormen (You’ll recall him as the “C” in CLRS), pointedly noting his other terrific book on algorithms by noting:

      Keep looking for that friendly text on algorithms that resonates with you, the one which lights your spark.

      And what do you know? Featured above, standing right behind Tintin’s outstretched raincoat is a friendly volume titled Algorithms Unlocked by none other than Professor Cormen. (You’ll recall him as the “C” in CLRS.)
      You may notice it being spiral-bound; its pages had fallen apart from overuse or something.

      Speaking of the fine professor, I invite you to check out his sincere review (of CLRS) on Amazon.com.

      While it was left unstated, I trust you inferred from my remark above—”You may notice it being spiral-bound; its pages had fallen apart from overuse or something.”—what Professor Cormen’s other book means to me…

      In sum, the essays around here are not slam-bam, get me out of
      here—what’s all the hurry about, anyway?—but rather along the sentiment inhering in the following lines of verse:

      Where is the Life we have lost in living?
      Where is the wisdom we have lost in knowledge?
      Where is the knowledge we have lost in information?

      — T. S. Eliot (in The Rock)

  2. I can’t believe this book got the 4th edition now. I still have my 3rd edition on my bookshelf. It used to be my textbook. In fact, it took me two semesters to finish studying the whole book: half of the book in undergrad and half of it in grad school. The book might be not so friendly to be read by a starter as you mentioned, but it is still a good book for a learner. What else it requires might be a good teacher or the better way to learn.

    I might be the lucky one and I got a good professor/instructor for algorithm courses. In class, he guided us to think rather than going through the slides. Just like in coding interviews: first, let us come up with a solution. The first solution can be brute force or based on what we had learnt in the previous classes. Then ask us to optimize it. Eventually, he guided us to the algorithms he wanted to teach, and analyzed the pros and cons of all the solutions we came up with. Classes were like mental exercises with a lot of students’ participations/discussions so they were not boring at all. After classes, our homework was to implement these algorithms, use them to solve real problems, and test the code’s performance/complexity.

    I still remember in the first class, the professor mentioned many of his students got into Google because they were good at this course. As a result, some of my classmates did go to Google upon graduation… Well, letting the students know they can crack Google’s code interview once they become good at this subject is indeed a great motivation for a new learner.

    To sum up, the key to study this book is to learn how to solve practical problems using data structure and algorithms, and how to optimize your solutions through thinking in the “language” of data structure and algorithms. Directly diving into the content may not be much helpful for a beginner, and might be a less efficient way to start. The beginner needs to learn how to “think” and “use” rather than “knowing” the materials.

    After many years, I got to say this book is still helpful for daily coding and code interviews. It is worthwhile to revisit it once a while, and/or when it becomes necessary. These are my thoughts based on my personal experiences.

    • Wow, Xin! I thank you for the terrific, thoughtful comment. So true: A good professor can make all the difference, even when the assigned textbook—in this case, CLRS—is a daunting tome. Agreed that it takes (a lot of) discipline to get to grips with intimidating textbooks.

      And an especially meaningful wrap-up struck me, when you said:

      To sum up, the key to study this book is to learn how to solve practical problems using data structure and algorithms, and how to optimize your solutions through thinking in the “language” of data structure and algorithms. Directly diving into the content may not be much helpful for a beginner, and might be a less efficient way to start. The beginner needs to learn how to “think” and “use” rather than “knowing” the materials.

      Thanks a ton, Xin, for sharing your unvarnished personal experiences with CLRS!

Leave a Reply to TimCancel reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.