When I was in High School, the tool of choice for any math class was the TI-83 graphing calculator. I believe this is still the case.
One cool thing about TI-83’s is that you can create custom programs for it, using a language called TI-BASIC. By going online, you could find all kinds of programs people had made for the things. Games were of course the most popular thing to download; simple things like Snake or a port of Oregon Trail.
For more practical purposes, there were programs that could, for example, solve any quadratic equation. The teachers did not approve of these. I wasn’t one to cheat, so I thought–is it really cheating if I make the programs myself, from scratch?
It was a great exercise. I often had to make multiple programs per unit, since the standard fare of math classes is to have problem sets with different givens and different unknowns (it might be the Y-intercept or it might be the slope that is unknown in the slope-intercept equation, or it might simply be Y). This forced me to really get to know the different equations inside and out, and it also tested the limits of my knowledge of what I could do in TI-BASIC.
But the teachers still did not approve of this. They took every possible opportunity to ask us to wipe the memory on our calculators. They discouraged using programs at all. They were so wedded to the traditional way of teaching and learning math that they saw this incursion of technology as nothing but a distraction, and a tool for cheating.
I can’t speak for every math teacher in the country, but I can say that mine were subscribing to a backwards way of thinking. Do you know how many of the kids in my Freshman geometry class still remember what they learned there? And of those, how many actually ended up with a practical application of that knowledge? I promise you that the number is very close to zero.
But what a wasted opportunity to encourage kids to get into programming!
A Co-Learning Program
I am not suggesting that we give up on teaching math, but I do think that how we teach it needs to be seriously rethought.
What if, at the same time that elementary school kids were being taught basic addition, subtraction, and multiplication tables, they were also learning the basic syntax of one programming language, like Python?
As students progressed in their learning of math concepts, it would become increasingly integrated with the programming classes. Math problem sets would require students to create programs, on the spot, that could solve whole classes of such problems. The actual programming class would be dedicated to teaching bits of Python that would specifically be helpful for solving such problems, without spelling out exactly how to accomplish that end.
In short, math would be used to demonstrate what programming was capable of accomplishing, and programming would be used to force students to think in depth about the nature of the math they were learning.
This concurrent, integrated learning program would begin in elementary school and follow students all the way to the end of High School. By which point they would know at least as much math as any other High School graduate, and have a mastery of at least one programming language that only a tiny minority of High School graduates (or anyone) can really boast of today.