If i were asked for my preferred field in physics, i’d have a really hard time choosing just one, but it would surely relate in one way or the other to differential geometry. Picking up a programming language, on the other hand, would be far easier, for i feel at home among Scheme’s lots of infuriating, silly parenthesis. Jack Wisdom and Gerry Sussman have managed to bring together the best of both worlds in their book Structure and Interpretation of Classical Mechanics, freely available on-line. The book, aptly dedicated to the Principle of Least Action, is an amazing journey through modern classical mechanics, using two apparently different languages: differential geometry and scheme. There you’ll find all the expected topics: Lagrangian and Hamiltonian formulations, the rigid body, phase space structure, canonical transformations and a very complete treatment of perturbation theory in non-linear systems. What makes this book different (and extremely fun) is what one may call its computational stance: in the authors’ words,
Computational algorithms are used to communicate precisely some of the methods used in the analysis of dynamical phenomena. Expressing the methods of variational mechanics in a computer language forces them to be unambiguous and computationally effective. Computation requires us to be precise about the representation of mechanical and geometric notions as computational objects and permits us to represent explicitly the algorithms for manipulating these objects. Also, once formalized as a procedure, a mathematical idea becomes a tool that can be used directly to compute results.[...]
Our requirement that our mathematical notations be explicit and precise enough that they can be interpreted automatically, as by a computer, is very effective in uncovering puns and flaws in reasoning.
As i mentioned, the computer language chosen is Scheme, for pretty good reasons (besides the obvious one of Sussman being one of the language’s inventors). To begin with, Scheme’s syntax is so simple that one can learn it on the go, although that simplicity does not preclude in any way powerful abstraction means and natural expression of symbolic computations. As a matter of fact, it favours it, as testified by the book’s accompanying library, scmutils. Thanks to it,
expressing mathematical equations in a way understandable by a computer is often a natural exercise. On the other hand, Scheme is an interpreted language, which means that you have at your disposal an interactive environment to play with. The convenience of it for exploratory purposes is hard to overstate.
Wisdom and Sussman have been using SICM for teaching classical mechanics at MIT during several years, and you can find additional material in the course’s website. But the fun does not end there. The 2005 booklet Functional Differential Geometry is an unconventional introduction to differential geometry using SICM’s schemy approach, which is also being followed and extended to Lie Groups by Will Farr, who has started an effort to port (part of) scmutils to PowerPC architectures . Finally, there’s a SICM reading group in sore need of contributions and discussion (hint, hint), but with some potentially useful tips.