Last week I was traveling on vacation with my family, and next week I’ll be traveling on vacation with my family. This week I’m recovering from / preparing for traveling on vacation with my family, plus I spent some time eagerly preparing some new material for my Fall teaching. So, this post will be short; but it will also involve the traveling. The point I want to raise here regarding traveling and computer programming is that one little glitch can make everything really wrong; and novices need to manage this.
At the beginning of my trip last week, I drove my family from Grand Rapids (MI) to Chicago, visited the American Girl store and the LEGO store, went to long-term parking at a hotel near the airport, took a shuttle to the airport, checked two booster seats, gate-checked a couple of carry-on pieces of luggage, took a sequence of two planes to San Francisco, arrived around 1 a.m., took a taxi to the hotel near the airport where we had ahead of time managed to get a not-too-expensive reservation, in the morning returned to the airport for our rental car, did a 357-mile drive (stopping at the Golden Gate Bridge and Real Goods) to Klamath for a dinner starting at 7:00 featuring locally-caught salmon and locally-grown vegetables, and then checked into our reserved room at Motel Trees (across the street from Trees of Mystery

before their office closed at 10 p.m. Now, think about all the details that could have stopped that progression. Entering the long-term parking required scanning a bar code; what if it hadn’t worked? The shuttle went every half hour, and the traffic around Chicago was heavy; if we were delayed enough, we might have been late for our first plane. And it would have been illegal for my two youngest children to ride in our rental car — or the taxi! — if the booster seats hadn’t made it; if that detail had gone wrong, we would have been stuck in the San Francisco airport at 1 a.m. ff.(!) hoping our seats would magically show up, or trying to find replacements for them.
And my point here is that there are some similarities between that situation and computer programming. What happens when one semi-colon is missing from a Java program? And what happens if you try to store a floating-point value in an integer variable? And what if someone uses “index <= array.length” as the condition in an old-fashioned for instruction? Or for a more subtle example, what if one bit is wrong in a compiled program?
When students start to learn computer programming, they need to understand that having one little detail wrong can completely derail the progress of a computer program. Traveling is one example of an analogous situation; what other ones can you think of? It might even be appropriate to mention chaos theory. (Doesn’t it seem counterintuitive that deterministic ‘robotic’ machines may be described as ‘chaotic’?
)
Regards,
Hugh
