Sunday, July 03, 2011

Review: Sage: Beginner's Guide by Craig Finch

I like to use Python for modeling and data analysis, and I tell my students that I consider Matlab, R and Python moral equivalents, made in kind by their wrapping of various numerical Fortran libraries, data structures for matrices and vectors, and numerous specialized libraries. But while there are Matlab books for every combination of field and level, and R books for every branch of statistics under the sun, Python books for data analysis are rare. Most introduction books are aimed at computer administrators or web programmers. Material on the web for scientists tended to be reference material that explained the functions available. The few in depth books seemed to assume that you were already a competent scientific programmer who was adding a new language to the toolkit. Sage: Beginner's Guide is meant for the person who is learning scientific programming, and doing so using Sage. As such it is highly useful for those who are being introduced to scientific computing in Python world.

While I use Sage and Python in technical programming myself, I have not been able to successfully teach someone else to do the same. What Finch does is to introduce someone not only to tools available for Python programmers, but instructions on setting up the environment, the practice of technical programming, but also the idea that each of these steps sets up something else.

Sage is a large and highly capable program, so any book has to focus somewhere. So the chapters can be thought of as covering the following (Note: this is NOT a chapter listing):

In each substantive chapter, topics are covered in a standard pattern. A brief narrative description, a short sample program that uses the concept, a description of what program does and why the output looks like it does, then sometimes there are exercises that you can use to confirm you understand the concept or build your intuitive understanding.

What is missing? These are probably additional topics for "Where do we go from here" chapter. First, they do not take advantage of the Python ecosystem. Because of the basics of Numpy, Scipy and Matplotlib, numerous other scientific libraries exist that are not in Sage. I would include some notes on installing packages for use in Sage (which requires some modifications to the standard procedures). Also, an explicit mention of Scipy, since it is the basis for a number of other scientific packages in Python.

Sage: Beginner's Guide is a great addition to the library. It fills the role of the introduction to technical programming in Python that for Matlab is filled by professors who teach computational science/engineering courses. I envision that my copy of the book will be loaned out to one student after another for some time to come.