# Top products from r/algorithms

We found 45 product mentions on r/algorithms. We ranked the 35 resulting products by number of redditors who mentioned them. Here are the top 20.

### 1. Introduction to Algorithms, 3rd Edition (The MIT Press)

Sentiment score: 3

Number of reviews: 8

Hard Cover

### 2. The Algorithm Design Manual

Sentiment score: 5

Number of reviews: 7

More and Improved Homework ProblemsSelf-Motivating Exam DesignTake-Home LessonsLinks to Programming Challenge ProblemsMore Code, Less Pseudo-code

### 3. Grokking Algorithms: An illustrated guide for programmers and other curious people

Sentiment score: 2

Number of reviews: 3

Manning Publications

### 4. The Art of Computer Programming, Volumes 1-4A Boxed Set

Sentiment score: 0

Number of reviews: 3

Volume 1: Fundamental AlgorithmsVolume 2: Seminumerical AlgorithmsVolume 3: Sorting and SearchingVolume 4A: Combinatorial Algorithms

### 5. Algorithms (4th Edition)

Sentiment score: 2

Number of reviews: 3

Addison-Wesley Professional

### 6. Algorithm Design

Sentiment score: 3

Number of reviews: 3

Used Book in Good Condition

### 7. Cracking the Coding Interview: 189 Programming Questions and Solutions

Sentiment score: 1

Number of reviews: 2

### 10. Algorithms Unlocked (The MIT Press)

Sentiment score: 1

Number of reviews: 1

Mit Press

### 11. Machine Learning: A Probabilistic Perspective (Adaptive Computation and Machine Learning series)

Sentiment score: 0

Number of reviews: 1

Mit Press

### 12. Concrete Mathematics: A Foundation for Computer Science (2nd Edition)

Sentiment score: 0

Number of reviews: 1

### 14. Programming Challenges: The Programming Contest Training Manual (Texts in Computer Science)

Sentiment score: 1

Number of reviews: 1

### 15. Optimization Modeling with Spreadsheets

Sentiment score: 1

Number of reviews: 1

### 16. Algorithm Design: Foundations, Analysis, and Internet Examples

Sentiment score: -1

Number of reviews: 1

### 17. Structured Programming (A.P.I.C. studies in data processing, no. 8)

Sentiment score: 1

Number of reviews: 1

### 18. Combinatorial Optimization: Algorithms and Complexity (Dover Books on Computer Science)

Sentiment score: 0

Number of reviews: 1

Dover Publications

You can come back to it later, yes. Why though? You'll need them "now", won't you? I mean, you're going through the book (Skiena's) now, not later. Isn't that right? If you learn it now, you will go through the book better equiped to get its message.

And, besides, it isn't

thatdifficult. It's not trivial by any means. You can try some alternative resources.I'm not sure why you're interested in deferring this to later. Personally, I believe having seen how proofs of correctness are somewhat done is way more worth it than seeing the algorithms themselves, although some algorithms are pretty educational (like quicksort and also binary search for example). Because even though you won't prove programs correct in practice, knowing how a proof might be devised helps you in writing programs that are easy to prove, and those

haveto be simple. The whole idea of structured programming that Dijkstra had in mind was to help with this. It's way more intuitive to reason about "while (i < 10) { <do something> }" than a bunch of goto's. In the while-loop case, you can clearly see that upon termination, i >= 10 is true for example. And you can also clearly derive some properties about the body of the loop inductively by analyzing previous iterations.A lot of good readable code techniques can be put in terms of easy to prove code. Like small functions that do very little, are very cohesive, and work collaboratively. Same for objects. It's way easier to prove correct a bunch of small pieces that work together by some simple means of combination, than a huge big thing.

Good luck.

Online material:I don't know about any high-quality online-run courses, but with GAs (and EC in general) you'll get quite far with searching Google for "evolutionary algorithms filetype:pdf", or something similar. In addition to freestanding texts, there are many Unis that have courses on biologically inspired AI, with high-quality lecture notes available online.Where to begin:A standard toy problem is "one max" (have your EA find the bitstring of all ones).You can start with a pretty simple program, confirming that your EA can solve the problem, and then expand it into a flexible solution supporting multiple selection mechanisms, various representations (binary, real-valued, permutation-based, ...), development schemes, and nice visualizations. EA systems lend themselves quite well to OO design, although other approaches are possible.

Recommended dead trees:An excellent book on EC is de Jong's Evolutionary Computation: A Unified Approach. While quite short, this book, written by one of the absolute experts in the field, is very pedagogical, broad-scoped, and up to date. One problem, though, is that it it's somewhat short in its treatment of GP. If you're interested in GP as well (and who isn't?), you could get this little book which costs about 1 nickle.Good luck with exploring Evolutionary Computing! It's an amazing subject. You can begin with a 20-line program that you can explain to a kid, and later find yourself reading grad-level mathematics exploring intricacies of some aspect of evolution. Just be prepared for some weird looks when you finally find yourself printing papers on "Incest prevention" in the school library.

Edit: Spelling.

