Algorithm Design

Category: Programming
Author: Jon Kleinberg, Éva Tardos
All Hacker News 12
This Month Reddit 3


by anuragbiyani   2021-11-17
The good thing about Algorithm Design & Analysis as a topic is that there is no lack of great resources to learn from! And even better, a large portion of them are freely available online (in forms of lecture notes, or entire books, video lectures, programming challenges with online judging, etc).

In addition to what others have mentioned, here are some example resources you might prefer for a beginner-intermediate level intro:

1. (free online) Algorithms by Dasgupta, Papadimitriou, and Vazirani

4. Another one specifically for more applied view (esp., how they are used in programming contests such as ICPC) is Skiena & Revilla's "Programming Challenges" book ( Note that this is different than Skiena's other popular book (Algorithm Design manual) which is also pretty good and has a "war story" based perspective to design of algorithms.

5. There are also several resources where lecture notes from university Algorithm & DS courses are very useful. Here is an example from my previous Professor, David Kempe:

6. Several programming competition specific tutorials can be found on Topcoder: (individual SRM archives are also good place to try problems first hand and then learn from other's approach). In general, if you search for ACM-ICPC resources, you will find a lot more targeted information/problems which will apply not only for leetcode, but also for detailed understanding of the theory too.

by glacialOwl   2019-07-21

This is one of the best Algorithms books. Additionally, another good one is this:

by flaming_sousa   2019-07-21

Algorithms - The most common text book is CLRS, but I was taught with Algorithm Design. Either are great books. To be functional, at least cover

  • Greedy Algorithms
  • Divide and Conquer
  • Dynamic Programming
  • Understanding NP Completeness

Design Patterns - Probably Design Patterns is the best place to start. I'd recommend caution with studying them closely - just be literate in the basics, and understand the problems they are trying to solve.

by roundsquare   2017-08-19
If you are really interested in the math involved you can look at any algorithms book. I used this one in my undergrad:

Its a good introduction, but it will require you to be decent at math and know how to do proofs.

On the other hand, if you are interested in how programs can express things, then maybe you want to learn about some CS theory. Specifically, some lambda calculus would be good to learn, but I don't have any good suggestions.

Note: All of these will be easier to read if you are pretty good at programming, so I'd say follow at least the first piece of advise above.

by Groxx   2017-08-19
Ah, apologies:

  Algorithm Design
  by Jon Kleinberg & Éva Tardos
  ISBN: 978-0-321-29535-8
Or an Amazon link:
by amichail   2017-08-19
Some books to read: