We think of computers as compliant slaves that deliver computational power in the same way that a power shovel delivers muscle power. To me programming is a medium for the expression and investigation of ideas, analogous to natural language and mathematics.
In subjects that I teach at MIT, such as advanced classical mechanics, it is easy to get a right answer without real understanding. I use computer programs to communicate a deeper understanding of the material. Programs are for students to read as well as for a computer to execute. Expressing methods in a computer language forces them to be unambiguous and computationally effective. The task of formulating a method as an executable program and debugging it is a powerful part of the learning process. Once formalized as a program, a mathematical idea becomes a tool that can be used to compute results.
I will show how programming can help us to illuminate subjects like Analytical Mechanics and Differential Geometry and make parts of General Relativity come alive.