1
$\begingroup$

The question is pretty much explained in the title. I have the necessary discrete math background and would like to learn algorithms and data structures in the process (of coding) - so the book quoted in the title seems a good read. Since the author states clearly in the preface that the book is suitable for an advanced data structures course or a 1st year graduate course on algorithm analysis, my question seems answered already. But I guess my real question is how much material is contained in the book and how advanced it is, say compared to the following resources:

Two MIT graduate-level courses - Advanced Algorithms (http://people.csail.mit.edu/moitra/854.html) by Ankur Moitra and Advanced Data Structures (https://courses.csail.mit.edu/6.851/spring12/) by Eric Demaine.

PS: I want to become a C++ programmer (generically speaking) with a strong algorithm and data structures background. Not really sure what material I should dive into. Any suggestions on this are also very welcome!

$\endgroup$
  • 1
    $\begingroup$ This question would be quite hard to answer without access to the textbook. Also, there are several possible dimensions of comparison, such as breadth, depth, mathematical sophistication, and others. Finally, opinions might be subjective. $\endgroup$ – Yuval Filmus Jul 27 '18 at 10:53
  • $\begingroup$ "with a strong algorithm and data structures background" -- if you don't want that to be marketing speak only, you should, obviously, get a strong background. That probably means taking courses far beyond the level you'll expect to be actually applying. $\endgroup$ – Raphael Aug 26 '18 at 22:03
  • $\begingroup$ @Raphael♦ I guess I'm a little confused. What level of courses would you recommend me taking? The book described in the title and the two MIT courses aren't high level enough? It would help a lot if you could be more specific in that regard. $\endgroup$ – Wei Aug 27 '18 at 1:14
  • $\begingroup$ I honestly don't think that taking two courses and reading one book will give you a "strong background" in anything. It takes years for being involved in a matter to qualify. That is, major in algorithms, write your theses about algorithms, get a related PhD and/or an industry job with a focus on algorithms. But I don't think that's what you meant; you probably meant "how do I get more algorithms expertise than the average developer?". That is easily achieved by absorbing any amount of academic treatment of algorithms. Sadly so. $\endgroup$ – Raphael Aug 27 '18 at 6:39
  • 1
    $\begingroup$ Soft questions are not a thing on cs.SE. $\endgroup$ – Raphael Aug 27 '18 at 9:42
-1
$\begingroup$

Once I skimmed through a dozen of textbooks, looking for ones better explaining sorting and data structures (i.e. no graphs, string algos and so on).

Weiss was the best one according to my criteria. In particular, it describes more advanced techniques for hash tables, which are heart of most real use cases. Although even this book doesn't include Robin Hood hashing - learn it from Wikipedia pointers.

More info: https://www.quora.com/How-do-I-learn-data-structure-and-algorithm-in-C++-I-know-the-basics-by-myself-Can-you-suggest-any-e-books-for-me-to-use/answer/Bulat-Ziganshin

Another extremely important topic: https://www.quora.com/What-are-good-resources-to-learn-concurrent-programming-in-C++/answer/Bulat-Ziganshin

$\endgroup$
  • $\begingroup$ Thanks for your answer which consolidates my belief and determination to go through Weiss' Book first. $\endgroup$ – Wei Jul 27 '18 at 23:55
  • 1
    $\begingroup$ I don't know what the links to Quora are supposed to do here. The full content can't be accessed without logging in there, those links might die, and since the answers are yours you could just reproduce them. (But the second one is just a list, which we don't particularly like -- linked or included.) $\endgroup$ – Raphael Aug 27 '18 at 6:43

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.