My students had their first programming experience this week, and it went reasonably well. I perhaps gave too much background on programming, resulting in only a small amount of class time being devoted to have the students write code. In fact, here is an outline of the day:
- I showed them how to use codepad.org.
- I showed them if/elif/else statements in Python.
- I showed them for loops in Python.
- We created a program that would add two single-digit numbers in base six.
This took the entire class period, leaving the students almost no time to start writing a program that would add two four-digit numbers in base six.
Finishing that program was one of several ways students could get credit in the course. As I expected, some students decided to do the coding, although most did not.
I had been wondering about the worth of doing this in a class for elementary education courses. I am attempting to focus on why these algorithms work, whereas the programming seems to only help with understanding how to do the algorithms. I am still undecided for this class, although Ed Dubinsky and Robert Moses wrote an interesting article for this month’s AMS Notices (I also recommend reading Beckmann’s article and Wu’s article).
In short, Dubinsky and Moses write about APOS theory, which roughly (I am not an expert) says that students progress through several stages of understanding any sort of mathematical idea:
- Action: a student can do a particular mathematical “move,” but cannot really reflect on that move. For instance, a student could cube a given number.
- Procedure: a student can reflect on the action, and consider it abstractly. For instance, a student could imagine cubing a number without actually doing it. Now, for instance, a student might be able to think of how you one might attempt to find an inverse to cubing a number.
- Object: a student things of the former action/procedure as a “thing,” and realizes that he/she can act on it. For instance, the student could imagine taking , and transforming it by taking the derivative. The former action/process becomes more “tangible.”
- Schema: I am particularly hazy on this one, but it seems to me like a student is able to abstract the object and consider other actions and procedures that are related to it. My best guess is that the student might realize that fits into a larger category called functions, and one can add/compose/differentiate this type of object.
To be sure, students do not progress through these four stages in a step-like manner; it is messier than that (it is sometimes useful to think of something as a Process, and other times it is useful to think of it as an Object). I would also welcome people to correct my inevitable misconceptions on APOS theory in the comments.
Anyway, Dubinsky and Moses wrote that computer programming can help students rapidly ascend through these four steps. Once the student has already internalized a mathematical idea into an Action, having the student write a computer program is a great help to turn that idea into a Process. Having the student code a different program that calls the first program turns that idea into an Object. “Going back and forth between object and process conceptualizations of a mathematical idea, so necessary in doing mathematics, resulted from this pedagogy almost effortlessly (Weller et al., 2003).”
This makes me think that requiring my elementary education students to code might be a good idea, since it would seem that they would definitely need to view addition, say, as a Process (rather than solely as an Action).
Comments on the programming project’s worth in my class an on APOS Theory in general are welcome.