Start here. It's a good book, and it's focused on algorithms and not so much on data structures.

If you want more programming emphasis then try Goodrich's Algorithm Design.

Also check topcoder.com articles once in awhile. Sometimes you'll find interesting discussion on algorithms.

But this will only give you an overview of algorithms; once you're interested in a certain topic, then you can delve further. For example, I'm really interested in arbitrary precision arithmetic, and there's always interesting and different algorithms for solving multiplication of two numbers, efficient methods for calculating square roots in a multiplicative group/finite field, efficient division/modulo operators, etc. But to really experiment, you need to develop your own environment to work on these algorithms and have the data aswell.

Edit: Changed the topcoder link to reflect proper list of articles.

Project Euler is great, but I can't imagine a less efficient way to learn about "advanced algorithmic techniques". Most of the problems are concerned with brute force search, dynamic programming and "clever" ways to trim the computation trees of those two techniques on specific problems.

A better way would be to read books on general algorithms, on optimization, on AI and on machine learning. To that end, two of my favourites are

Alternatively, if you've got a specific area of interest then you might want to find a handbook for that area. For example, here's one on data structures.

As a side note, if the price tag of any of those books puts you off, take a look at Library Genesis.

I think different people have different ways to retain knowledge. Whatever motivates you.

I like to view learning as a game with multiple levels. I'd start with something easier, more practical, this will keep you motivated with faster feedback and will raise the right questions for the next level.

Start with a book of problems that isn't very formal yet, I'm thinking of the likes of Cracking the Coding Interview

Then move to some of the suggestions around The Algorithm Design Manual and Introduction to Algorithms.

At this point you may want to specialise your knowledge in a particular area of algorithms or math.

The good thing about this approach is that you see results earlier and can also start applying your knowledge quickly (even if very limited).

Along the way, as a second vertical of learning that you should pursue, you should take some online courses on algorithms or more specialised applications (biology has a lot going on now).

Have fun

Edit: try HackerRank too!

I suggest you to not waste too much time reading 15 different books on algorithms or spreading on 15 different resources (YT videos, online courses, forums, tutorials, etc.). Stick to 1 or 2

goodbooks (try Introduction to Algorithms and, if you're completely new to algorithms, and have no idea what are they and what is their role in computer science and science in general, I recommend book by same author that could make a good preparation to previous book; it's called Algorithms Unlocked ) and start applying that knowledge in the run (solving problems). Remember: don't waste time on hundreds of resources; they may be great and offer some really high quality information about topic, but you just don't have time to go through all of them. Good luck!You don't need very much mathematics at all to learn the implementations of various algorithms. Sure, many algorithms books have mathematics in them to analyze the performance of the algorithms, but if you are mostly interested in the details of the implementations of algorithms, rather than analysis of performance then there is nothing to hold you back.

The Algorithms Design Manual, by Steven Skiena would be a great starting point. http://www.amazon.com/Algorithm-Design-Manual-Steven-Skiena/dp/1848000693

Then, if and when your interest in analysis of performance increases you can move on to a more mathematically demanding book, such as Introduction to Algorithms, by Cormen et al. http://www.amazon.com/Introduction-Algorithms-Edition-Thomas-Cormen/dp/0262033844

Not either of those, but I can vouch for Algorithm Design. Really innovative practice problems, and they provide some really awesome, novel explanations for concepts.

If you have a pressing need to get a handle on DP this probably won't help. That being said, I have an MS in applied math and think the way DP is presented to anyone coming at it from a CS perspective creates a lot of the confusion.

DP is NOT a programming paradigm. It is an optimization technique originally developed to reduce the search space of high dimensional problems.

I would recommend reading the first few chapters of this book (I have no relationship to or financial stake in either the book or you clicking the link): http://athenasc.com/dpbook.html

It does a good job of explaining how to think about DP without being prescriptive which I think is the flaw with the CLRS presentation.

Id also recommend this book (again, I have no interest in this): Dynamic Programming (Dover Books on Computer Science) https://www.amazon.com/dp/0486428095/ref=cm_sw_r_cp_apa_i_UT.7CbAEDXGAM

The book gets pretty dense pretty fast but if you push through the first few chapters it will give you additional insight as to the motivation behind why this technique was developed

My algorithms class presupposed that I took linear algebra, I think. I think you'll need to be

ableto do maths, but they taught me the maths I needed to know as I went along. It depends on the course, though. Here's the book we used in class. Here's its home page, but the link seems to be broken. It should be online for free. For example, I found another copy here. Here's the PDF Also a free book on linear algebra.I loved "Algorithms in C++" by Sedgewick.

Standard recommendations will also be: "Introduction to Algorithms" by Cormen et al, and "Algorithms" by Dasgupta et al.

If you want to get introduced to the world of programming contests, I hear great things about Programming Challenges: The Programming Contest Training Manual.

The Algotitms Design Manual by Skienna helped me a lot.

I was also curious about this one.

Also, this site may help :)

