Blog - /Quotes
While discussing my woes in several of my CS classes with a colleague over IM, he came up with this treatise on Computer Science at Purdue. I thoroughly enjoyed it.
to be honest with you, CS grads from here typically walk out with no real understanding of software engineering concepts
they're fundamentally lacking in everything from design principles ("here's some skeleton code to implement in, implement my design") to coding best-practices to a lot of language details of the languages they "specialize" in, not to mention they're often totally unfamiliar with some of the most critical and fundamental tools out there, like "make" and shell scripting
on top of that, the CS program doesn't prepare you for grad school in CS, at least not by itself
you really need a double major math+cs here to prepare for grad (as in phd-targeted, as opposed to "2 more years of undergrad" master's targeted) cs anywhere
we tiptoe around these fundamental concepts — incremental building, unit testing, using libraries, and the discrete math and number theory that's fundamental to everything we're working on — and the one semester (well, two semesters now) that that stuff is presented to us, we get selections of some of the worst profs in the department, and totally inconsistent material
(the algorithms profs can't even agree on a textbook between them, much less what material needs to be taught)
but it is getting better, with things like the introduction of 182 and encouragement of undergrads to take discrete math, it's just that there's so much mind-numbing pointless work ...
I took networking with Yau, and we spent one project picking apart packet dumps bit-by-bit, and another project using a udp library to implement some halfassed non-checksumming tcp, and never once in the course touched a real socket library, always deferring the actual socket work to these crappy wrapper apis that shielded us from having to learn how to actually write network code ...
they wonder why CS is losing popularity as a major? because it's a horrible, twisted curriculum with no clear standards, no decipherable goal, and no accreditation (at least here) and the faculty is so adamantly opposed to submitting the CS curriculum to ABET certification, because it would "destroy their freedom to teach the class they want to teach"
like most of these profs are some sort of great innovators, or like it would be so bad to have some sort of fundamental guiding principle behind "introduction to the analysis of algorithms" that spans more than the mental address space of a single whimsical professor who'd secretly rather be researching number field theory instead
(oops! you set me off :-p)
anyway, the thing about all of that is, while it doesn't prepare undergrads here for academia, doesn't give them a good understanding of theory, etc ... it DOES prepare them pretty well for the 'real world' (as far as commercial software goes, anyway), because working with real customers is very much like that ... "here's a set of vague specs, make what I want, oh, and when you're done I'll fundamentally change what I want to make you reimplement it, for the same cost, because I don't know what I actually want or why I'm asking for anything at all"
Used with permission.
Add a comment