Algorithms are language agnostic and any programmer worth their salt should be able to convert them to their language of choice. Unfortunately, I have come across several programmers who are

##

Another gold tip to those who think that Algorithms are Data Structures are for those who wants to work in Amazon, Google, Facebook, Intel or Microsoft, remember it is the only skill which is time less, of-course apart from UNIX and C. Language come and go, but core of programming, which is algorithm and data structure remain same. If you know how hash table works then you can use their implementation in any programming language e.g. HashMap from JDK or HashMap from C++ boost library. So, if you are serious about programming and realizing it now that algorithms and data structure is not optional, here are some of the great books to learn algorithms. Some of you might have read them before but they are worth reading again.

This is one of the most popular algorithm book, but be aware that it contains a heavy dose of theory. The current edition of this books is 3rd Edition and I strongly suggest that every programmer should have this in their bookshelf, but only for short reading and references. It's not possible to finish this book in one sitting. Another reason I recommend this book as one of the first book on algorithm because its language agnostic and accompanied by lectures here

This was my preferred resource on algorithms from long time, it sill is but now I see it less often then before. You will learn lots of background on algorithm and nowadays eve specific versions of this book is available for different programming languages e.g. Java and C++. There's also a Coursera class for this book, Algorithms Part 1 and Algorithms Part 2. It's excellent. It's also my top recommendation to Java programmers for learning algorithms. Believe it or not but if you already know a programming language then seeing example of algorithm on that programming language than other reduce the learning curve. You can also read 4th Edition of this book online for free here

This is another excellent book on computer algorithms that goes over a ton of algorithms with a lot of code as well. What I especially like about the book is where he actually gives examples of where he used the algorithms (or variations thereof) in practice; it really helps you see the class(es) of problems that a particular algorithm (or family of algorithms) can be used for.

The code is in C, but it's not very esoteric and it's easy to follow.

I had also been out of school for a while and this helped me get up to speed quite quickly on a number of graph algorithms. I've had this for almost 10 years now and still look at it from time to time

Algorithm for Interview by Adnan Aziz is must read book on algorithms, written in terms of keeping programming interview in mind. The cover itself show how interesting the book could be, if you look closely the image on the cover is drawn with thumbnails of famous people, and book explains how you can develop such algorithms. I like this book because of its approach and objective, some time learning same thing with different object helps to understand it better.

O'Reilly's Algorithms in a Nutshell is a very good book to learn programming algorithms, especially for Java programmers. It describes the algorithms with focus on implementing them and without heavy mathematics used in classic books on algorithms. All algorithms are presented in pattern form, with a motivation to use them, pictures and pseudo-code giving a high-level overview, and working code (in C, C++, Java, and Ruby). They also have benchmarks to provide proofs of the theoretical performance of the algorithms. In short, one of the best book to learn algorithms for programmers.

This is actually the second best book in Algorithms after Thomas Cormon's Introduction to Algorithms. It's not really an introduction to algorithms and more suited to experienced programmers. It's more about algorithm design for developers familiar with the basic algorithms. You should start with Introduction of Algorithm or Algorithms by Robert Sedgewick and then continue with this book.

Introduction to Algorithms: A Creative Approach By Udi Manber is a great books for self study as it is full of hundreds of problems and examples. It is designed to enhance the reader's problem-solving abilities and understanding of the principles behind algorithm design, which will help you to develop your program solving and coding skills.

This is another great cook on computer algorithms and deserve a place in programmer's shelf. Once you've gone through the Coursera class on algorithms and one of the intro book, you can read this book for studying advanced topics in algorithms.

Another good intro book on algorithms and data structures. A lovely and clear book, and many programmer who doesn't like heavy use of Mathematics on algorithm will appreciate this book.

This book is designed for Python programmers. Magnus Lie Hetland is also author of one of the popular introductory python book, Beginning Python. This book gives a lot of focus on graph algorithms. As I have told that algorithms are language independent, learning python algorithm doesn't mean you cannot implement them in Java or C++, but if you already know Python then this is the great book to learn computer algorithms.

