This post has already been read 58 times!
This book is a practical—and, we hope, entertaining—introduction to some of the most important algorithms and data structures in computer science.
We know that some software engineers think “practical algorithms” is an oxymoron 😞 so we’ve done our best to keep this book brief, useful and approachable.1 The code samples are in idiomatic Python, and the explanations assume that you’re a software engineer, not a prospective computer science researcher.
We’ve also spent more time than usual on some particularly interesting topics like graph traversal and dynamic programming, and less on traditional favorites like sorting algorithms. That’s because we've found ourselves writing graph traversal algorithms all the time in our own software, but basically never implement quicksort. We still love the algorithms that we’ve excluded; as much as possible we link out to other resources for those whose curiosity tempts them beyond the “practical” scope of this book.
Finally, we’d like to mention that this book started as a fork of Problem Solving with Algorithms and Data Structures Using Python, generously Creative Commons licensed by its authors Brad Miller and David Ranum. We chose to adapt their book based on our experience teaching algorithms to practicing software engineers at Bradfield. Our version is also open source and Creative Commons licensed, and we invite pull requests.