Computer Science != Software Engineering
I like to think the title of this blog post is common knowledge, but I still see places where the terms are used interchangeably all too often. As Dijkstra is often quoted, "Computer Science is no more about computers than astronomy is about telescopes." Yet, at most universities, the closest thing you can get to formal training in Software Engineering is a degree in Computer Science.
My own college, NC State, was (and is) no exception. I still prefer the approach I took to others that come to mind (a different degree, or a technical school, or some kind of certification approach), but that doesn’t mean I don’t see an area for improvement. If you’re in college (or soon will be), wouldn’t it be nice to be able to focus on software engineering – basically, applied computer science, if that's your interest?
I’m curious what folks out there think we should do – or maybe what various schools out there ARE doing – to prepare the software engineers of the near and not-so-near future.
· Should schools provide a software engineering focus for Computer Science Degrees (there were semi-formal database, graphics, and AI foci available at NCSU when I was there)?
· Should Software Engineering become a formal degree in its own right? I imagine accreditation is the challenge here, but I don’t know.
· Is this something that should only be addressed at the postgraduate level (I don’t think so, but I would like to hear arguments for it if any come to mind)?
The gap between the ‘vanilla’ CSC program at NCSU – when I was there – and the skill training I would have liked (with 20/20 hindsight) would be a more in-depth look at these areas:
- Software development lifecycles
- Large-scale software projects
- Software testing
- (If you're feeling really motivated) A soc or psych class on work-life balance - this isn't really specific to software engineering, but I know 'programmers' are often the poster children for poor work-life balance.
There was a single required class that briefly touched the first two of those areas at NCSU; I tend to think each deserves at least a semester-long undergrad class in its own right. But of course, only if you want to either become a software engineer of some sort professionally, or want to study one or more of those areas academically – so making them all required in the standard Computer Science curriculum doesn’t necessarily make sense.
As always, I’m curious to hear other perspectives – what do other schools do (perhaps even what NCSU has done since)? How would you get more of the ‘professional groundwork’ into college coursework (or do you think it’s unnecessary)?
Comments
- Anonymous
July 13, 2005
My alma mater, Michigan Tech, added Software Engineering as a degree, right after I graduated with a CS degree. MTU is an engineering school to begin with so it make sense that they would add software engineering, although it's nothing like any of the other engineering disciplines and is taught by the CS department.
Info at: www.cs.mtu.edu - Anonymous
July 13, 2005
Interesting. I should have elaborated a bit on NCSU - Computer Science is in the College of Engineering. It's also traditionally an engineering school. I understand many schools have Computer Science organized under or alongside their math programs (NCSU's math programs are in the college of physical and mathematical sciences - PAMS). - Anonymous
July 13, 2005
My University, Reykjavik University (http://www.ru.is) has a Software Engineering degree and a seperate CS degree. The two paths are radically different where the engineering degree focuses more on mathmatical aspects, formal methods, structure, etc. The CS degree is actually split into several CS "domains" so the selection is quite broad.
J# - Anonymous
July 13, 2005
My alma mater, Iowa State University, has the Computer Science department under the college of Liberal Arts and Sciences. There was some talk of converting it all into the college of Engineering as a Software Engineering degree, but it hasn't happened and the last I heard on the discussion was years ago.
There's never been any discussion about having both a software engineering and a computer science degree, it's always been talk of one or the other. - Anonymous
July 13, 2005
The trouble with looking around at computer degrees and thinking to yourself that there's not one that covers what I need/want to know, and then going to do professional courses/qualifications, (MCSD), instead, is that I'm left with no degree to my name, which is a show stopper for working abroad, especially the US. Oops! :) - Anonymous
July 14, 2005
Purdue when I went there are there were at least 5 majors for computers.
School of Technology has the closes to a SE degree.
School of Science has the CS
School of Engineering has 2 Majors
School of Business has degrees
They probably have more now