That's all about

If you like this list of books then you would also enjoy my collection of 10 books every programmers should read, which is list of books on programming, coding, software development techniques and best practices, computers, programming as profession and experience of some of the great programmers/coders/developers of last 50 years.

*REALLY*good on programming language e.g. Java, knows minor details of API and language intricacies but has very poor knowledge of algorithms. Ask them to right popular sorting algorithms e.g. quicksort and they will fall apart. Expecting them to know of about more complex algorithm e.g. String, graph, tree or greedy algorithms. Once, I have asked a very good candidate who was good in Java, multi-threading but his data structure and algorithm skill was really poor to his experience and caliber. I asked him, why he didn't spent time brushing his algorithm and problem solving skill before coming to interview? His excuse was*"those algorithms are just for interviews and never really used in practical coding. I have never used them in my 6 years of Java development career"*. He was right, but he failed to recognize the more long term improvement algorithm and data structure do in improving programming skill. They are tool of developing programming solving skill and coding sense, which is required to convert a user requirement into line of code also known as computer program.##
__10 Algorithm Books - Must Read for Developers__

Another gold tip to those who think that Algorithms are Data Structures are for those who wants to work in Amazon, Google, Facebook, Intel or Microsoft, remember it is the only skill which is time less, of-course apart from UNIX and C. Language come and go, but core of programming, which is algorithm and data structure remain same. If you know how hash table works then you can use their implementation in any programming language e.g. HashMap from JDK or HashMap from C++ boost library. So, if you are serious about programming and realizing it now that algorithms and data structure is not optional, here are some of the great books to learn algorithms. Some of you might have read them before but they are worth reading again.**Introduction to Algorithms by Thomas H. Corman**This is one of the most popular algorithm book, but be aware that it contains a heavy dose of theory. The current edition of this books is 3rd Edition and I strongly suggest that every programmer should have this in their bookshelf, but only for short reading and references. It's not possible to finish this book in one sitting. Another reason I recommend this book as one of the first book on algorithm because its language agnostic and accompanied by lectures here

**Algorithms by Robert Sedgewick & Kevin Wayne**This was my preferred resource on algorithms from long time, it sill is but now I see it less often then before. You will learn lots of background on algorithm and nowadays eve specific versions of this book is available for different programming languages e.g. Java and C++. There's also a Coursera class for this book, Algorithms Part 1 and Algorithms Part 2. It's excellent. It's also my top recommendation to Java programmers for learning algorithms. Believe it or not but if you already know a programming language then seeing example of algorithm on that programming language than other reduce the learning curve. You can also read 4th Edition of this book online for free here

**The Algorithm Design Manual by Steve S. Skiena**This is another excellent book on computer algorithms that goes over a ton of algorithms with a lot of code as well. What I especially like about the book is where he actually gives examples of where he used the algorithms (or variations thereof) in practice; it really helps you see the class(es) of problems that a particular algorithm (or family of algorithms) can be used for.

The code is in C, but it's not very esoteric and it's easy to follow.

I had also been out of school for a while and this helped me get up to speed quite quickly on a number of graph algorithms. I've had this for almost 10 years now and still look at it from time to time

**Algorithm for Interviews**Algorithm for Interview by Adnan Aziz is must read book on algorithms, written in terms of keeping programming interview in mind. The cover itself show how interesting the book could be, if you look closely the image on the cover is drawn with thumbnails of famous people, and book explains how you can develop such algorithms. I like this book because of its approach and objective, some time learning same thing with different object helps to understand it better.

