In every public school system reading is taught and writing is too. I don’t know of any example where writing isn’t taught. The first few years might focus on only reading, but once the hand eye coordination gets good enough that the kids can start writing, they are taught how to write. Some students show great aptitude for reading, but then don’t write so well, and some students don’t care much for reading, but are excellent writers. Generally strength in one, correlates with strength in the other, but not necessarily. Yet at the moment public education only teaches students how to read math, it doesn’t teach students how to ‘write math’. This results in an imbalance that generates feelings about how learning math is a complete waste of time.

Forgot Algebra is an excellent XKCD comics which illustrates this point; the text in the comic says “It’s weird how proud people are of not learning math when the same arguments apply to learning to play music, cook, or speak a foreign language.” I don’t think it is weird because the math education most people get is akin to learning only how to read, with never being taught how to write. Their brain is imbalanced.

So how should students be taught how to ‘write math’? by programming. I don’t think that some computer programming should be taught at the very end of high school, for the more advanced students, it should be taught earlier than that, and to everyone. If I remember my education correctly, I had Pre-Algebra in 7th grade, and Algebra 2 in 9th grade. Toss them out, and replace them with Introduction to Programming and Data Structures. Everything which is taught in Pre-Algebra will accidentally get picked up writing some simple programs, the concepts of Algebra will get picked up faster because the students will have had some hands on experiencing using those concepts (but not being aware of it), and there are bound to be Data Structure problems that can be used to teach the concepts in Algebra 2.

I feel strongly that by teaching students how to inadvertently use math, they’ll be much more likely to pick up the concepts of math which are currently being taught in High School today.

When teaching children how to read, we don’t drill them on every shape and sound that letters make, before teaching them concepts like words and sentences. We start by reading to them, and then go back and teach some basics. We show them examples of what reading can do for them. Each progressing year in school will have more and more teaching on how to read, practice reading, how to write and practice writing. It doesn’t work to teach every concept of reading before moving onto writing, teaching and practicing the principles of both re-enforce the other. The same is true for math and applied math, i.e. programming.

I remember seeing an episode of Full House where one of the daughters storms into the house complaining about how hard math is now. In the previous grade (6th?) math was all numbers, and now the teachers were making it confusing by introducing letters; i.e. variables. This fictional character isn’t the only one who had difficulty crossing this mental math barrier. But if instead of being taught ‘letter math’ she was taught programming instead, the transition to ‘letter math’ would be much more natural. Programming would feel like a completely new subject, not like math at all. And the idea of sticking a number into a variable wouldn’t feel weird at all, it’s just what you do in programming. Then after a year of writing functions and function declarations (a name given to the concept of naming an algorithm, declaring what it takes as an input, and what it will return) in her programming class, when it came time to take algebra it would all feel very second nature to the student.

Personally, I never understood the f(x) notation while I was in high school and middle school. I was very good at math; I loved math, and even got a 5 on the AP Calculus test. But I still struggled with what the f(x) notation was supposed to convey. I understood y = x + c, notation just fine. Plugging in numbers for known variables was simple. But that whole f(x) (pronounced f of x) thing was beyond me. Then one day in my first semester at University in my Introduction to Programming class my professor shorthanded a function declaration on the whiteboard as f(x), and all of a sudden so much of my middle and high school education made a whole lot more sense. If I would have had to opportunity to ‘program’ a couple of functions myself – with proper declarations and understanding why they were needed – the notation and purpose used in math class would have been significantly more relevant.

Programming is a useful skill in and of itself, but it is also the yin to math’s yang. It is time to make our students more well rounded by teaching them the possibilities of what a computing device can do, and show them how to apply math. Just like how kids will spend the first few years of their lives being taught how to read, without really being taught how to write, the elementary school years of math should be kept as is. But once it’s time to introduce variables into the math education, the students should be taught programming, so that they may begin to ‘write math’. Their understanding of math will grow significantly and they’ll pick up a useful skillset at the same time.