Best Algorithms Books (Part 1)

๏ธ๐Ÿ‡บ๐Ÿ‡ธ๐Ÿ‡บ๐Ÿ‡ธ ๐Ÿ‡บ๐Ÿ‡ธ ๐Ÿ‡บ๐Ÿ‡ธ ๐Ÿ‡บ๐Ÿ‡ธ ๏ธ๐Ÿ‡บ๐Ÿ‡ธ๐Ÿ‡บ๐Ÿ‡ธ ๐Ÿ‡บ๐Ÿ‡ธ ๐Ÿ‡บ๐Ÿ‡ธ ๐Ÿ‡บ๐Ÿ‡ธ ๏ธ๐Ÿ‡บ๐Ÿ‡ธ๐Ÿ‡บ๐Ÿ‡ธ ๐Ÿ‡บ๐Ÿ‡ธ ๐Ÿ‡บ๐Ÿ‡ธ ๐Ÿ‡บ๐Ÿ‡ธ ๏ธ๐Ÿ‡บ๐Ÿ‡ธ๐Ÿ‡บ๐Ÿ‡ธ ๐Ÿ‡บ๐Ÿ‡ธ ๐Ÿ‡บ๐Ÿ‡ธ ๐Ÿ‡บ๐Ÿ‡ธ ๏ธ๐Ÿ‡บ๐Ÿ‡ธ๐Ÿ‡บ๐Ÿ‡ธ ๐Ÿ‡บ๐Ÿ‡ธ ๐Ÿ‡บ๐Ÿ‡ธ ๐Ÿ‡บ๐Ÿ‡ธ

To my fellow Texans,ย affected by the fury of Hurricane Harvey๐ŸŒ€ I dedicate this essay to you, with prayers, as we go about rebuilding our homes in our Lone Star State ๐Ÿšง โ›‘ โ›… ๐ŸŒ‚ ๐ŸŒˆ ๐ŸŒ ๐ŸŒžย Here’s how you can help people affected by Harveyย ๐ŸŽฏ

๏ธ๐Ÿ‡บ๐Ÿ‡ธ๐Ÿ‡บ๐Ÿ‡ธ ๐Ÿ‡บ๐Ÿ‡ธ ๐Ÿ‡บ๐Ÿ‡ธ ๐Ÿ‡บ๐Ÿ‡ธ ๏ธ๐Ÿ‡บ๐Ÿ‡ธ๐Ÿ‡บ๐Ÿ‡ธ ๐Ÿ‡บ๐Ÿ‡ธ ๐Ÿ‡บ๐Ÿ‡ธ ๐Ÿ‡บ๐Ÿ‡ธ ๏ธ๐Ÿ‡บ๐Ÿ‡ธ๐Ÿ‡บ๐Ÿ‡ธ ๐Ÿ‡บ๐Ÿ‡ธ ๐Ÿ‡บ๐Ÿ‡ธ ๐Ÿ‡บ๐Ÿ‡ธ ๏ธ๐Ÿ‡บ๐Ÿ‡ธ๐Ÿ‡บ๐Ÿ‡ธ ๐Ÿ‡บ๐Ÿ‡ธ ๐Ÿ‡บ๐Ÿ‡ธ ๐Ÿ‡บ๐Ÿ‡ธ ๏ธ๐Ÿ‡บ๐Ÿ‡ธ๐Ÿ‡บ๐Ÿ‡ธ ๐Ÿ‡บ๐Ÿ‡ธ ๐Ÿ‡บ๐Ÿ‡ธ ๐Ÿ‡บ๐Ÿ‡ธ

An algorithm must be seen to be believed ๐Ÿ
~ Donald Knuth
ย 

We live in a culture that’s been hijacked by the management consultant ethos. We want everything boiled down to a Power Point slide. We want metrics and ‘show me the numbers.’ That runs counter to the immensely complex nature of so many social, economic and political problems. You cannot devise an algorithm to fix them ๐Ÿณ
~ Carl Honore
ย 

Nature doesn’t feel compelled to stick to a mathematically precise algorithm; in fact, nature probably can’t stick to an algorithm ๐Ÿ—ป
~ Margaret Wertheim

According to Greek myth, Theseus was sent into a maze to kill the minotaur.ย Guess what, Theseus came up with an algorithmโ€”it involves a ball of threadโ€”to help him find his way back out again, after, of course, slaying the beast ๐Ÿ‰

Preamble ๐Ÿ’™

Before We Join Our Brave Minotaur-Slayerโ€ฆ

Before taking even a single step forwardโ€”should we choose to accompany our intrepid friendย Theseus on his quest to devise an algorithm to save his lifeโ€”I am compelled to revisit a much more sobering reality on ground here in Texas ๐Ÿ˜ฐ Yes, two words:ย Hurricane Harvey… Much as I noted atop this essay, which I’m dedicating to my fellow Texans affected by the wrath of Harvey, we go about rebuilding our homes in the Lone Star State of the United Statesโ€”And we need all the help we can get, and I urge you toย please consider pitching in to help our brothers, sisters, children, elderly, stranded pets, etc., who have been starkly affected by Harveyย ๐Ÿš‘ ๐Ÿ’ฆ ๐Ÿš’ ๐Ÿš“ ๐Ÿ’จ ๐Ÿ’”

I have poured my heart out to make this my best essay ever, if only to get your precious attention on the stark reality that faces the countless thousands in Houston and other, surrounding areas in Texas; before I went on to earn my MS from Texas A&M University (College Station)โ€”yes I’m proud to be an Aggieโ€”I was, and remain, a proud Houston Cougarย as well. Wistfully thinking back now to my undergrad days when I was earning my BS in the presently inundated town. Yes, Houston, you were my warm homeโ€”at the same time though a decidedlyย drier andย rather humid one at the same time, goodnessโ€”for four wonderful years ๐Ÿ™Œ

