|Think about Loose Coupling|
Re(4): (OT) Should math (or adv. math) be required in CIS degrees?by FoxtrotUniform (Prior)
|on Jul 26, 2002 at 22:04 UTC||Need Help??|
Congratulations, you've completely missed the point. We should teach CS majors calculus not so they can write numeric-integration code (which they'd be better off getting from Numerical Recipes instead), but so they learn how to analyze and solve problems in the context of formal rule sets. Programming fits that description.
I've taught undergraduate programming labs for the past three years: very concrete, applied stuff (the course is an introduction to software engineering; we teach them how to write programs, not how to write code that compiles). The classes are very eclectic: many CS majors (some interested in theory, some in practice), many engineers, and a strong minority of other Science, Arts and Business majors. The students who've taken courses involving more abstract formal reasoning (Math, Philosophy, Physics, etc) are consistently better able to understand the concepts and do much better on the coursework than the ones who focus on nuts and bolts. The best student I've had in that course was an English major with a minor in Philosophy.
Then what are they doing at a university?
You can't teach someone how to debug or optimize code. (Glub knows I've tried.) The best you can do is teach them how to think logically and abstractly about the code, which involves teaching them how to think logically and abstractly.
Math tends to be better at that than software engineering.
(CS theory/algorithmics is also good, but that's just another math course, really.)
The problem, in my experience teaching students and in the private sector, isn't that people know calculus, but not how to code: it's that they can't think abstractly about the code. They can catch syntax errors, but can't solve logic errors to save their lives (or jobs). With a very few exceptions, the people whose code has to be rewritten are the same ones whose reply to required math courses was "when am I ever going to have to use this?"