Think Complexity by Allen B. Downey

Summary: Challenging but rewarding

This one is not an easy one. Allen guides you through the various, complex, algorithms and data structures. This book is not for a beginners – you have to know Python already to solve exercises presented by author. The complexity of the book itself is also rather for slightly advanced developers. If you just start your journey with Python development it may be hard to follow.

What I liked, however, is the way Allen presents the material. He tries to show you different aspects of the development process and refers not only to computer science but to philosophy and mathematics as well. Even if you won’t be able to solve all the presented puzzles it is still worth getting through the book.

Few remarks regarding what I really liked in the book. First of all, Allen provides you with lots of references. So, if you are interested in particular topic, you have plenty of sources to start with. Secondly, Allen provides you with references to Wikipedia very often. This is not regarded usually as a good source among “university like people”, however I like this kind of approach a lot.