Should a computer science degree require learning C ?
In his post questioning what should be taught to CS majors, Bijan asks “Should a computer science degree require learning C ?”
If a CS student plans to become a software engineer, definitely. Otherwise, maybe. Really this question brings an opportunity to highlight that there is an important distinction between the academic CS student and the vocational software engineer. The former doesn’t necessarily lead to latter, just as a physics major doesn’t necessarily lead to an engineering vocation.
A software engineer that has first hand understanding of the vagaries of pointers, type casting, memory management (and fragmentation), and even OS internals (whatever the OS) will be better able to appropriately research and choose from PHP, perl, ROR, or even Ada. C (or some other suitably “dangerous” language) can facilitate learning these.
BUT, what about the CS major that is focused on human-computer-interaction, math theory, or other research-oriented areas? Then whatever languages that compliment those goals are the “right” ones. Maybe C, maybe Java. Maybe even BASIC because that’s what the off-the-shelf microcontroller understands and the “extra” lessons of C aren’t germane.
Just as Physics, Chemistry, Math, and other science degrees are typically found in the Liberal Arts school, Computer Science should be found there. I think what is missing from most (all?) University systems is a software engineering degree that belongs in the engineering school, with Civil, Mechanical, and Electrical Engineering disciplines, each of which draws on courses from the science curricula.
2 months ago