In a recent note to the ACM column Inside Risks (January, 2006), Professors John C. Knight and Nancy G. Leveson provide a list of deficiencies in the computer science and computer engineering degree programs regarding a software engineering education.
Although they do not provide any data on the number of programs they have analyzed, we understand that these programs are from several different universities in the US. These programs are responsible for the elite of professionals that will work in the software industry. As such, it is really provoking that so many important points are not been properly covered.
One possibility, long advocated by Professor David Parnas, is the existence of degrees in software engineering as there are degrees in civil engineering, aeronautics engineering, electric engineering, and nuclear engineering. These are some of the so many particular engineering domains where very specific knowledge is needed, but with a solid basis of engineering.
The final sentence of the note says: “A better alternative might be for more institutions to do what a few have done already, develop degrees in software engineering.”. However, there are very few institutions with a particular degree in software engineering. Why is this so? One reason, I believe, is the dispute from the viewpoints of computer science and engineering. It is hard from faculty on these two different camps to agree on what should be core knowledge, and several from computer science camp do not see the value on down to earth engineering practices. It is also usually said that to graduate a software engineer it would be necessary to have stronger basis, like calculus and physics, and there are not such stronger basis in computer science.
I am for university programs in software engineering. I believe that society needs better software engineers, but this pressure is not that clear, maybe because it is hard to understand what are the responsibilities of a software engineer (see my previous note on why software engineering is a must).