__Algorithm in Nutshell__O'Reilly's Algorithms in a Nutshell is a very good book to learn programming algorithms, especially for Java programmers. It describes the algorithms with focus on implementing them and without heavy mathematics used in classic books on algorithms. All algorithms are presented in pattern form, with a motivation to use them, pictures and pseudo-code giving a high-level overview, and working code (in C, C++, Java, and Ruby). They also have benchmarks to provide proofs of the theoretical performance of the algorithms. In short, one of the best book to learn algorithms for programmers.

__Algorithm Design by Kleinberg & Tardos__This is actually the second best book in Algorithms after Thomas Cormon's Introduction to Algorithms. It's not really an introduction to algorithms and more suited to experienced programmers. It's more about algorithm design for developers familiar with the basic algorithms. You should start with Introduction of Algorithm or Algorithms by Robert Sedgewick and then continue with this book.

__Introduction to Algorithms: A Creative Approach__Introduction to Algorithms: A Creative Approach By Udi Manber is a great books for self study as it is full of hundreds of problems and examples. It is designed to enhance the reader's problem-solving abilities and understanding of the principles behind algorithm design, which will help you to develop your program solving and coding skills.

__The Design and Analysis of Algorithms__This is another great cook on computer algorithms and deserve a place in programmer's shelf. Once you've gone through the Coursera class on algorithms and one of the intro book, you can read this book for studying advanced topics in algorithms.

__Data Structures and Algorithms. Aho, Ullman & Hopcroft__Another good intro book on algorithms and data structures. A lovely and clear book, and many programmer who doesn't like heavy use of Mathematics on algorithm will appreciate this book.

__Python Algorithms: Mastering Basic Algorithms in the Python Language__This book is designed for Python programmers. Magnus Lie Hetland is also author of one of the popular introductory python book, Beginning Python. This book gives a lot of focus on graph algorithms. As I have told that algorithms are language independent, learning python algorithm doesn't mean you cannot implement them in Java or C++, but if you already know Python then this is the great book to learn computer algorithms.

That's all about

**10 Algorithm books every programmer should read**. I agree that algorithms are complex topic and its not easy to understand them in one reading, in that case I suggest to read the same book twice. Also just reading is not enough, try to implement them in a programming language you love. It doesn't hurt writing your own ArrayList, HashMap or a tree based Map implementation. Effect of learning Algorithm is not immediately visible but you will notice a subtle improvement in your thinking, solution building and code quality over time. At last, there are two type of programmer, one who understand algorithm and one who doesn't.If you like this list of books then you would also enjoy my collection of 10 books every programmers should read, which is list of books on programming, coding, software development techniques and best practices, computers, programming as profession and experience of some of the great programmers/coders/developers of last 50 years.

A List of algorithm books but without data structure? I think data structure is equally important as algorithms and you should include some books on data structure as well.

ReplyDeleteI think u are confused . Those books make mention of that topic. Just looking up on those books. Regards

DeleteArt of computer programming by Donald Knuth

ReplyDeleteCertainly YES... Its Missing in the list.

DeleteAlgorithm Design by Jon Kleinberg and Éva Tardos is probably the best algorithm ever to start with.

ReplyDeleteNo one reads these books; you are just selling stuff. Seriously, you have read "Introduction to Algorithms by Thomas H. Corman" front to back? No ... you haven't.

ReplyDeleteHello @Scott, you don't need to read a book front to back always. Sometime you refer them, sometime you keep them referring again and again. There are very few book, which I would say anyone read, front to back twice or thrice e.g. Effective Java, Clean Code etc.

DeleteAnother good book is Algorithms by Sanjoy Dasgupta , Christos H. Papadimitriou , Umesh Vazirani.Check it out. It is easier to read than the Introduction to Algorithms, which will atleast take 2 to 3 weeks to complete.

ReplyDeleteOne more good book to learn programming algorithms is "Algorithmics: The Spirit of Computing" by David Harel and Yishai Feldman. This is one of the easiest to read books on Algorithms that I have found and it is written by a genius in the field of algorithms.

ReplyDeleteI see it's helpful post from various aspects.

ReplyDelete