TLDR; really approachable, clear and concise concepts increasingly exposing the reader to more complex and handy algorithms based on previously discussed concepts.
Right after listening about a year ago to Aditya’s interview on the Talk Python podcast, I decided to buy his book out of curiosity.
Despite of taking me quite long to start, I finally went through it during my holidays. It is a light although technical reading that was very pleasurable to go through. Although most of the concepts were known to me, I read the book as the first step to start a deeper dive into some of them.
It was a good refresher of some of the concepts I had studied during my Bachelors in Telecommunications Engineering applied to different scenarios such as Bellman Ford’s algorithms or Drijkstra’s algorithm to compute the shortest path in a computer network, or the KNN classification method.
Other interesting points were the overview of dynamic programming, greedy algorithms, big O notaton, the discussion on simple algorithms and its complexity, NP-complete problems, as well as the super simple implementation of BDFS in Python.
Overall I enjoyed reading the book and as the author points out, instilled in me a demand for new and deeper knowledge on some of the topics.
P.S. there’s a github repo with implementations of the different algorithms in many languages: https://github.com/egonSchiele/grokking_algorithms as well as an errata page: http://adit.io/errata.html