## Code before Calculus

Jeff Atwood posted a thought provoking post that I very much wanted to disagree with. He argues that most people will not benefit from learning to code, and that coding is not at all similar to those fundamental skills (reading, writing, mathematics) that everyone should know. He’s certainly correct. Most of my friends and relatives do not know how to program anything, and they don’t suffer for that ignorance.

But the post bothered me. I don’t just enjoy programming, I enjoy teaching young people to program, and I have often told technically minded young men that it is essential that they learn programming skills. I also enjoy advanced mathematics, and I have very much enjoyed teaching calculus, linear algebra, probability, abstract algebra, and topology. Math is more fun for me than programming, but somehow …I don’t encourage bright young men to pursue mathematics. Moreover, since leaving academia, I haven’t looked for any opportunities to teach mathematics outside of my family. I do look for opportunities to teach programming, as I think it is an extremely useful skill, both for the professional opportunities, and for use in other technical vocations.

So Jeff is correct in that the notion that everyone should code is absurd. But let’s forget about “everyone” and ask ourselves what we should teach those bright young men that want to solve technical problems. Currently we teach them Algebra, Geometry, Trigonometry, Calculus, Biology, Chemistry, and Physics. For those of you that solve technical problems for a living, which is more valuable: coding skills or derivatives and integrals?

I don’t think I need to look up the numbers to convince you that far more men pay their bills with programming skills than with mathematics expertise. From my personal experience, as I was changing vocations from academia to software development, there was never a time that someone suggested that my calculus skills would be useful for a particular type of job. Moreover, I don’t know of anyone that regularly uses higher mathematics in work outside of academia without also using programming skills.

Programming isn’t for everyone. But is far more practically useful than Calculus, while still providing the benefits of exercising logical thinking skills. As one that loves mathematics more than code, but cares even more about training our young men effectively, it is time for programming to have a real place in the high school and college math/science curriculum.

Hey Eric,

I thought this was a helpful post. I have thought for a long time that learning to program is a wonderful way to teach a young person how to think logically and analytically.

ldweeksMay 15, 2012 at 2:52 pm

So, what about the menz? You teaching in an all-male akademi or something?

n8chzOctober 3, 2012 at 3:57 am

I only teach in situations of my choosing, I’m no longer a professor. I happen to think that there is more benefit in learning code or calculus for young men, and I’m more likely to seek out opportunities to teach young men rather than women. Maybe this will be the subject of a future post.

Eric WilsonOctober 3, 2012 at 6:55 am

sorry for commenting such a long time after the post, but I found you logic a bit… lacking

First, about your statement “more men pay their bills with programming skills than with mathematics expertise”. More men (and women also) pay their bills buy flipping burgers and tiding beds than thos with programming skills and mathematics expertise combined, should we start teaching kids to flip burgers from the grade school?!

Programming is a vocation, period! You can’t do anything solely with programming skills. And although I’m all for teaching young men and women to code, coding for the sake of coding is absurd. You teach someone calculus, and they’ll be able to further their interests in physics, engineering, bioogy. Same with algebra, same with any other higher math branch. Mathematics is a language that opens up new stacks filled with knowledge. Now, you teach someone coding… and they can automate a few of their homework tasks here and there, and maybe make their myspace page look a bit better (or whatever the new trending online social experience is). But it won’t take them any further. Now, I’m all with you if by programming you mean teaching them how to think algorithmically, how compilers and interpreters work, how to optimize routines, and so on, then I’m with you. But just teaching young people coding is just preparing them to be the “burger flippers” of tomorrow.

whatAugust 2, 2013 at 12:24 pm

I guess I disagree. I don’t think that programming is only a vocation, I think that it is a way of solving problems. And after a student has had twelve years of mathematics with no programming, I think that to tell the student that one more year of mathematics (calculus) will open up new worlds is silly. After twelve years of math, I think it’s time to learn how to solve problems like a real scientist, by having the computer do the hard work.

If that feels like burger flipping to you, then you must not be working on very interesting problems.

Eric WilsonAugust 2, 2013 at 12:52 pm

You can’t do science with high school math and programming. That said, don’t tell the student anything, just throw a physics or an engineering book on her desk. See how much she understands without calculus. And telling a student “learn to program to do science” is stupid.

And about that interesting problem you seem to be working on… will a high-schooler even understand the problem without advanced knowledge?

I’m not saying calculus is the answer to everything, but fundamental knowledge (be it math, physics, biology or what have you) surely precedes technical skills. A technical skill can be picked up along the way (most active scientists didn’t take programming classes in their youth), very hard (if not impossible for the overwhelming majority) to do the same with fundamental knowledge.

And calculus can be taught in a way that students will learn a lot more than simply become differentiating and integrating automata. After all, calculus was invented to tackle problems that are still very much relevant in our everyday lives.

whatAugust 2, 2013 at 1:37 pm

It is a mistake to view learning as strictly a means to the end of livelihood. Education also builds citizens capable of critical thinking. Computer science, I think, has something to contribute to that. Every student, whether tracked as “technical” or not, should know enough SQL to understand what a “table join” is, and what the civic implications of that are.

n8chzAugust 2, 2013 at 2:59 pm