This Essay Is Going To Be Personal

I never get this personal in my essays. But then again, as in these memorable words from Charlotte Bronte’s literary masterpiece, the classic entitled Jane Eyre, and which I read ages ago as a high school student

They are, Miss Eyre, though they absolutely require a new statute: unheard-of combinations of circumstances demand unheard-of rules (italics mine)
So I came to the United States as an immigrant, and this countryโ€”myย country now for nearly 30 years and to which I pledge my allegianceโ€”embraced me with unconditional warmth. I still recall a moment when I was standing outside theย University of Houston Cullen College of Engineering with a friend, and we got to talking about the city of Houston in general. Unbeknownst to meโ€”and I have to this day not been able to fathom whyโ€”some words that my friend said continue to remain etched in my memory:
You know what Akram, Houston is a city with a big heart; it’s a town that is truly ghareeb purwur (an adjective phrase from my native language Urdu, and for which I offer an ad hoc translation: fostering and supportive the common manโ€”andย common woman, to be sureโ€”ย in a nurturing way).

But First, A Tribute To The City Of Houston

Dear readers, I wish to pay a tribute to the city which embraced me as an immigrant;ย despite having moved back to another city (the neighboring city of Austin)โ€”by way of South Carolina and Minnesotaโ€”the city of Houston will always have a soft spot in my heart ๐Ÿ’


The fury of Harvey finally subsided and we heaved a sigh of relief here. Our yardsโ€”both the front and the backโ€”though are strewn with the wreckage of fallen tree limbs and stuff. But grateful to be safe and not flooded anymore.

Look, I’m A One-Man Shop

Much as I noted above, I’ve poured my heart out into this essay to make it my best essay ever. In the process, I taught myself how to use an image editing tool to create a handful of pictures collage to share with you. Looks, I’m a computer scientist, engineer, and programmer who designs and crafts the back-end software that powers infrastructures for Big Data and Reactive Applicationsโ€”I know zilch about these fancy shmancyย image editing tools, but I felt compelled to roll up my sleeves and teach myself just enough to cobble together some pictures collage to share with you.

I’m a one-man shop when it comes to this blog; there isn’t anyone editing my drafts, or helping me spiff up the formatting; so what you get on this blog is plain, straight up stuff from me ๐Ÿฃ I will add, though, that it’s been my great good fortune to benefit from the advice of my friendย Antonio Cangiano who has just happens to have written the definitive book on the subject of technical bloggingโ€”over the years, I’ve leaned on, and benefited tremendously from, that advice ๐Ÿ“˜

The Tracks Of My Tears ๐Ÿ‘ฃ

You’ll want to note in particular the pics below with raindrops that symbolize just how bedraggled our existence can become when exposed to the merciless elements of nature; yes, those raindrops signify the tracks of the tears that are being shed this second as the folks in Houston recover from Harvey, struggling to pick themselves up ๐ŸŒ€

Reminds me of the haunting lyrics of the ethereal song Empty Garden by piano virtuoso Elton John whoโ€”along with Kishore Kumarย and Mark Knopflerโ€”is one of my all-time favorite singers. So in that angst ridden songย Empty Garden, we hear Elton John soulfully and wistfully wondering as to

What happened here
As the New York sunset disappeared
I found an empty garden among the flagstones there
Who lived here
He must have been a gardener that cared a lot
Who weeded out the tears and grew a good crop
And now it all looks strange ๐ŸŒ˜
Johnny can’t you come out to play in your empty garden ๐Ÿ 
๐ŸŒณ ๐ŸŒฒ ๐ŸŒด ๐Ÿƒ ๐Ÿ‚ ๐Ÿ

Empty Gardens, Raging Winds, And Wreckage ๐Ÿš‘

And speaking of the empty garden metaphor above, which we savoredโ€”in all its ascetic starknessโ€”by way of the lyrics ofย Empty Garden, it’sย not a random choice of images that you see here; I lavished much care on selecting each and every image, as well as their juxtaposition to achieve the desired effect. Take, for example, the collage below, where I have featured a pic I took in my own backyardโ€”with a stowed-away pile ofย tree limbs that were severed from our precious live oak trees, as well as otherย wreckage wrought by the raging winds ofย Harvey. Again, though, I’mย grateful to be safe and not flooded anymore.ย 

It’s a bizarre situation that we’ve got on our hands; we can’t pump gas into our cars, because there is no gas to be found anymore at the gas stations here in Austin. But this a mere annoyance, and utterly pales in comparison with the gut-wrenching catastrophe writ large at the moment in my dear former town: Houston ๐ŸŒ˜
Anyone remember singer-songwriter, guitaristย Mark Knopfler (of the British music group Dire Straits) singing the deeply symbolic, classic song Telegraph Road?

And my radio says tonight it’s gonna freeze
People driving home from the factories
There’s six lanes of traffic
Three lanes moving slowย 

From all of these signs saying “sorry but we’re closed”
All the way down the Telegraph Road

Anyone Remember Rosie The Riveter?

So I’m going to summon just enough discipline to write up the guts of the essay nowโ€”as I’ve noted elsewhere, I do pretty much all my writing over the weekends; it’s all the more poignant that this weekend happens to be a Labor Day weekend ๐Ÿ’ช And speaking of Labor Day, does anyone rememberย Rosie the Riveter? She is, of course,ย the cultural icon of World War IIโ€”representing the women who rolled up their sleeves and worked tirelessly in American factories and shipyardsโ€”and who rightly becameย a symbol of feminism and women’s economic power.

But I digress a bit, as the author of the eponymous blog is wont to, from time to time ๐Ÿ

A Bouquet To My Global Family ๐ŸŒน ๐ŸŒท ๐ŸŒผ ๐ŸŒบ ๐ŸŒป ๐ŸŒน

