Doing Math with Python Review

I had the pleasure of reviewing Amit Saha's book "Doing Math with Python" over the Christmas break and this post contains the email I sent to Amit.


I had a chance to go through the book today. I really enjoyed it and think you've done a great job with it. I thought it was easily to follow and the use of fun examples that drive the motivation of each topic is great. I've been trying to convince my brother who is a high school mathematics teacher in Virginia to learn and introduce mathematical programming for his class but he hasn't bitten yet. I think this book could convince him. It is hard for me to remember my head space in high school, but this seems appropriately scoped, as long as you've got some basic programming concepts under your belt. With that said, I think a "Chapter Zero" on the basics of Python programming could make the book usable for students that don't quite have the programming background. Here are a few other notes I took:

  • I like that you use the most up-to-date Python 3 idioms, especially .format()
  • The introduction of Counter with no conceptual base of the difference in classes, functions, and methods could be confusing. But maybe it is ok just to throw it out there and not explain it, as the overhead of the details could be too much.
  • I would have liked to see some explanation of text files. Many students have no idea what it means to edit a text file. It would be nice if Anaconda came with a simple cross platform text editor that you could present.
  • It wasn't clear to me why the gravitational example on page 129 was relevant to the chapter on sets.
  • I was curious why you chose to use SymPy sets over Python sets. If it is possible to do everything in the book with Python sets, maybe that would be lower overhead.
  • I loved seeing all the uses of SymPy and the great introduction to the software.
  • I'd recommend making a simple conda package for your Venn diagram package so that you only need one install command.
  • I loved that the installation process was so simple, thanks to Anaconda, but you could also think about showing Sagemathcloud as an option to installing things (SMC comes with text editors).
  • I know color printing is expensive, but there is educational evidence that syntax highlighting helps learning. Maybe it could be an option in the future printings.

So, like I said, really nice work! The book is a great introduction to doing math with Python. I hope that high school teachers find it and see its utility. I'll spread the word the best I can.

Thanks for writing the book and sharing with me. Also thanks for all the SymPy participation. I hope to see you around the mailing lists and Github in the future.