This post is about some of the virtues of programming computers in math class. I include a long anecdote and a quick geogebra tutorial. The punchline: teaching kids to program introduces them to an environment that gives instantaneous, continuous, 100% correct, 0% helpful feedback without judgement. The computer doesn’t say, “you’ve made a mistake here,” it just shows you a result, and it’s up to you to interpret it, decide if it’s a correct result, and find the problem if it’s not.
In my calculus class we’re looking for a way to guess how long it will take a glass of cold water to rise to within a few degrees of room temperature. We’ve taken a lot of data, and discovered that 1. However, no one in class could find a that satisfied the equation (not even ). So I broke it down a little:
If the water is 40 degrees right now, what do you think its temperature will be in 1 minute?
You can imagine where it went from here – lots of guesses, including some really good ones and pretty bad ones. Instead of helping them write it in math (I didn’t even tell them that this is, like, a method), I took a little time to teach them some geogebra 2 programming techniques so they could flesh out the ideas themselves.
We started with a blank file and created a point, A. I showed them how they could make a point that was 1 unit right of and 1 unit above A. Type ( x(A)+1, y(A) + 1) into the input field below to get a taste of this.
They liked this; I’m always surprised by how much students like stuff like this. So this alone has them interested in learning geogebra. Then I lay the geogebra Tool Manager on them.
In the applet below, open the “Tools” menu and choose “Create New Tool…” and choose B as an output object. You’ll notice that A has been chosen automatically as an input object. Choose the name and icon you like from the third tab.
What follows is a picture to help you – it’s not an actual geogebra applet! Don’t try to click on it!
After you’ve gone through all the tabs and clicked “Finish,” your new tool will appear in the toolbar, all the way to the right. Now you have a tool that accepts a point as input and creates a point 1 to the right of it and 1 above it, automatically! Try clicking around with your tool. You can even click on the output of the tool to feed it back into the tool, creating a long line.
Well, at this point my students were ready to get back to the temperature thing (we’ve been working on it for maybe 3 hours at this point, over several classes). With a little nudging from me they make a tool that does Euler’s method (fixed width of 1) on a point, by choosing B = (x(A)+1, y(A)+0.01(70-y(A))) and using the tool repeatedly. Check this out – try dragging the point A up and down to different temperatures!
Note that now I can ask them questions like “how do you make the curve flat?” and “why does the curve change direction?”
With a few simple commands the students have created a complex piece of software, and they can be proud of it. It has a pleasing organic flow that they like intrinsically. But the best reason to teach them to program geogebra is that geogebra programs only work if they are mathematically sound. I can see in an instant whether a student has created the program correctly or not. When they go on to create other geogebra programs, I can assess whether they understand the concept or not, and more importantly, they can assess their own knowledge. Geogebra will show students if they understand or not, but won’t give suggestions or hints. It also doesn’t mind if they are wrong 400 times in a row.
I start teaching geogebra commands to kids right away, in the first month of school. My algebra 2 kids can transform an arbitrary function, calculate a line or other curve through 2 points, and animate sliders. The ones that get really interested learn more on their own (one student has all but mastered latex). The kinds of assignments I can give and the kinds of exploration they can do now are really something else. Please teach your students to use computer technology well. It’s not enough that they can use the built in functionality – they have to be able to make their own.