Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
Ask HN: What is your favorite data structures book?
8 points by jbranchaud on Nov 12, 2014 | hide | past | favorite | 11 comments
What is your favorite (preferably language-agnostic) data structures book?


Old school would be Wirth; he's done several data structures books. That's where a lot of the fundamentals got laid down.

Hard core is Knuths' "The Art of Computer Programming", but tackling it is somewhat akin to asking how to tell time and being shown, in exquisite (or excruciating) detail how to build a clock.

I think I learned the most/fastest from Sedgewick (Intro to the Analysis or Algorithms, Algorithms in C (or C++ or Java)). His style worked for me; YMMV. The book Rivest, Cormen, et. al wrote (Intro to Algorithms) is also very good, as is the Aho algorithms book.


For a different but useful approach, one book I liked is:

How to Solve it by Computer - by R. G. Dromey, a lecturer or professor at a university in Australia, IIRC:

http://en.wikipedia.org/wiki/How_to_Solve_it_by_Computer

Acording to Wikipedia (and also mentioned in his book, IIRC), Dromey was inspired by the techniques of the book "How to Solve it" by George Polya, a famous mathematician, and applied some of his techniques to programming with data structures and algorithms.

http://en.wikipedia.org/wiki/George_P%C3%B3lya

But he doesn't just translate the Polya book from the domain of mathematics to software; he builds up the solution to each problem posed in his book, in an incremental way, sort of as he discovers or invents them, sharing the reasoning behind the decisions as he goes along. I found this to be one of the good features of the book.

I had the good fortune to read Polya's book too, early on in college - I think it was rare even then. It had gems like "solve the more general problem" (if there is one), which will automatically solve the specific problem you are working on, as just another special case, and some times the solution to the more general problem may turn out to be simpler than the solution to the specific problem. But the book has much more than that, in terms of problem-solving advice.


Interesting, I just looked up the Polya book here:

http://en.wikipedia.org/wiki/George_P%C3%B3lya

and found this:

"In How to Solve It, Pólya provides general heuristics for solving a gamut of problems, including both mathematical and non-mathematical problems. The book includes advice for teaching students of mathematics and a mini-encyclopedia of heuristic terms. It was translated into several languages and has sold over a million copies. Russian physicist Zhores I. Alfyorov, (Nobel laureate in 2000) praised it, noting that he was a fan. The book is still used in mathematical education. Douglas Lenat's Automated Mathematician and Eurisko artificial intelligence programs were inspired by Pólya's work."


I like The Algorithm Design Manual[0] by Steve Skiena. He actually discovered that students fared better with real code (written in C) as opposed to pseudo-code.

0 - http://www.algorist.com/


This book is great, but could be overwhelming depending on how much you exposure you have to similar material. That said, I wouldn't hesitate to recommend it. I particularly enjoyed the war stories.


This is one of my favourite technical books. Great combination of explaining the fundamentals and also examining specific cases in depth.



I would recommend "Purely Functional Data Structures" by Chris Okasaki. It's not only for functional programmers - there is also a bunch of structures useful in imperative languages.


Not a book but Wikipedia is awesome. Just start with a subject and branch away. No book covers the breadth of Wikipedia. Of course a book might be better for depth.


You invite the HN crowd to Wikipedia and the programming language articles will wind up more controversial and disputed than the politicians' biographies.


My favorite would be "Algorithm Design" by Jon Kleinberg and Eva Tardos. In my opinion, it is extremely well written and easy to follow.




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

Search: