One of my favorite computer science professors, Mark Guzdial of Georgia Tech, writes a computer science education blog. It’s one of those things that is a must-read, on the grounds that it is current, interesting, and understandable.
Here is a recent post that has had me thinking:
At issue in the article is whether programming is mathematics. I think that line of thinking may not be helpful. My concern is that lumping all programming tasks under one hat will lead to bad generalizations.
Better would be to ask what kinds of problems are you trying to solve as a programmer? Depending on the problem, it may be possible to operate at a level of abstraction that masks away mathematical complexity. Or it might be that a person’s ability to find good, fast, elegant solution paths is very much dependent upon mathematics.
There is a difference between being able to write programs and being an awesome engineer–possibly to the tune of three hundred times the amount of productivity:
(If anyone has more recent information on the productivity topic, please drop me an email. I need to learn how to allow comments that are spam-resistant.)
I’m not saying that the productivity difference is all math skills, but wouldn’t it be helpful to know if there is a correlation? If that is a key component to two orders of magnitude of productivity, it would be misleading to say that “programming isn’t math”.
There is a famous Code.org video in which Bill Gates (amongst others) tells us that you don’t really need to know much math to do programming. I get the point that the barrier to entry for programming something good ought to be small. On the other hand, Microsoft didn’t come into existence because its programmers maxed out their mathematics educations at multiplication.
Talking about coding this way, to my thinking, conflates programming, coding, mathematics, and computer science in awkward ways. There is overlap, but the terms all have distinct, essential meanings. I think this may also diminish the importance and depth of computer science as a discipline. Given that society as a whole does not seem to get computer science and requires persuasion that it is an important academic discipline, that ought to give pause to any advocate of K-12 CS education.
Here’s the point… It would be instructive if the research world could come up with a typology of programming problem types that do not correlate with mathematics. Until that happens, making assertions about whether “programming is math” could lead to bad conclusions.