One Year of Classic Computer Science Problems in Python

Approximately one year ago today, my most recent book came out, Classic Computer Science Problems in Python. It is the second book in the Classic Computer Science Problems series. You can purchase it on Amazon or through the publisher’s website. It has been an amazing year for the book.

I had the good fortune to be on several podcasts to promote the book. I really appreciate all of the podcast hosts who gave me the honor of being on their show. It made a huge difference in sales. For example, my appearances on Talk Python to Me and Podcast Init alone accounted for approximately 1,000 sales according to the publisher. To see all of the podcasts I’ve been on, checkout the interviews section of

This has been the most successful book that I’ve written by an order of magnitude. It’s surpassed the sales of Dart for Absolute Beginners and Classic Computer Science Problems in Swift by a multiple of their combined sales. I appreciate all of the support from the community. I think Classic Computer Science Problems in Swift was a good book but the publisher was right in saying that it needed a larger language audience. Python not only has more users in absolute numbers, it also has more users in one of the major target demographics for the series, which is self-taught programmers who missed out on a computer science education.

I’ve done many things to promote the book, and I appreciate how my publisher, Manning, has advertised the book to their audience. However, more effective than anything have been the podcast episodes. I can’t tell you how many people have told me they learned about the book through a podcast episode. Podcast episodes have even led to translations. If I hadn’t appeared on the mostly Portuguese (but sometimes English) podcast Castalio, then perhaps the Portuguese edition would not have come out.

Amazingly, the book is now on target to be translated into seven languages, including: Russian, Polish, German, Traditional Chinese, Japanese, Korean, and Portuguese. Interestingly, the only translation publisher that has been in regular contact with me has been O’Reilly Japan. I think they did a really nice job on their edition, and I thank them for their attention to detail. It’s interesting to see how the book’s teaching style (informal in terms of theory/math, to the point, and code heavy) appeals to some cultures and not to others. Anecdotally, my worst review has been for the Russian edition, and some of my best reviews have been out of Germany for the English edition. Of course I can’t tell you if the Russian translation is good or not, since I don’t speak Russian.

By far the most controversial decision I made about the book was to use type hints/type annotations throughout. This decision alone led to some of the worst reviews of the book. Would I do it again? It’s impossible to say how many people bought the book because it was one of the first Python books to use type hints throughout. I do think the type hints add value in terms of readability once you get used to them, but I can definitely see how the effect of turning some people off, makes any benefits not worth it. And of course I agree that the way Python does type hints is still too verbose.

Looking forward, one nice thing about the Python book versus the Swift book is how much more stable a language Python is. I wrote both books according to the latest versions of their languages respectively. However, by the time the Swift book came out (it took 6 months to go from done to store shelves) it was already a little outdated due to the fast pace of change in the Swift language. Python on the other hand, has a much longer shelf life and greater backwards compatibility between versions.

Finally, I am currently writing the third book in the series, Classic Computer Science Problems in Java. I look forward to it being released later this year, so look out for it if you are a Java aficionado. To decide what language to do next, we did a poll of Manning readers that had 300 votes. Java practically tied with Go. The idea of going with Java is that this book did well in a large language community (Python) and only okay in an emerging language community (Swift). Writing a book in Java feels like going back to my roots since Java was one of the first “real” languages that I learned in the late ’90s. I have done some professional projects in Java as well, so rest assured that I’m competent to write it!

I’d like to thank all of the readers who have purchased the book. I’d like to thank anyone who’s shared their constructive feedback. And, I’d like to thank the team at Manning. If you are a reader and you like the book, please do leave a review on Amazon or your place of choice.

Also, it goes without saying, but please stay home during the coronavirus crisis if you can. Stay safe!

About Me

I teach Computer Science to college students, develop software, podcast, and write books about programming including the Classic Computer Science Problems series. I'm the publisher of the hyper local newsletter BTV Daily.

You can find me on Twitter and GitHub. Check out my podcasts Kopec Explains Software and Business Books & Co.


©2012-2021 David Kopec. As an Amazon Associate I earn from qualifying purchases.

Based on tdSimple originally by Lasantha Bandara and released under the CC By 3.0.