Wednesday, July 06, 2005

Pitfalls in Computation

From the introduction to Pitfalls in Computation, or Why a Math Book Isn't Enough, by George Forsythe (Stanford CS Tech Report 147, 1970):

Why do students take mathematics in college and university? I see two reasons: (i) To learn the structure of mathematics itself, because they find it interesting. (ii) To apply mathematics to the solution of problems they expect to encounter in their own fields, whether it be engineering, physics, economics, or whatever.

I am sure that (ii) motivates far more students than (i). Moreover, most solutions of major mathematical problems involve the use of automatic digital computers. Hence we may justifiably ask what mathematics courses have to say about carrying out mathematical work on a computer. This question motivates my paper.

I am not in a mathematics department, and tend to moralize about them. If the reader prefers not to be lectured to, I invite him to ignore the preaching and just pay attention to the numerical phenomena for their own sake.

And from the conclusion:

It might be noted as a digression that, just as mathematics departments mainly ignore modern numerical analysis, so also the newly created computer science departments often give the subject little attention, since they are so busy with a variety of important nonnumerical fields. Thus numerical analysts remain a small corps of specialists whose greatest appreciation probably comes from the users of mathematical programs.

Students of mathematics are well equipped to read about numerical methods. Why should they repeat the classical blunders of generations past? Why aren't they informed of the existence of good numerical methods, and roughly where to find them?

Remembering that most students take mathematics in order to apply it on computers, I ask why mathematics courses shouldn't reflect a true awareness of how computing is done? Why shouldn't students demand in their mathematics courses a greater awareness of the points of contact of pure mathematics and its practice on a computer?

Of course, a mathematics instructor can shrug his shoulders and say that actual computing problems don't interest him, and suggest that his students contact a numerical analyst sometime. If the instructor actually says this out loud, it at least has the virtue that the students may realize immediately that the mathematics is not applicable directly, instead of having to discover it for themselves. It still sounds irresponsible to me. After all, society has been supporting mathematicians pretty well for the past 25 years -- not because mathematics is a beatuiful art form, which it is -- but because mathematics is useful, which it also is. But this would seem to imply that a mathematician should convey some awareness of the main ways in which his subject is used.

On the other hand, a mathematics course cannot really include very much numerical analysis. Wilkinson's treatise on computing eigenvalues is 700 pages long, and can hardly be summarized in every course on linear algebra! As a practical matter, then, the mathematics instructor's main responsibility is to be aware of the main features of practical computing in the areas of his mathematics courses, and mention occasional points of contact, while giving his students important references to important algorithmic materials in other books.

If one just ignores the relations between mathematics and its important applications, I fear that an instructor is running the risk of being exposed by some technological chaptre of the Students for Democratic Society for not being relevant, and that is a very nasty accusation nowadays. Why risk it?

I might not have put it that strongly, but it seems to me that many of the points Forsythe made in 1970, he might as easily have made today. For that matter, the numerical examples from Forsythe's paper are still worth reading today. He treats elementary problems (among them the solution to a quadratic equation and the solution of a two-by-two linear system), illuminating the difficulties that can occur and pointing out types of errors people still constantly make today. So much for progress.

  • Currently drinking: Gen mai cha