I liked Algorithm Design. It's not really that more advanced but does a good job at expanding on the design and use of algorithms. It's good for bridging that gap from a theoretical course based off Cormen to real-life application of algorithms, which I think is a problem many CS students run into.

That book has reviewed excellent reviews http://www.amazon.com/Algorithm-Design-Manual-Steven-Skiena/dp/1848000693/. This is the standard text, CLR or CLRS http://www.amazon.com/Introduction-Algorithms-Thomas-H-Cormen/dp/0262033844/

What you're describing is probably what most people think of as machine learning, data science/mining, and has as much to do with computational efficiencies as it does algorithms' intrinsic behavior.

Also, What programming languages do you know?

Maybe if you look at a cheat sheet http://dlib.net/ml.html and some ML texts (Murphy, Bishop, Barber), those would help (also AIMA by Norvig/Russell)

http://www.amazon.com/review/R32N9EIEOMIPQU/ref=cm_cr_pr_perm?ie=UTF8&amp;ASIN=0262018020&amp;linkCode=&amp;nodeID=&amp;tag=

Learning JavaScript Data Structures and Algorithms - Second Edition is a really good book with clear explanations and code examples.

Grokking Algorithms is also a wonderful book especially for non-CS people and beginners. The examples are in Python but it shouldn't be a problem given your Ruby and JavaScript background.

I personally like Skiena's book

The Algorithm Design Manual

https://www.amazon.com/Algorithm-Design-Manual-Steven-Skiena/dp/1848000693

If you already studied algorithms but need a quick refresher, Algorithms in a Nutshell is good.

https://www.amazon.com/Algorithms-Nutshell-OReilly-George-Heineman/dp/059651624X/ref=sr_1_3?s=books&amp;ie=UTF8&amp;qid=1496051402&amp;sr=1-3&amp;keywords=algorithms+in+a+nutshell

The Princeton / Coursera algorithms course. It is great. You can find lectures (since the first course finished recently, and the second course is halfway done) here (you need to change the number at the very end. I think it starts at 10).

There is a book that's relatively cheap: http://www.amazon.com/Algorithms-4th-Edition-Robert-Sedgewick/dp/032157351X

And there's a booksite: http://algs4.cs.princeton.edu/home/

This course is done entirely in Java.

GLPK is a commonly used library in a number of programming languages(R, Python, etc.) and Excel has a limited ability to do these problems.

If you want to take an Excel approach, I once took a class that used this book: https://www.amazon.com/Optimization-Modeling-Spreadsheets-Kenneth-Baker/dp/0470928638

Honestly, the CLRS book has been the most helpful thing for me doing my Analysis of Algorithms class. For each example in the book, watch a video or three so you get the gist of what's going on, then step through the pseudocode example so you more intuitively understand how it works. I also tend to skip a lot of the proofs, but they are there if you need them.

Algorithms by Robert Sedgewick

Good book with the code written in Java

There’s a book called Grokkin Algorithms, which illustrates some of those concepts quickly. I also liked another book called Cracking the Code Interview.

You usually do see stuff you've never seen before when you're learning something new.

Checkout:

It's going to take some time, so be patient, don't rush yourself. Don't beat yourself up if you aren't learning as fast as you like, it's not a race.

Keep on truck'n!

Introduction to the Design and Analysis of Algorithms, by Levitin, was used at my university and none of us cared for that book and I don't recommend it.

I'm not familiar with #1, but I do recommend:

I second The Algorithm Design Manual, very good book.

I think that being proficient with algorithms consists of three skills:

And I think that The Algorithm Design Manual is excellent for this, Carmen is more comprehensive but I find it a bit to dry for my taste.

Generally after CLRS you should be ready to read TAOCP. But if you still feel insufficient, Professor Knudth has another book that you can look into to enhance the math background - Concrete Mathematics: A Foundation for Computer Science.

http://www.amazon.com/Introduction-Algorithms-Thomas-H-Cormen/dp/0262033844/ref=sr_1_1?ie=UTF8&amp;qid=1310121928&amp;sr=8-1 - known as CLRS

http://www.amazon.com/Computer-Programming-Volumes-1-4A-Boxed/dp/0321751043/ - use this, and you won't need anything for a while.

A good lightweight introduction: Programming Collective Intelligence

If you'd like a single, but more difficult, reference that covers much of the breadth of machine learning: Machine Learning: A probabiliistic Perspective

This isn't the most direct answer; /u/jpfed gave you that. The interior point methods used for these things can be fairly quick in practice.

The theory, mathematically, however is covered in Convex Optimization and Combinatorial Optimization

These are extremely common types of problems in the fields of economics and operations research.

Oh man, you thread has wrecked my day. You're question prompted me to pull down an algorithm book from a collage class I had about 8 years ago. Out fell some 3x5 cards with algorithm names and short notes summing up the algorithm. I'd written the cards to get ready for tests.

I looked through the cards, then looked at my task list for the day and it made me want to cry. I've been doing bullshit busy work so long in corporate America I've forgotten almost everything I ever learned in collage.

If you love programming, work for a small company when you leave college. If you're incompetent and only looking for a paycheck, go work for a corporation.