During my first few years I worked at Microsoft the focus of my job was higher education computer science. In that role I visited many computer science departments at different universities. I found that computer science programs developed out of different areas in different universities. In some CS came out of mathematics. In others computer science came out of engineering. In a few the departments grew out of the school of business. The latter probably comes as a surprise to some people. But of course a lot of business it mathematical and computational. In any case I found that the computing focus was different depending on where the computer science (by that or other name) grew from.
Last week Mark Guzdial pointed readers to a blog post titled Programming is Not Math. I linked to it in my interesting links post but I’ve felt the need to say more on the subject. Especially after some of the comments on Mark’s post. I don’t think there is any real doubt that programming, math and computer science are related to each other. There is some overlap but they are also not synonymous.
We don’t say things like business is not math or engineering is not math. I think that is because we, generally, understand what engineering and business are. While we know that math is involved and is important we don’t conflate math with engineering or business even though it is important to both topics. And yet the lines between math and computer science seem to easily get blurred.
A lot of that contributes to the idea that one has to be good at math to be good at programming or computer science (two things with overlap but which are also not synonyms.) In comments in Mark’s post you can read people saying that a lot depends on how you define programming or math. And that is true.
Programming, to focus on that for a bit, definitely depends on logic which does have a basis in mathematical thinking. Or philosophical thinking – logic is a key part of philosophy. Some of the best programmers I know have their formal academic training in philosophy. So is programming philosophy? Seems like a funny question but arguably the logic aspects of philosophy and programming have a lot in common.
Programming is related to many things but that doesn’t make programming the same as any of those things. Assuming that one of those things (math for example) is required to get to programming or that being good at mathematics means one will be good at programming is not a sure thing. It probably can’t hurt though.