views:

1238

answers:

9

Something I think Jeff & Joel touched on in an early stackoverflow podcast, though I don’t remember if they reached a conclusion: which curriculum is better preparation for a career as a developer and software entrepreneur, computer science in the liberal arts college, or software engineering in the engineering school? or, put another way, which credential should I look for in someone being added to my team, or to hire for my company (if I had one . . . )?

Edit note: initial post mistakenly asked to compare computer science with computer engineering, rather than software engineering, and some answers relate to that question.

A: 

I think first you have to define what you mean by "computer science" and "computer engineering". There are a lot of folks out there who use the terms interchangeably, or choose to use one or the other based on which model (science or engineering) they think computer programing should aspire to without any actual difference in a program's content.

Chris Upchurch
+3  A: 

Computer Engineering will give you more hardware understanding. Capacitors, Inductors, Transistors (mosfets, bjts.) FPGA, signal analysis (both continuous and discrete), and so on. Computer science seldom goes into more depth than bits.

Although any good program, CS or CE, will teach you IEEE 754 and the like. Both should offer algorithms courses. CS would likely focus more on algorithm design, but both will cover big-oh.

You might be more curious about comparing Software Engineering to Comp Sci. From my understanding they are very similar, but soft eng has a couple extra engineering courses on the stuff mentioned above. Although in less detail than a comp eng curriculum.

You can compare the Computer Engineering, Software Engineering, and Computer Science programs at my university.

Rob Rolnick
i think he asked not "computer engineering," but "software engineering," which is the application of theories studied by computer science such as run time vs space trade off, algorithmic analysis, fundamental definition of computing, etc.
Haoest
+1  A: 

Computer Science is about the theory of computing, it will prepare you somewhat for a career as a software developer (but by no means will be sufficient). Computer Engineering is a branch of Electrical Engineering concerned with both hardware and software, it will prepare you somewhat for a career as a software developer (but by no means will be sufficient). Take whichever appeals to you, after your first job, your degree will not matter, only your experience and knowledge will. To wit, here is a team I had 3 years ago: 1 Phd-Civil Engineering, 1 Masters Finance, 1 Master Chemical Engineering, 2 Master EE, 3 no degrees, 3 CS BS/MS, 1 Master Aerospace Control Systems.

Tony BenBrahim
+1  A: 

This was covered a little bit under another question, but...

Computer Science is a bit more code and system focused, Software Engineering is a bit more procedure and people focused. At my university both courses had about a 50% overlap in core units/subjects.

Mark Glorie
A: 

Software engineering for the win!

pkoch
+1  A: 

While they compliment each other, and each are important, there is a big difference between Computer Science and Software Engineering. Computer Science is typically more focused on the coding side of the house, but seems to lack a strong focus on the non-coding side of things. This is where Software Engineering comes in -

  • How to gather good requirements and other needed documentation
  • Designing proper interfaces and UML diagramming
  • Writing up the project plan
  • Focuses on CMMI
  • Managing the people and the software project

In regards to your question of which one to hire for your team, the question should be which one can best strengthen my team?

  • Do you need someone who can write amazing code in their sleep?
  • Do you need someone who can see the bigger picture of how the application will interface with other software applications and networks?
  • Perhaps what your team needs is someone who can elevate your processes and procedures out of a chaotic state to a more repeatable and define environment.
Erdrick01
A: 

There's a huge difference in the programs at various universities, and also grey areas.

My university (Michigan Tech) for instance had a Software Engineering-like program as a "concentration" of Computer Science (College of Arts and Sciences), rather than being taught by the College of Engineering. There was also a Computer Information Systems degree, and an IS/IT Management concentration of Computer Science. I think by the time I graduated there was also an actual Software Engineering degree, but I'm not sure. There was also more of a systems/network admin program that was a concentration of Computer Science, as well as a very similar (but more practical/less theoretical) degree offered by the School of Technology. Other universities generally have similar programs, but they may not have the same names, and the one called "Computer Science" might not mean the same thing that another university thinks it does.

Also take into account electives (both in-major and otherwise). I took a databases class, a network admin class, a systems admin class, a networks class (theory/programming/algorithms rather than actually hooking up routers and stuff), etc. Other choices included HCI, 3d graphics, compiler design, higher-level algorithms classes, etc.

I think asking (at an interview) specific questions about what THAT PARTICULAR candidate knows is a lot more important than which of two different fairly closely-related majors they took in school. It's like choosing an interior decorator based on whether they majored in painting or sculpture in art school.

Basically, differences between schools and a particular student's choices of electives pretty much make them interchangeable, especially with a year or two of job experience.

Adam Jaskiewicz
A: 

Software Engineering maybe a better choice. Several states are starting to require PE (Professional Engineer) licenses for "controls". It can be argued that all software "controls" some type of hardware. This means you, or the company you work for will be required to have a licensed PE on staff. People without an engineering degree are not eligible for a PE license.

This is not an issue today, but it could easily become one in the future.

Something to consider.

Jim C
A: 

First, should you hire a CS or SE major? You need both. Although, in many cases, you would probably need fewer SE majors than CS majors in the mix. Here is my detailed description of the difference between CS and SE aka Software developer vs Software engineer