FWIW, one major problem with the CE degree is that, since it's in the EE department, it's way too low-level - I get the impression that they learn more about the hardware than the software, and that the software engineering courses are just a stopgap way of differentiating CE from EE.
Dead accurate. The CE degrees that I have seen (well, the one I earned anyway) are just EE with emphasis on the practical design issues of computing hardware. The theories of computation and information, as well as the art of software design, are given superficial coverage. Since it is basically a EE degree, you have to take all the heavy-duty physics-based courses: circuits, electromagnetism, physical chemistry, physics, thermodynamics, mechanics, microcircuit design, power systems, and so forth. There are a few foundation courses like calculus, differential equations, and linear algebra that are useful for software engineering, but the tortorous physical science regimen drives many software people away screaming. (To the amusement of the real EEs.) A lot of them run straight to the waiting arms of the CS department, which is often a dissapointment if they wanted to be engineers.
I think it is high time for a software engineering (SE) degree. If you look at electronics, there are several levels of study: technician, engineer, and physicist. Technicians have a shallow (but competent) grasp of theory, and are expert at grabbing hardware with their bare hands and making it do useful things. Engineers have a thorough understanding of theory, and are skilled in using that knowledge to design useful systems. More importantly, engineers have a rigorous approach to doing their work: documentation, communication, requirements analysis, revision control, juggling resources, planning schedules, and so forth. The physicist develops and refines the theory through inspiration and experiment.
For software, the technician corresponds to the sysadmin/grunt programmer. They can assemble pieces and fix problems, and maybe design simple systems, but that's about it. The software engineer corresponds to the EE, and uses their knowledge of computer science, system design, and project management to design software systems. (But the lucky SE gets to fabricate their system with a compiler -- EEs pay $1000/lot to have their circuit boards fabbed, unless they're designing chips in which case it is more like $100k.) The software equivalent of the physicist is the true computer scientist -- the mathematician specializing in information theory and computation.
In the current sad state of affairs, the only thing offered by many universities is the "computer science" degree, which has too little relation to reality. And it's not just the lack of software engineering courses either -- engineering cannot be taught at a chalkboard alone. You have to learn how to approach a project, why requirements analysis is important, how to organize your thoughts and communicate them to your colleagues, why esprit de corps is important, and how to maintain enthusiasm over a long project. Without those things, you are just an overeducated technician. The only way to learn these things is by practice, preferably under the guidance of a master. But so few computer science programs have a continuing series of team projects, of ever increasing difficulty, culminating in an ambitious final project.
Not that EE degrees are infinitely better, though. Many new EE graduates are incapable of soldering or applying Ohm's law. They just slog through the program by sheer force of will. I don't expect total mastery of the mechanical aspects, but how can someone be a EE if they cannot join two wires together?! If it was up to me, each new EE enrollee would be handed a soldering iron as they step onto campus and given a new project every month. "This is my soldering iron. There are many like it, but this one is mine." The new SE students would get Unix accounts, and a new software project every month, with appropriately vague requiremens. "This is my CVS repository. There are many like it, but this one is mine."
(Dangit, Scoop ate my s during preview. And then it ate my attempt to preview . And I was following the teachings of the Prophets Strunk and White and putting the proper two spaces after the end of every sentence. [sigh] Looks like this place could use some software engineers. 8^) Failing that, at least give us some big-ass blinking gifs.)
I don't want the world, I just want your half.
[ Parent ]