Hacker News new | past | comments | ask | show | jobs | submit login

I never hear anybody mentioning him but Jeff Erickson's 'Algorithms' textbook [1] has some of the most lucid explanations I've come across. CLRS is often times impenetrable and for the times I didn't like its explanation of something I turned to Jeff Erickson's book and it hasn't failed me yet. I'd urge anybody trying to solidify algorithms and data structures to take a look at it.

[1] http://jeffe.cs.illinois.edu/teaching/algorithms/

Thanks for the shout-out! If you can't remember the long URL, http://algorithms.wtf also works. Please send me bug reports!

Looks great, thanks a lot!

While causally browsing I noted the following in the 8-queens backtracking example:

"The following recursive algorithm, essentially due to Gauss (who called it “methodical groping”), ..."

Hilarious, especially given the current situation. I'd like to know what his original German term was.

Oh this is a fun rabbit hole to go down:

Gauss indeed wrote "methodisches tatonniren"[1], the latter of which is not a common German word, nor does it suggest grouping. I believe it to be an expression used at the time which was borrowed from French "tâtonner", which means "fumble", to describe a step-by-step process, "approaching" a solution. The closest I get in modern German is "herantasten", which in turn does not have an elegant English translation; you will have to take its elements "heran" (onto) and "tasten" (touch/feel/grope) individually to judge how close it is to fumble.

So, methodical groping is not as far off as you might have thought!

[1] https://books.google.com/books?id=3jEDAAAAQAAJ&pg=RA1-PA106&... This may be a typo—the regular verb form would be "tatonnieren"—then again a lot of German spelling has changed since the time of those letters.

The word "tâtonner" should be the same as Italian "procedere (proceed) a tastoni", since usually the circumflex accent in French correspond to an "s" in Italian.

The meaning is "feel your way"---proceed carefully and at every step feel what is around you, as if you were walking on complete darkness.

>proceed carefully and at every step feel what is around you, as if you were walking on complete darkness.

this would be a fitting translation of the german word "herantasten", which has nothing to do with groping btw

Yup, "groping around" is not at all the same as "groping"!!!

I just skimmed over skiplist in point 10 of your book. The concept and definition of skiplist is easy to grok and it is well explained but in point 10 there is not any information as to when should I use a skiplist, what kind of problem a skiplist is a good tool to use. I have bookmarked your page, it seems to be a useful resource if it is complemented with a comparison and use case for all these data structures.

A skiplist is a good candidate for problems where you are considering some kind of self-balancing tree. I find a skiplist to be the simpler structure in those cases.

I personally used it in an observable collection library, where I needed efficient indexed insert and the ability to compute the index of a node.


Given a directed graph with on each arc a maximum flow and a cost per unit of flow, how to find the least cost flows for a given total flow? That is linear programming. The simplex algorithm takes on a special form, and a simplex basic solution corresponds to a spanning tree. A simplex pivot is adding an arc to the tree to yield a circuit, and getting the cost of sending a unit of flow around the circuit evaluates that new arc. Etc.

W. Cunningham defined a strongly feasible basic solution which avoids cycling.

IIRC, D. Bertsekas has a good (polynomial) algorithm for that problem.

I didn't see such mentioned in your table of contents.

On my 14" screen, your PDF files would be much easier to read if the maximum number of characters per line was about 50.

Thanks. Easy to remember domain :)

TIL there is a .wtf TLD.

There's also a .study TLD. And algorithms.study is available!

Hi, I looked at some of your lecture videos which also look great. You have a wonderful teaching style. Is there any possibility of these lecture videos getting on youtube? Watching is a little choppy. Cheers.

This is awesome. I'm loving the model of computation Notes

Thanks for making the resources free.

What resource bro...

For beginners, I've always thought Aho, Hopcroft and Ullman's Data Structures & Algorithms is a bit under-rated [1]. It's short, mathematically inclined and contains very clear Pascal pseudo-code.

[1] https://www.amazon.com/dp/0201000237

(edit) Their book, The Design and Analysis of Computer Algorithms, impressed me greatly for the clarity of the thinking and conciseness of explanation, not just compared to other algorithm books, but against anything I've read in any subject.

Jeff is also a great professor. If you ever get the chance to take a course with him, do it. You won't regret it. I had him for both 173 and 373 back in the day, and credit his teaching style for the immense amount of material I picked up.

Also, this: http://jeffe.cs.illinois.edu/teaching/pikachu.html

I'm currently taking 374 (the new 373). Unfortunately Jeff isn't leading my lectures, but the couple times he's subbed in were excellent. Really looking forward to taking 473 with Jeff next semester!

I personally favor TAOCP much more than CLRS. TAOCP reads so much fun. The historical accounting is so appealing.

"Algorithm design manual" is another my favorite.

I never find CLRS appealing to read other than being used as a textbook in a formal class.

It is strange that neither Google nor Amazon can find this book:


According to the author, it isn't a textbook: "Am I writing a textbook? No. All textbooks suck."

So why can't Google find it? If it is an article, an essay or a series of lectures , Google should find it.

It's only available as an ebook.

I found it trivially at


I had no idea about this. This looks fantastic! Theres a whole chapter on "advanced dynamic programming."!

I know people like to debate the merits of "thee algorithm book" be it CLRS or Desgupta etc. but I find that having many such books is extremely beneficial - occasionally one author will articulate a particular insight that will resonate for me in such a way that makes me believe I maybe hadn't completely internalized that thing before, despite having read similar content from other sources on many occasions and believing I had.

Anyway this looks like a great such addition to my personal canon. Thanks for sharing!

is there a print version?

No but I printed this PDF (http://jeffe.cs.illinois.edu/teaching/algorithms/everything....). 1250 pages. Not sure about the legality of it.

Totally legal! (Just don't sell it for profit.)

Why don't you sell it for profit? ;-) Lulu or Kindle if you don't want to deal with editors.


As a kindle user I'd love to see a kindle edition.

I would happily pay for both a kindle and print version.

Fantastic resource. Do you have nay more like it? I'm always hungry for stuff like this. :)

> Not sure about the legality of it.

Says on the title page: Creative Commons!

"Attribution-NonCommercial-ShareAlike 4.0 International"


Suppose we want to prove that every string is perfectly cromulent. I love it already.

Great link, thanks for sharing.

Applications are open for YC Summer 2019

Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | Legal | Apply to YC | Contact