I’ve been having lots of conversations with our director of computational sciences about computational thinking. Among many things, we have been talking about, “What are the beginnings of computational thinking and how do we foster those beginnings?” I’ve come to see that the beginnings of computational thinking involve thinking about arithmetic and algebra as strongly interconnected and thinking about computation as involving creativity and insight.
Here are few examples that we discussed this week.
How would you calculate 21 x 19? Of course, there are many ways to do it. You could add 19 twenty-one times, or add 21 nineteen times. You could do 21 * 20 and then subtract 21. One interesting way we can think about 21 x 19 is as (20 + 1) (20-1). The reasons this is interesting is because it takes form (x+1)(x-1) = x² -1, which is then just 20² – 1 = 399. Of course, we can generalize this to any distance from known squares, so that 18 x 22 = (20-2)(20+2) = 20²-2² = 396. With this method, even products like 63*57 and 112 * 88 are a cake walk.
Another question we talked about was 26 x 27, which is of the form (x+1)(x+2) = x² + 3x +2, which gives us 25² + 3(25) +2 = 702. Less compelling, but still an interesting and different way of thinking about it than the standard algorithm.
The point of all of this isn’t just to figure out how to multiply numbers quickly. Rather the point is to (i) begin thinking about how to break down complex calculations into collections of much simpler ones, (ii) to begin to recognize how classes of similar problems might all be solvable by a common algorithm, (iii) to come recognize that there are often many different algorithms that can be used to carryout the same calculation and (iv) to begin to make contact with the idea that efficiency of an algorithm can depend greatly on what kind of problem you have and its structure.
I know there are lots of physics teachers and physics education researchers concerned with computation thinking. What do you guys think?