This is a pragmatic useful book on python, authored by David Kopec, the topics touched on through the problems are listed below, and the source code is on github: https://github.com/davecom/ClassicComputerScienceProblemsInPython
- Essential Techniques
- Recursion
- Memorization
- Bit Manipulation
- Dynamic Programming
- Permutation Generation
- Search Algorithms
- Binary Search
- Breadth-First Search
- Depth-First Search
- A*
- Constraint Satisfaction Problems
- Solving Graph Problems
- Representing Graphs using Hybrid Adjacency Lists
- Search in Graphs
- Finding shortest paths with Dijkstra’s Algorithm
- Finding the minimum-spanning tree with Jarnik’s Algorithm (Prim’s Algorithm)
- Genetic Algorithms
- K-means Clustering
- Neural Networks
- Adversarial Search
- Minimax
- Alpha beta pruning (Python book only)