Programming without math, part 3

I agree with all of the commenters on yesterday’s post that different problems require different tools. But God, as they say, is in the details.

To address Douglas’ point: I’m not suggesting that people learn a fundamentally weaker programming language. What I’m suggesting is that we radically rethink the order in which we teach programming. It seems to me that a K-12 computer programming curriculum should culminate in, say, a solid working knowledge of Python. But many of the features of Python need not be introduced in the earlier grades, and even then some of those features could be elective, not mandatory.

The mandatory features are the ones that focus on temporal logic, such as sequencing, conditionality and repeated/looped operations – basically the same operations you use when following a cooking recipe. That’s really the core for any use of computer programming. After that we can bring the ideas of how to do common sub-operations. In programming we call these functions. The equivalent in cooking are the sorts of things you already know how to make from another recipe.

Certainly some applications, such as ray tracing, are going to call for tools of mathematical modeling to be readily available. But other applications might require very different sorts of tools. The point is not to remove the math from the toolkit, but rather to not require learning math as a critical path on the way to learning programming.

Andras expresses a utopian ideal of being able to express things in broad and inexact strokes. Alas, I’m not sure we can deliver on that one. A statement as simple as “John is strong as an ox” would confuse the hell out of any computer program. The statement could be interpreted as saying that the phrase “strong as an ox” is an alternate name for John, or that John is strong whenever he is being an ox. And don’t even get me started on “Time flies like an arrow.” The only reason we can glean the proper sense from such statements is that our human brain performs extraordinary feats of culturally informed analysis — something that is quite beyond computer software in its current state.

But what can we do? Well, for one thing, I think we should start out by reducing “data” to the bare minimum needed for describing an interactive virtual world. As far as the program is concerned, the world consists of objects, and each object either does or doesn’t have each of various properties. We can modify objects over time by adding and taking away their properties.

Tomorrow I’ll go into more detail.

3 Responses to “Programming without math, part 3”

  1. Andras Kanegson says:

    But ‘broad and inexact strokes’ are my bread and butter 😉

  2. admin says:

    I know, it’s sad. I wish we had a good solution to that problem — talking to a computer the way you talk to another person, and having the computer get it right. But I haven’t seen a good solution for that yet.

  3. Andras Kanegson says:

    Oh Ken don’t be sad!

    I was kidding and (over-)extending the cooking metaphor. I’m sure there’s nothing so insurmountable that it couldn’t be overcome with some intensive tutoring and hard work regardless of the current standardized pedagogical approach.

Leave a Reply