Python Algorithms explains the Python approach to algorithm analysis and design. Written by "Magnus Lie Hetland ," author of Beginning Python, this book is sharply focused on classical algorithms, but it also gives a solid understanding of fundamental algorithmic problem-solving techniques. "The book deals with some of the most important and challenging areas of programming and computer science, but in a highly pedagogic and readable manner. The book covers both algorithmic theory and programming practice, demonstrating how theory is reflected in real Python programs. Well-known algorithms and data structures that are built into the Python language are explained, and the user is shown how to implement and evaluate others himself. "What you?ll learn "Transform new problems to well-known algorithmic problems with efficient solutions, or show that the problems belong to classes of problems thought not to be efficiently solvable. Analyze algorithms and Python programs both using mathematical tools and basic experiments and benchmarks. Prove correctness, optimality, or bounds on approximation error for Python programs and their underlying algorithms. Understand several classical algorithms and data structures in depth, and be able to implement these efficiently in Python. Design and implement new algorithms for new problems, using time-tested design principles and techniques. Speed up implementations, using a plethora of tools for high-performance computing in Python. "Who this book is for "The book is intended for Python programmers who need to learn about algorithmic problem-solving, or who need a refresher. Students of computer science, or similar programming-related topics, such as bioinformatics, may also find the book to be quite useful. "Table of Contents "Introduction The Basics Counting 101 Induction and Recursion ... and Reduction The Skeleton Key of Algorithmics Divide, Combine, and Conquer Greed Is Good? Prove It Tangled Dependencies and Memoization From A to B with Edsger and Friends Matchings, Cuts, and Flows Hard Problems and (Limited) Sloppiness
Pros: - Very clear explanation of a complex subject. - Each chapter builds upon the previous chapters so that this is more like a class than a reference manual. - More approachable that the Sedgewick and Cormen.
Cons: - The almost constant parenthetical phrases distract from the text and quickly become irritating. After page 20 I just skipped them and found that I understood the concepts more quickly. - The use of single letter variables in the code examples makes it more difficult to understand the structure of a new concept. When there are several of them, it can become confusing. (See page 207.) Why not just use descriptive variable names?
There are sections that make note of how to implement certain algorithms using Python specific features, and this is very helpful, but this is first and foremost a book on algorithmic theory that happens to use Python for code examples.
Since this is my final year of college, I had to prepare for technical interviews. Python has always been the language of my choice and I bought this book to read good quality algorithmic program's source code. (which unfortunately, I couldn't find online anywhere).
I didn't read it to learn algorithms or exercise interview problems. I was already familiar with those, and just wanted to go through the source codes to learn some tricks, design pattern .. etc.
For example, for creating graph using adjacency list, I learnt a more pythonic way of structuring it.
Great book. He uses humor and a genuine love of the material to what can be challenging stuff. My only problem was the over-use of singe-char variable names.
It is just a wonderful book on algorithms. I was happy to read it because there is everything necessary about algorithms. The author put a lot of effort to describe everything in a very clear way.
The author didn't write the book for others, he'd written it for himself. He constantly distracts and talks to himself, touching core topics only superficially.
As a result, the book is poorly structured, patchy, incomplete, and even repetitive!
There's a little "meat" in the book, maybe, 100 pages of core content scattered/hidden across a vaguely relevant chatter, distractions, and forward/backward references. I didn't know that one can cram so much unnecessary information in so tiny volume.
Even worse, there's a little code in the book. And when there is, you can bet that it will be: 1. Abstract and didactic 2. Unreadable (single letter variable names, Carl!) 3. More often than not, without call examples (don't you even dream about unit tests) 4. Eventually, unpythonic
All in all, I'm tempted to rate it 2/5. Nevertheless, there is some valuable information, not to mention references and exercises, so the final score is 3/5.