So before we dive into the guts of the essay proper, though, allow me to present a bouquetโ€”an overture with which to invite you to help out those affected by Harvey, as much as for you to immerse yourself in my take on algorithmsโ€”by way of a collage of pics that I lovingly stitched together to remind us all that we’re one global family ๐ŸŒท ๐ŸŒป ๐ŸŒน ๐ŸŒผ

Please know that the care I’ve lavished on knitting together the pics into a unified thematic whole is at least as much as I would give to assembling the quotes and passages I select for me essays in general. The theme of a united humanityโ€”helping one another out during our times of need and distressโ€”as you may well have reckoned, will be a strong undercurrent to this essay.

Raindrops (Tears?) Running Across Across The Faceโ€ฆ

Again, we have here those selfsame raindrops running across across the face of my copy of the phenomenal book The Nature of Computation (Oxford University Press) by Cristopher Moore and Stephan Mertens; look for it in the third spot in the list of my favorite algorithms books that I’ll shortly be regaling you with. Be prepared to possibly wince, because this is a decidedly opinionated take on the very best that algorithms have to offer ๐ŸŽป

A Collage (Thematic Pictures, Accompanying Legend) ๐ŸŽจ

The (two) pics below with raindrops running across their face symbolize just how bedraggled our existence can become when exposed to the elemental power of nature ๐Ÿˆ The careful reader will have noted that those (two) picsโ€”the ones with streaks of raindropsโ€”have none other than the stellar book The Nature of Computationย featured in them, center square

