# Grokking Algorithms Review - Best Book to learn Data Structure and Algorithms in Python

Hello guys, I have read many books on data structures and algorithms like Introduction to Algorithms by Thomas H. Corman and Algorithm design manual by Steve S. Skiena, so when I come to know about this book, I thought, just another book on algorithms, but I was wrong. This is not just another book on algorithms but one of the most interesting books you will ever read on Algorithms and Data structure. It doesn't cover all the data structure and algorithms you see in Computer Science but whatever it covers, it does really well and that's what matters most for beginner programmer or Computer Science students.

Let's accept it, data structure and algorithms are interesting but at the same time they are very complex and hard to understand, especially, if not explained very well and that's where this book rocks. It explains things in very easy language and most importantly with a context, which helps to understand the topic better.

For example, when Aditya talked about array and linked list in the Grokking Algorithms, his examples of how a group of friends going for movie struggle to find the seat which is next to each other illustrates the problem faced by the array.

There are many such interesting and real-world examples, which makes the complex topic of algorithms and data structure easier to understand.

You will also appreciate his simple explanations like why quicksort is more used than merge sort?, something which I have thought before, but didn't understand, and that is just one example, the book is full of such examples on essential topics like an array, linked list, sorting algorithms, searching algorithms, recursion, etc.

If his language and examples were not enough, the fine arts, paintings, and diagrams in the book will surely hook you.

The book has around 400 images and they are all unique (one example is below). They go nicely with the text and help you to visualize how an algorithm is working or how a data structure is working. Aditya's background in programming and fine arts has really created a nice blend that came together in the Grokking Algorithms: An Illustrated Guide for Programmers and makes this book a must-read for any programmer and Computer Science Students.

## What I liked

Well, to be honest, I like the whole book, from Introduction to end. This is also one of the few books which I have read from start to end in the last few years, the other two beings, Elegant Objects by Yegor Bugayenko and Clean Architecture by Uncle Bob Martin. Anyway, here is my list of things which I liked, in fact, loved in Grokking algorithms:

1. Easy to understand language.

2. Interesting pictures which help to visualize the working of algorithms and data structures.

3. Thought to provoke use cases e.g when you have to design an app to keep track of your expense where you need to add and remove items more regularly and viewing it once or twice in a month, which data structure will you use?

4. Contemporary examples make it even more interesting. For example, how Facebook stores username so that they can allow you to log in and handle signups? Array or linked list or a hybrid data structure which is made of an array and linked list.

5. Size of the book, yes, it's not overwhelming so more chances that you will read it and come back again.

6. Covers essential data structure e.g. array, linked list, and hash table.

These were some of the points which I like but overall Grokking Algorithms is a very readable book with lots of good pictures that make this difficult topic relatively easy to understand.

But, if you are someone who prefers active learning like online courses then you can combine this book with Data Structures and Algorithms: Deep Dive Using Java course from Udemy, which covers a lot more data structure than Grokking Algorithm and effectively complement the book.

## What would have made this book even better

As contrary to many of you thinking, the book is surely not a replacement of classic titles such as Introduction to Algorithms by Thomas H. Cormen because it's not comprehensive and doesn't cover most of the data structure like Tree or Trie, etc.

At best, its an introductory book on data structure and algorithms which makes the somewhat dry topic of data structure and algorithms more interesting. Following are some things which I missed in this book:

1. The book is kinda light on data structures, which is a counterpart of algorithms because algorithms work on data structure and its the choice of a data structure which affect algorithms, would have been better if Aditya provided some more content on an essential data structure like a binary treebinary search tree, trie, etc.

2. Even though the book covers dynamic programming and greedy algorithms and explains some advanced algorithms e.g. k-nearest neighbors, it still doesn't cover key algorithms like encoding and encryption algorithms, map-reduce, etc.

He tries to somewhat make for it in the last chapter about what next, where he provides a brief overview of 10 more algorithms that weren’t covered in the main content.

Btw, if you want to explore more data structure and algorithms than given in this book, I also suggest checking out Algorithms and Data Structures by Robert Harvick, an online course form Pluralsight.

Btw, you would need Pluralsight membership to access these books which cost around \$29 per month or \$299 per annum (I actually bought it on \$199 on their sale which they run every quarter or so). Even if you don't have the membership, you can access this course for free by taking advantage of their 10-day free trial, which allows 200 hours of access to all online courses.

To be honest, the book delivers what it says but once you start loving a book, you start expecting more from it and hopefully, Aditya will take note of it and the second edition would be a little bit more comprehensive than the first edition.

That's all about Grokking Algorithms: An illustrated guide for programmers and other curious people. In short, I highly recommend this book to programmers, developers, software engineers, students, computer science graduates, and all other curious people, as the title suggests.

It's interesting to read, teach complex concepts in easy-to-follow language, problem-solving, and focus on concept than implementations which means even if you don't code you can understand how a particular algorithm works and how to choose a particular data structure.

It's chapters on the array and the linked list is one of the best I have ever read and I strongly recommend all programmers, particularly those who have just started their career to read that. It's also not costly and worth every penny spent.

So, if you want to do just one thing right now, just go and read the Grokking Algorithm by Aditya Bhargava, Many thanks and kudos for writing such awesome books which makes this topic even more interesting and readable.

My other Book Reviews and Articles for further learning:

P. S. - If you prefer online courses more than books or want the best of both worlds then you can also check the Data Structures and Algorithms: Deep Dive Using Java along with reading this book. This will help you to learn these key skills better.

Anonymous said...

Hey bro, I have just completed some basic Java programming . Any advise on what could be done next.(I have done some basic problems like palindromes, display passwords using scanner class, reverse string ,for loops etc.)

javin paul said...

Hello @Anonymous, you can still focus on Algorithms and Coding, try solving problems given in leadCode.com or Algorithm design manual book. If you want to work on application side then try creating simple program using Object oriented analysis and design e.g. designing a vending machine, coffee machine, traffic controllers etc.

Anonymous said...

thanks paul, any book suggestions?

Anonymous said...

thanks paul,any book suggestions or other sources??

javin paul said...

@Anonymous, go to leadcode.com and solve their problem, on OOP, you can start with Head First OOP Design and Analysis, for more choices see my post 5 Books to Learn OOP Analysis, and Design

Mustapha said...

Thank you paul
Q : i know java but all the examples in this book are in Python
its fine for learning from this book? because i don't khonw python

javin paul said...

Hello @Mustapha, It's not really too much difficult, it more like pseudo code, I have read the book and I didn't have any difficulty understanding. Language and examples are superb and so are their diagram. worth reading.