Appendix B. More resources

Where should you go next? This book covered a wide swath of topics, and this appendix will connect you with great resources that will help you explore them further.

B.1 Python

As was stated in the introduction, Classic Computer Science Problems in Python assumes you have at least an intermediate knowledge of the Python language. Here, I list two Python books that I personally have used and recommend to take your Python knowledge to the next level. These titles are not appropriate for Python beginners (instead, check out The Quick Python Book by Naomi Ceder [Manning, 2018] for that), but rather can turn intermediate Python users into advanced Python users.

B.2 Algorithms and data structures

To quote this book’s introduction, “This is not a data structures and algorithms textbook.” There is little use of big-O notation in this book, and there are no mathematical proofs. This is more of a hands-on tutorial to important programming techniques, and there is value in having a real textbook too. Not only will it provide you with a more formal explanation of why certain techniques work, but it will also serve as a useful reference. Online resources are great, but sometimes it is good to have information that has been meticulously vetted by academics and publishers.

B.3 Artificial intelligence

Artificial intelligence is changing our world. In this book you not only were introduced to some traditional artificial intelligence search techniques like A* and minimax, but also to techniques from its exciting subdiscipline, machine learning, like k-means and neural networks. Learning more about artificial intelligence is not only interesting, but also will ensure you are prepared for the next wave of computing.

B.4 Functional programming

Python can be programmed in a functional style, but it wasn’t really designed for that. Delving into the reaches of functional programming is possible in Python itself, but it can also be helpful to work in a purely functional language and then take some of the ideas you learn from that experience back to Python.

B.5 Open source projects useful for machine learning

There are several useful third-party Python libraries optimized for high-performance machine learning. A couple of these projects were mentioned in chapter 7. These projects offer more features and utility than you can probably develop yourself. For serious machine learning or big data applications, you should use these libraries (or their equivalents).