In my second year as an undergraduate I chose to do some computing problems to contribute towards the required laboratory work. With my thoughts turning towards what I would be doing after I had finished my degree, I decided to learn a language that would be more useful on a CV than Pascal. The natural choice was C, the lingua franca of computing. I eventually completed a 250 line program to solve the Korteweg-de Vries simultaneous differential equations that describe solitons1.5.
Learning C and writing the program was an unpleasant experience. I had to get to grips with the syntactic strictness and unfamiliarity of the language, the compile-run-debug cycle, and a relatively tortuous method of generating plots of my results. When the program was finally working I took it into the department to run on the SunRay system, only to find the program crashed when run for reasons still unknown.
It was as I was considering how to tackle another problem that I first heard about Python. Having read some of the hype surrounding it on the web I decided to attempt to use Python to write a program to solve the Lorenz equations of three-dimensional fluid flow using the Runge-Kutta method. I found its syntactic simplicity a breath of fresh air. I learnt as much as I needed of the language in much less time than had taken for C. Its dynamic typing and the lack of true declaration of variables speeded up the process of writing the program. Having completed a program of equivalent complexity in a fraction of the time and only one-hundred lines, I became convinced Python was suitable as the principal teaching language in the department.
With help from Charles Wiles, I designed a replacement for the current Pascal course as partial credit for a Masters degree. Working from the original handbook, written by Clive Rodgers[#!oldhandbook!#], I wrote a Python equivalent. A trial was then conducted to find out whether:
In order for Python's use to be considered feasible it must satisfy several requirements:
In order for it to be considered the preferable alternative, there are other criteria it is desirable for a proposed language to fulfil: