MAA Mathfest is in Madison this week — lots of interesting talks about mathematics, lots of interesting talks about mathematics education. Yesterday morning, David Mumford gave a plenary lecture in which he decried the lack of engagement between pure and applied mathematics — lots of nodding heads — and then suggested that two-column proofs in plane geometry should be replaced with basic programming — lots of muttering and concerned looks.

But there’s something to what he’s saying. The task of writing a good two-column proof has a lot in common with the task of writing a correct program. Both ask you to construct a sequence that accomplishes a complicated goal from a relatively small set of simple elements. Both have the useful feature that there’s not a unique “correct answer” — there are different proofs of the same proposition, and different programs delivering the same output. Both quite difficult for novices and both are difficult to teach. Both have the “weakest link” feature: one wrong step means the whole thing is wrong.

Most importantly: both provide the training in formalization of mental process that we mathematicians mostly consider a non-negotiable part of general education.

But teaching coding instead of two-column proofs has certain advantages. I am not, in general, of the opinion that everything in school has to lead to employable skills. But I can’t deny that “can’t write five lines of code” closes more doors to a kid than “can’t write or identify a correct proof.” People say that really understanding what it means to prove a theorem helps you assess people’s deductive reasoning in domains outside mathematics, and I think that’s true; but really understanding what it means to write a five-line program helps you understand and construct deterministic processes in domains outside a terminal window, and that’s surely just as important!

Computer programs are easier to check, for the teacher and more importantly the student — you can tell whether the program is correct by running it, which means that the student can iterate the try-check-fail-try-again process many times without the need for intervention.

And then there’s this: a computer program *does something*. When you ask a kid to prove that a right triangle is similar to the triangle cut off by an altitude to the hypotenuse, she may well say “but that’s obvious, I can just see that it’s true.” And she’s not exactly wrong! “I know you know this, but you don’t really know this, despite the fact that it’s completely clear” is a hard sell, it devalues the geometric intuition we should be working to encourage.