Legend to the quadrant collage [#1] of the pics above, starting with the pic in the top-left spot, and going clock-wise from there:

    1. The stellar book entitled The Nature of Computation has raindrops running across its face.ย 
    2. Workers in paddy fields of rice, busily earning their livelihood through physical labor.ย 
    3. Another view of The Nature of Computation, bedraggled, yet undaunted like The Brave Tin Soldier.
    4. A gutsy owl lifts and powers itself into a silent, stealthy flight of effortless grace.

And the legend to the quadrant collage [#2] of the pics above, starting with the pic in the top-left spot, and going clock-wise from there:

    1. A mechanical rendering of a Turing machine, an idealized computing device that laid the very foundational substrateโ€”both conceptual and physicalโ€”for algorithms to run on.ย 
    2. A hedge maze, an outdoor garden labyrinth in which the walls between passages are made of hedges.
    3. Wise owls, nestled in their jaunty perch, contemplating a breakthrough algorithm to solve some particularly knotty problem, or perhaps looking into blending seemingly unrelated paradigms of programming.
    4. An aerial view of another hedge mazeโ€”this one of epic proportionsโ€”glistening in the radiance of the sun’s warmth.

Next, moving to the legend to the quadrant collage [#3] of the pics above, starting with the pic in the top-left spot, and going clock-wise from there:

    1. A sea of computers, powered by algorithms, and with their genesis of course in the brilliant mind of Alan Turing.
    2. This pic of The Nature of Computation, too, has raindropsโ€”or perhaps tears of mournful grieving ably complemented by defiant resignationโ€”that rip across its face.
    3. And then there is computer chess, the two-player strategy board gameย which encompasses both hardware and software, being capable of autonomous play without human guidance
    4. Another view of The Nature of Computation, letting drops of waterย slide down its face in serene resignation.

The Uncanny Role Of Circumstances In Our Lives ๐Ÿน

Let’s now bring closure to the memorable words which I had quoted at the beginning of this essay (from Charlotte Bronte’s literary masterpiece entitled Jane Eyre). Here, I’ll quote another passage from that classic, this one reminding us of the unpredictable and uncanny role that circumstances play in our lives. The heroine of the bookโ€”Jane Eyreโ€”is engaged in a soliloquy, as she was wont to, and as we high schoolers kept discovering, much to our chagrin, way back when we were studying the prescribed book in all its undiluted glory; painfully enough, we did not have Cliffs Notesย study guides back thenโ€”life-saving study aids that they are, having rightfully earned immortality in the hearts and minds of a grateful new generation of students ๐Ÿ˜ญ

At any rate, Jane Eyre is, in this passage, sharing a primordially elemental moment in the unraveling of the plotโ€”or denouement as my English professor at the University of Houston was fond of sayingโ€”and we have the heroine telling us, in first person of course, how

I stopped: I could not trust myself to entertain, much less to express, the thought that rushed upon meโ€”that embodied itselfโ€”that, in a second, stood out a strong, solid probability. Circumstances knit themselves, fitted themselves, shot into order the chain that had been lying hitherto a formless lump of links, was drawn out straightโ€”every ring was perfect, the connection complete. I knew, by instinct, how the matter stood, before St. John had said another word: but I cannot expect the reader to have the same intuitive perception, so I must repeat his explanation (italics mine).

And finally the legend to to the quadrant collage [#4] of the pics above, starting with the pic in the top-left spot, and going clock-wise from there:

    1. Algorithms, more than anything else in the entire fabric of computer science, IMHO, evolve and thrive in the hotbed of creativity, and who better to illustrate this with than the true legend of Kekulรฉ, who saw in a dream a snake eating its own tail, and which led Kekuleโ€”upon awaking from his dreamโ€”to the monumental discovery of the benzene molecule’s structure.
    2. Yet another view of The Nature of Computation, glistening in water drops, yet determined to let them slide away as if it’s got quite the persona of the duck’s feathers.
    3. And here you have a digression: As much as symbolizing the uncannily significant role that symbols play in programmingโ€”unerringly guided as we should be, by the compass of crafting beautiful codeโ€”I’m taking this moment to honor the memory of my father, a dedicated chemical engineer who earned his training at theย University of Louisville.
    4. To round out our stroll through my kludgy collages, let’s have ourselves one last look at another picโ€”which I also took in my Harvey-affected backyardโ€”of The Nature of Computation, as bedraggled as the rest of its sibling pics, yet undeterred.
Brace yourself; we’re diving now into the essay proper, as I thank you, with gratitude, for bearing with me, because I had a story that just had to be told ๐Ÿพ

Algorithms Are The Stuff Ofโ€ฆ ๐ŸŽ

Technical Wizardry

Algorithms are the stuff of seemingly ethereal technological magic ๐ŸŽƒ Having permeated our collective consciousnessโ€”to the extent at least of having registered perceptibly in the minds of the general populationโ€”algorithms have irrevocably altered the way we live our lives. To remind us all of the centrality of algorithms to our society and culture, allow me to toss up some references here so we’re on the same page. I invite you to look up a more detailed overview elsewhere. Interestingly enough, that overview begins with the Google Search algorithmโ€”which happened to be my suggestion, just a breath away, when I had invited you to look up further details by searching online, should you, of course, wish to do so ๐Ÿฑ

Yep, the very stuff of magic. As the British science fiction writer Arthur C. Clarke famously said

Any sufficiently advanced technology is indistinguishable from magic

At any rate, should you wish to navigate to a (much) more detailed overview, elsewhere, on the stuff of algorithmic magic, you’ll find a nice commentary there onโ€”among other algorithmsโ€”these ones:

    • Google Search (There was a time not too long ago when search engines battled it out for Internet supremacy) ๐Ÿ“Œย 
    • Facebook’s News Feed (As much as we may be loathe to admit it, the Facebook News Feed is where many of us love to waste our time) โ›ฑย 
    • NSA Data Collection, Interpretation, and Encryption (We are increasingly being watched not by people, but by algorithms) ๐Ÿ”ย 
    • High Frequency Stock Trading (The financial sector has long used algorithms to predict market fluctuations, but they’re also being used in the burgeoning practice of high-frequency stock trading) ๐Ÿ“ˆย 
    • MP3 Compression (Algorithms that squeeze data are an indelible and crucial aspect of the digital world) ๐Ÿ”ฌย 
    • And the list goes on and on and…. ๐Ÿ”ญ

Indeed, as J.R.R. Tolkien memorably observed in the classic bookย The Fellowship of the Ring

The Road goes ever on and on.

Is Software Really Eating the World?

The question is: Will algorithms remain our servants, or will they overrun as like an out-of-control juggernaut? And should you need further convincing of the juggernaut that algorithms have become, I invite you to check out the superb article Why Software Is Eating the World by Marc Andreessenโ€”yep, the same guy who co-created the highly influential Mosaic Internet browser and cofounded Netscape. The article was originally published in The Wall Street Journal on August 20, 2011. Andreessen was spot on when he presciently noted that ๐Ÿ“ฃ

Todayโ€™s leading real-world retailer, Wal-Mart, uses software to power its logistics and distribution capabilities, which it has used to crush its competition. Likewise for FedEx, which is best thought of as a software network that happens to have trucks, planes and distribution hubs attached. And the success or failure of airlines today and in the future hinges on their ability to price tickets and optimize routes and yields correctlyโ€”with software.

And there is no subject in computer scienceโ€”at least from a pragmatic and practitioner’s point of viewโ€”more central than that of algorithms. My fascination with algorithms, and in particular their applicability to distributed programming, would have us travel back through the mists of time; OK, just kidding, so I’m not that old ๐Ÿ˜‚

Pitstops In Our Journey In The Land Of Algorithms ๐Ÿš‚

I will, though, be casting a glance back at my ongoing and happily endless journey through the landscape of algorithms. As I do so, I’ll be taking an opinionated look at the following books, in turn. With that, I present to you the books which have proved most helpful to me in grokking algorithms:

  1. Algorithms 4th Edition (Addison-Wesley) by Robert Sedgewick and Kevin Wayne ๐Ÿ†
  2. Data Structures and Algorithms in Java 6th Edition (Wiley) by Michael T. Goodrich, Roberto Tamassia, Michael H. Goldwasser ๐Ÿ””
  3. The Nature of Computation (Oxford University Press) by Cristopher Moore and Stephan Mertens ๐Ÿ”ฆ
  4. Essential Algorithms: A Practical Approach to Computer Algorithms (Wiley) by Rod Stephens ๐Ÿ“ซ
  5. Algorithms to Live By: The Computer Science of Human Decisions (Henry Holt and Co.) by Brian Christian and Tom Griffiths ๐Ÿ”

For those impatiently trying to tell me, Hey Akram, give us the algorithms, and please make it snappy, I will oblige, and herewith submit an opinionated look at the outstanding books in the list above ๐Ÿ“˜ You have to remember, though, that I might at times be compelled to digressโ€”may I gently remind the reader that this eponymous blog boldly proclaims the bynameย Programming Digressions somewhere in its title. Rest assured, thought, that those digressions won’t appear until after we’re done taking an up-close-and-personal look at these outstanding books ๐Ÿ˜‡

I mean, we got to have ourselves some fun along the ride, don’t we? ๐ŸŽˆ

Oh, and the careful reader will have noted the “(Part 1)”, um, part in the title of this essay: “Best Algorithms Books (Part 1)“. So it is that I plan on writing at least one more essay to do some justice to the finest of the abundant resources available on the subject of algorithms ๐Ÿ’

1. Algorithms 4th Edition (Addison-Wesley) by Robert Sedgewick and Kevin Wayne ๐Ÿ†

If you’re looking to read only a single algorithms book, look no farther than the extraordinarily well done volume that is simply entitledย Algorithmsย 4th Edition (Addison-Wesley) by Robert Sedgewick and Kevin Wayne. I’ve gone through a ton of book on the subject of algorithms, over many years, and this gem has emerged as the clear winner ๐Ÿ“ฃ

Algorithms by Sedgewick and Wayne has so much that is so good, that I’ll need to break down my assessment into easily digestible chunks ๐Ÿ”

This book simply can’t be beat for comprehensiveness. Yes, there is CLRS out thereโ€”it’s hoary with age and its dryness is right up there with a desiccated Saharan sand dune on an unbearably hot dayโ€”but you need to have the gumption of an archeologist to trudge across the pages ofย CLRSย ๐Ÿซ I tossed the acronym (CLRS) out there blithely, but I might as well introduce it for newcomers to the field of algorithms: It just so happens thatย CLRS are the initials of this formidable book’s authors (Cormen, Leiserson, Rivest, and Stein). The book is entitled Introduction to Algorithms 3rd Edition (MIT Press)ย by Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, and Clifford Stein. It does make for a good research book, for finding citations and that sort of thingโ€”for that it’s probably unbeatableโ€”since it happens to be replete, to overflowing, with copious cross-references to the vast literature on algorithms. Given its intimidating style, though, I’m not convinced that it’s a good introductory book on the subject.

But I hear you quizzically ask, Aren’t we supposed to be talking about theย Algorithmsย book by Sedgewick and Wayne? And right you are, except that I had to get CLRSโ€”along with all its desiccated Saharan sand dune heftโ€”off of my chest. So there ๐Ÿ˜‡

In my mind, Algorithms is to the world of algorithms what the Gang Of Four (GoF) book is to the world of software design patterns. Yes, the former is that good, and let me tell you why. For starters, this is an incredibly polished work, much in the tradition of the highly refined GoF book; I’ll boldly venture out to say thatย Algorithmsย has set an even higher standard for what a technical bookโ€”or non-technical book for that matterโ€”can offer to enhance the reading experience in an endearing and pleasing way. In a similar vein, you may wish to also take a peek at another awesome and incredibly well done book entitled Refactoring to Patterns (Addison-Wesley) by Joshua Kerievsky.

As you’ll come to appreciate,ย Algorithmsย is lavishly illustrated, replete with (Java) code that is pleasingly annotated at just the right level of granularity. I’ve seen other books kill trees in the process of regurgitating code snippets that leave me hanging; not this book, no sir! The more time I’ve spent with Algorithms, the more I’ve come to appreciate it as a trusted and expert personal consultantโ€”goodness, the authors seem to have anticipated just about every question that has popped into my head as I pored over this book’s pages over the span of years.

Look, I’m a computer scientist who has been practicing the fine art of programming for over two decades. Nonetheless, we all need access to solid reference books to stay fresh and mindful of the basics. Here I find comfort in the wise words ofย Edward B. Burger (Southwestern University, Georgetown/Texas) and Michael Starbird (The University of Texas at Austin) who note in their slender yet rich bookย The 5 Elements of Effective Thinking (Princeton University Press) that

Understand simple things deeply. The most fundamental ideas in any subject can be understood with ever-increasing depth…. True experts continually deepen their mastery of the basics (italics mine).

Andย Algorithmsย is a breath of fresh air; you can even read it for sheer aesthetic pleasure ๐ŸŒน

Some of you may recall Sedgewick’s Algorithms in C++. This book (Algorithmsย 4th Edition), though, uses Java and is, IMHO, a vast improvement over the old C++ book. It uses a sub-set of the Java object-orientation (OO) features, which actually makes the explanations flow more smoothly; in the process, this also tremendously helps in essentially side-stepping language complications that would surely have arisen had the authors chosen to go beyond using a sub-set of the Java OO features. And heaven forbid, you wouldn’t want an introductory book on algorithms to go past even that, and start looking into blending two seemingly unrelated paradigms (OO and FP) of programming, which has, though, a rightful and important place of its own in advanced aspects of program design ๐Ÿš

In sum, the authors ofย Algorithmsย use beautifully elegant and thoughtfully illustrative code throughout the book, preferring clarity over verboseness. All in all, pretty much all the essential goods on algorithms are in here, presented richly, denseโ€”in a good condensed wayโ€”and with great taste ๐Ÿ˜Ž

 

2. Data Structures and Algorithms in Java 6th Edition (Wiley) by Michael T. Goodrich, Roberto Tamassia, Michael H. Goldwasser ๐Ÿ””

If you’re going to read one more book on algorithms, you’ll want to make it this one:ย Data Structures and Algorithms in Java 6th Edition (Wiley) by Michael T. Goodrich, Roberto Tamassia, Michael H. Goldwasser.

For starters, the authors ofย Data Structures and Algorithms in Javaย succinctly round up the philosophyโ€”in fact the very gistโ€”of the book when they note how

The design and analysis of efficient data structures has long been recognized as a core subject in computing.ย 

Two standout chapters that I simply have to shout out are the following. Notwithstanding the stellar algorithms book that’s in the top spot, the treatment inย Data Structures and Algorithms in Javaย of a couple of crucially important, thematically-related topicsโ€”(1) Maps, Hash Tables, Skip Lists, and (2) Graph Algorithmsโ€”simply knocked my socks off. You’ll find the goods on that pair of topics in chapters 10 and 14, respectively.

Consider, too, the care with which the authors explain just about everything you’ll be interested in, at least from a pragmatic standpoint ๐Ÿณ In that spirit, check out their sparkling clear coverage of the perennially important topic of Sorting with a Priority Queue. They remind us how ๐Ÿ„
One application of priority queues is sorting, where we are given a sequence of elements that can be compared according to a total order relation, and we want to rearrange them in increasing order (or at least in nondecreasing order if there are ties).ย 

Ah, if only more writers would write with such enviable clarity and precision โœ‚ Thus, with helpful and unambiguous descriptions such as the example above,ย Data Structures and Algorithms in Javaย is replete with the very essence of what makes algorithms tick ๐Ÿ’Ž The language aestheteโ€”and pragmatistโ€”in me believes that you’ll enjoy this marvelous book. I definitely did ๐ŸŽง

3. The Nature of Computation (Oxford University Press) by Cristopher Moore and Stephan Mertens ๐Ÿ”ฆ

Here’s the deal: We programmers and technologists, too, need inspiration from time to time; inspiration isn’t for artists alone. Lest anyone’s jaw dropped at that observationโ€”saying, hey we’re a cerebral and logical bunchโ€”I will to out on a limb and say that we’re at least as much artists as logical, sentient beings, us programmers. To underscore that precise point, I’ll remind you that there’s an Artย inย Donald Knuth’s eponymous magnum opus entitled The Art of Computer Programmingย (Addison-Wesley), which is of course composed of four intense volumes ๐ŸŽ“

And then there is the advice to programmers by David Heinemeier Hanssonโ€”the creator of the popular Ruby on Rails web development frameworkโ€”who noted in his book entitled Rework (Crown Business), which he co-authored with Jason Fried that

When Inspiration Strikes, Strike Backย (in a section entitled Inspiration is Perishable)

Having made the case, I suppose, for the rightful place of inspiration, allow me to re-introduce an astonishing bookโ€”I had mentioned about it elsewhere, too, many moons agoโ€”which is nothing short of staggering in its potential of unleashing unfettered creativity: The Nature of Computation (Oxford University Press) by Cristopher Moore and Stephan Mertens.

This bookโ€”The Nature of Computationโ€”is precisely the one that I had in mind, earlier on in this essay, when I had shared with you the following thought, noting how

Algorithms, more than anything else in the entire fabric of computer science, IMHO, evolve and thrive in the hotbed of creativity, andย who better to illustrate this with than the true legend of Kekulรฉ, who saw in a dream a snake eating its own tail, and which led Kekuleโ€”upon awaking from his dreamโ€”to the monumental discovery of the benzene molecule’s structureย ๐Ÿ
Fancy that, I’m caught quoting myself in an act of self-referential circularity; this may well invite jabs about self-referential programming magic, as of course enshrined in the fabulous meta-circular evaluator ๐Ÿ˜† At any rate, I can’t do any better than what Moore and Mertens themselves have articulated in the splendid Prefaceโ€”and there is so much that is so splendid about this bookโ€”when they share the very origins ofย The Nature of Computation, telling us how
This book was born in 2005 when one of us was approached by a publisher to write a book explaining computational complexity to physicists. The tale grew in the telling, until we decidedโ€”with some hubrisโ€”to explain it to everyone, including computer scientists.
For engineers, computer scientists,ย mathematicians, physicists, and, truth be told, for creativity connoisseurs of all stripes who are looking for a refreshing tour of the amazing intellectual fabric that underlies our universe, I can’t think of a better recommendation than a leisurelyโ€”or intensely studious and tacticalโ€”dive into the lushly cavernous pages ofย The Nature of Computationย ๐Ÿƒ
Moore and Mertens have obviouslyย lavished great care onย knitting together some awesome themes of computation (think algorithms) into a unified thematic whole; I can only aspire to lavishing such careย when I set about assembling the quotes and passagesย for these essays that I write for you โ›„ Consider, for example, these two delightful quotes which the authors use to great effect. Thus, they lead offย Chapter 3: Insights and Algorithms with thisย enchanting quote fromโ€”yes, none other than Donald Knuthโ€”whose magnum opus entitledย The Art of Computer Programming I had mentioned just a breath away. They quote him as opining how
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
Then, and in fact earlier still inย The Nature of Computation, inย a sub-section ofย theย Prefaceย that’s entitledย How to read this book, theyย naughtily let us in on the starling secret that ๐Ÿ•
Outside a dog a book is a manโ€™s best friend. Inside a dog itโ€™s too dark to read
~ Groucho Marx (italics mine)

Placing a marker here, as I need to revisit another peachy book by the source of the first quote aboveโ€”Scott Aaronson (MIT)โ€”which is entitled Quantum Computing since Democritus . Oh, and the money I spent on buying a copy ofย The Nature of Computationโ€”and this was ages ago, or so it seems anywayโ€”is some of the best investment I’ve ever made. Period. Expect to be repaid at an exponentially compounded rate ๐Ÿš€

4. Essential Algorithms: A Practical Approach to Computer Algorithms (Wiley) by Rod Stephens ๐Ÿ“ซ

Next up we have an eminently user friendly book on algorithms entitledย Essential Algorithms: A Practical Approach to Computer Algorithms (Wiley) by Rod Stephens. It’s written in a pleasant and thoughtful tone, with the author neither talking down to the reader nor dumbing down the material in the least. The balance thus achieved, plus the blending of the granularity level,ย really hit the sweet spot for me ๐Ÿฏ, reminding me (albeit in a tangential way) of the following quote, from an essay elsewhere, where I was citing someone as saying that

Scala provides the tools needed to blend the object-oriented and functional programming worlds. Scala is at its best when these two evenly share a codebase. The biggest danger to misusing Scala is to ignore its object orientation or its functional programming. But combining the two is the sweet spot that the language was designed to fulfill (italics mine).

Oh, and check out the author’s endearingly smart introduction to how he came upon making the field of algorithms his own. When you get yourself a copy of this, you’ll be regaled with how ๐Ÿ˜‚

Rod Stephens started out as a mathematician, but while studying at MIT, he discovered how much fun algorithms are. He took every algorithms course MIT offered and has been writing complex algorithms ever since. During his career, Rod has worked on an eclectic assortment of applications in such fields as telephone switching, billing, repair dispatching, tax processing, wastewater treatment, concert ticket sales, cartography, and training for professional football players.

Stephens aptly reminds us of the vitality and centrality of algorithms by observing that ๐Ÿ”ง๐Ÿ”จ๐Ÿ”ฉ

Studying algorithms lets you build a useful toolkit of methods for solving specific problems. It lets you understand which algorithms are most effective under different circumstances so that you can pick the one best suited for a particular program.ย 

Last, but certainly not the least, I invite you to note a crucial point that Stephens make in an introductory section entitled Who This Book Is For. This will let you decide whetherย Essential Algorithms: A Practical Approach to Computer Algorithmsย is truly the right algorithms book for you.

Should you find yourself fit any part of the description above, all I can say is: Go out and grab this book; you won’t regret it; I certainly didn’t ๐Ÿ™‡

5. Algorithms to Live By: The Computer Science of Human Decisions (Henry Holt and Co.) by Brian Christian and Tom Griffiths ๐Ÿ”

Okay, so the last algorithms book we’ll be looking at today won’t actually teach you the ins and outs of algorithms in any details; in fact, not at all, at least from the implementation perspective. But I includeย Algorithms to Live By: The Computer Science of Human Decisions (Henry Holt and Co.) by by Brian Christian and Tom Griffiths in this list because it deserves a wide readership among those wishing to truly grok algorithms.

Algorithms to Live Byย will help you situate algorithms in their applicability to our personal world, and indeed to the business world as well. Dare I say, it will help answer the question that I had posed at the outset: Will algorithms remain our servants, or will they overrun as like an out-of-control juggernaut?

In the same breathโ€”and there I had mentioned in passing the evocatively named article Why Software Is Eating the World by Marc Andreessenโ€”I invite you again to hold on to the thought of finally deciphering the stuff of algorithmic magic. This book will tremendously aid you in grokking the bottomline of this precise area ๐Ÿ’ฐ

There is a lot going on in this excellent book, far more than I can do justice to at this juncture. Suffice it to say that I’m becoming increasingly and acutely aware of a startling phraseโ€”at least that’s how the phrase grabbed me on my first encounter with itโ€”that “Real Artists Ship”. There, in his bestseller entitled Linchpin: Are You Indispensable? (p.101), Seth Godinย was reminding us of the importance that shipping a product must occupy in our collective consciousness ๐Ÿšš

So it is that I will now exit, but not before an admittedly flamboyant flourish that harkens back to the 1937 Disney classic, Snow White and the Seven Dwarfs, in which the Evil Queen utters the famous line that I’m here taking the liberty of wildly paraphrasingโ€”with a nod to Godin’s moniker that “Real Artists Ship“โ€”by intoning

Magic mirror, on the wallโ€”which one is the fastest shipping method of them all?

๐Ÿš‚ ๐Ÿšƒ ๐Ÿšš ๐Ÿšข ๐Ÿš…

In the endโ€”and much as I hinted at, at the outsetโ€”I invite your comments. Much more importantly, please, do please consider helpingย our fellow Texans affected by the fury of Hurricane Harvey. Iย dedicate this essay, once again, to you,ย fellow Texans,ย as we go about rebuilding our homes in the Lone Star Stateย ๐Ÿ‡บ๐Ÿ‡ธ๏ธย Here’s how you can help those affected by Harveyย ๐ŸŽฏ

BTW, and I’ll mention this as a friendly reminderโ€”your comments are welcomed, as alwaysโ€”that having read my brief take each on a handful of the finest algorithms books…

  • Did you find that your experience of reading these books was perhapsย different?
  • Were there other qualities, perhaps,ย that I did not cover, and which happen to be the ones that you found the more helpfulโ€”in these or other booksโ€”as you mastered algorithms?
  • Did I leave out any of your favoriteย algorithmsย books?!
  • I’ve covered only aย tinyย fraction of the algorithmsย books that I’ve read, necessarily limited by the time availableโ€”stay tuned for future installments of this essay

I trust that these brief vignettes will help you in some small way along your journey to grokking algorithms ๐Ÿšฃ

 

196 comments

  1. Itโ€™s hard to come by well-informed people on this topic,
    but you sound like you know what youโ€™re talking about!
    Thanks

  2. I'll right away take hold of your rss as I can't find your e-mail subscription link or newsletter service.
    Do you have any? Please allow me know so that I may just subscribe.
    Thanks.

  3. You are so cool! I do not think I've read anything like this before.

    So wonderful to find someone with genuine thoughts on this subject.
    Seriously.. many thanks for starting this up.
    This web site is one thing that is required on the internet, someone with some originality!

  4. Greetings! Very useful advice within this article! It is the little changes
    that produce the largest changes. Many thanks for sharing!

  5. After looking over a handful of the articles on your blog,
    I seriously appreciate your technique of writing a blog.
    I saved as a favorite it to my bookmark website list and will be
    checking back in the near future. Take a look at my website too and let me know your opinion.

  6. There is definately a lot to learn about this issue.
    I really like all the points you've made.

  7. Greetings! Very helpful advice in this particular article!

    It's the little changes that make the biggest changes. Thanks a lot for sharing!

  8. Hello there! This blog post couldnโ€™t be written any better!
    Looking at this post reminds me of my previous roommate!
    He continually kept talking about this. I'll forward this article to him.
    Pretty sure he will have a great read. Thanks for sharing!

  9. Hello! I just would like to give you a huge thumbs up for the great info
    you have right here on this post. I am returning to your blog for more soon.

  10. This blog was… how do I say it? Relevant!!

    Finally I have found something which helped me. Thank you!

  11. Iโ€™m impressed, I have to admit. Seldom do I encounter a blog thatโ€™s both equally
    educative and engaging, and without a doubt, you've hit the nail on the head.

    The problem is something which not enough men and women are speaking intelligently about.
    I am very happy I came across this during my search for something relating to this.

  12. It is just the process of making specific search phrases, that are relevant to your website visible high up in the search engine rankings.
    By using the data from Google Adwords, SEO company London experts can match keywords
    that they want to target and are specific. This means that all of the content that
    your users can see, including buttons, menus and clickable links will be index-able.

  13. I am regular reader, how are you everybody? This piece of writing posted at this site is in fact good.

  14. Greetings! Very useful advice within this post! It is the little changes that produce the largest changes.

    Thanks a lot for sharing!

  15. That is a great tip especially to those fresh to the
    blogosphere. Short but very precise infoโ€ฆ Many thanks for sharing this one.
    A must read post!

  16. After I originally left a comment I seem to have clicked on the -Notify me when new comments are added- checkbox and from now on every time
    a comment is added I receive four emails with the exact same comment.

    Perhaps there is an easy method you can remove me from that service?
    Thanks!

  17. It is just the process of making specific search phrases,
    that are relevant to your website visible high up in the
    search engine rankings. Typically, it's good practice to maintain about a 5% usage for your keywords or phrases.
    Taking a look at other company's websites within a particular niche field can clue you in to
    what's being actively searched for, and what's not.

  18. Everything is very open with a precise clarification of the challenges.
    It was definitely informative. Your website is useful.
    Many thanks for sharing!

  19. Hi, I do think your website might be having browser compatibility problems.
    Whenever I look at your blog in Safari, it looks fine but when opening in Internet Explorer,
    it has some overlapping issues. I merely wanted to provide you with a
    quick heads up! Besides that, wonderful blog!

  20. A motivating discussion is worth comment. There's no doubt that that you ought
    to publish more on this topic, it may not be a taboo subject
    but usually people don't speak about such subjects. To the next!
    Many thanks!!

  21. Spot on with this write-up, I absolutely believe this site needs a lot more attention.
    Iโ€™ll probably be back again to read more, thanks for the info!

  22. So sites with excellent quality content become valuable to search engines.
    They would try to make your site famous through
    social networking sites like my space, Facebook, Twitter, Digo, Digg, Delicious, etc as a
    part of their SEO services London. But if you are not,
    then you have to create a distinct identity for
    your business.

  23. Iโ€™m impressed, I must say. Seldom do I encounter a blog thatโ€™s both equally
    educative and entertaining, and let me tell you, you've hit the nail on the head.
    The problem is something that not enough folks are speaking intelligently about.
    Now i'm very happy that I found this during my search for something relating to this.

  24. Hello there, I think your website could be having browser compatibility issues.
    When I look at your web site in Safari, it looks fine but
    when opening in I.E., it's got some overlapping issues.
    I simply wanted to give you a quick heads up! Besides that, fantastic site!

  25. Everything is very open with a precise description of
    the challenges. It was really informative. Your site
    is very helpful. Thanks for sharing!

  26. Oh my goodness! Incredible article dude! Thank you, However I
    am encountering troubles with your RSS. I donโ€™t know why I can't join it.
    Is there anyone else having identical RSS issues?
    Anyone that knows the answer can you kindly respond?
    Thanks!!

  27. When I originally commented I appear to have clicked on the -Notify
    me when new comments are added- checkbox and from
    now on whenever a comment is added I get 4 emails with the exact same comment.
    There has to be a means you are able to remove me from that
    service? Cheers!

  28. After I initially commented I appear to have clicked on the
    -Notify me when new comments are added- checkbox and from now on every time a comment is added
    I get 4 emails with the exact same comment. There has to
    be a means you are able to remove me from that service?
    Thanks a lot!

  29. Itโ€™s hard to find knowledgeable people for this topic, however, you sound like you
    know what youโ€™re talking about! Thanks

  30. I'd like to thank you for the efforts you have put in writing this blog.
    I am hoping to check out the same high-grade blog posts by you in the future as well.
    In truth, your creative writing abilities has motivated me to get my own, personal website now ๐Ÿ˜‰

  31. This is the right site for anyone who really wants to find out about this topic.
    You understand so much its almost tough to argue
    with you (not that I actually will need toโ€ฆHaHa).
    You definitely put a brand new spin on a topic that has been discussed for ages.
    Great stuff, just excellent!

  32. Good site you've got here.. Itโ€™s hard to find quality writing like yours
    these days. I honestly appreciate individuals like you!
    Take care!!

  33. Wonderful post! We will be linking to this particularly great
    article on our website. Keep up the great writing.

  34. Iโ€™m amazed, I must say. Seldom do I encounter a blog thatโ€™s both equally
    educative and interesting, and without a doubt, you've hit the nail on the head.
    The problem is an issue that too few folks
    are speaking intelligently about. I am very happy that I found this in my search
    for something concerning this.

  35. Oh my goodness! Awesome article dude! Thanks, However I am going through troubles with your RSS.
    I donโ€™t know why I am unable to subscribe to it.
    Is there anybody getting identical RSS issues? Anyone that knows the solution will you kindly respond?

    Thanks!!

  36. This is a very good tip especially to those new to the blogosphere.

    Brief but very precise infoโ€ฆ Thank you for sharing this one.
    A must read post!

  37. This excellent website really has all of the info I needed about this subject and didnโ€™t know who to ask.

  38. This is the perfect blog for anybody who really wants to understand this topic.
    You understand so much its almost tough to argue with you (not that I actually will need toโ€ฆHaHa).

    You certainly put a fresh spin on a topic which has been discussed for a long time.
    Great stuff, just excellent!

  39. After checking out a number of the blog posts on your website, I truly like your way of
    writing a blog. I saved as a favorite it to my bookmark webpage
    list and will be checking back in the near future. Please check out my web site too and tell me how you
    feel.

  40. Oh my goodness! Incredible article dude! Many thanks, However I am
    having issues with your RSS. I donโ€™t know the reason why I am unable
    to join it. Is there anybody getting identical RSS issues?
    Anyone that knows the answer will you kindly respond?
    Thanks!!

  41. Can I simply just say what a comfort to uncover someone that genuinely understands what they're discussing over
    the internet. You definitely understand how to bring
    an issue to light and make it important. More and more people ought to
    look at this and understand this side of the story. I was surprised that you're
    not more popular given that you most certainly possess the gift.

Your Comment Here!

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