View Full Version : Software Engineering vs Computer Science

02-04-2005, 02:12 AM
Topic is fairly self explanatory....which would you go with and why?

What are the advantages and disadvantages of each?

Thanks in advance :)

02-04-2005, 07:20 AM
Computer Science - It is the standard "programming major". It has been around and defined for ages. When someone hires a computer scientist, they can expect them to know C/C++ or Java or both and most likely other languages. People know what it is and will understand your background without much explaination. You can get a Masters in Computer Science.

Software Engineering - a new breed of programming major. Not all major schools even offer it. No one is really sure what it means or how it differs from CS other than the people teaching it and the schools offering it. Major companies will be confused by it and they will ask you what sort of classes you took. Several schools don't even have an accredited program for it since it hasn't been around long enough for someone to graduate from those schools with the degree.

In short, I'm not even sure what Software Engineering is, but I think it's a crappy attempt for people to call themselves "engineers" when they're just programmers. Is there engineering in programming? Maybe.... but if you're strictly programming based off of proven models, I don't think there is much engineering going into it.

That's my take on it anyways. I'm sure someone will refute it because I think there are a few people here taking Software Engineering.

EDIT: Further reading... and there are some good articles there.

EDIT 2: Apparently I forgot to post the link, or the board decided to remove it. http://www.google.com/search?q=computer+science+vs.+software+engineering&sourceid=opera&num=0&ie=utf-8&oe=utf-8

02-04-2005, 07:39 AM
I think of Computer Science as your standard code monkey. To me, Software Engineering is actually desiging the programs, and then writing them. The difference is really small-to-none, though, since plenty of CS's design their programs, too.

02-04-2005, 07:49 AM
I found this on the net. http://www.comp.lancs.ac.uk/computing/resources/IanS/
Software Engineering i think is more broad than CS, as it focuses more on hardware than software, maybe thats why they call it engineering.

02-04-2005, 08:03 AM
Software Engineering also offers extra things that you don't normally get in computer science, i.e embedded systems development.

02-04-2005, 08:11 AM
At my university, Software Engineering earns you a Bachelor of Engineering, whereas CS earns you a BSc. Can't see that much difference, except CSers can expect to go into the theory behind things more often.

Also the Royal Navy decided I couldn't train to be an Engineering Officer because my course (CS) didn't have engineering accreditation (or something like that, the recruiter was mumbling a bit), even though where I am it gets the same as most engineering courses. Losers.

Bitter? Me? :rolleyes: :p

02-04-2005, 08:12 AM
I think that really depends on where you go. Our CS majors all had to take an embedded systems class.

02-04-2005, 08:29 AM
> you're strictly programming based off of proven models, I don't think there is much engineering going into it.
If bridges/houses/cars/planes/skyscrapers were built like software, the world would be in chaos. Are you suggesting that all these activities are devoid of any real engineering?

Knowing how to slap a couple of bricks together for a barbeque doesn't mean you have the knowledge to build a house for example, or laying a tree across a small river doesn't mean you're a professional bridge builder all of a sudden. Engineering answers questions where most people don't even realise there was a question, let alone how to find the answer.

Computer Science is abstact - you study things like algorithms, data structures, numerical methods for computation, set theory, network theory, logic theory etc. It's entirely possible that you could get through a CS degree without ever learning a real world language. Even if you get taught a language, I've seen way too many professors who still think void main is a good idea to believe that the language taught was anything but a means of getting the students to do the homework (not a solid foundation for future employment). You might end up being able to tell the difference between a C compiler and a slice of toast, but that in itself doesn't make you a competent programmer.
If the course teaches you how to program, then that at least is more useful than knowing the syntax for a programming language. For once you know how to program, figuring out how to apply that to any programming language isn't that hard.

Software Engineering is about how to construct large real-world programs using real world languages, which actually do what was intended when you started on the project.
For example, SE should teach you about Requirements and Design. If you don't master both of these then the chance of delivering bug-free programs the user wanted are about 0%, no matter how good a programmer you are.

Without Requirements, you'll deliver a bug-free program (you did the design), but it won't be what the customer wanted.
Without Design, you'll deliver a bug-ridden program (no design), but the bits which do work eventually will be what the customer wanted.

Then you need all that CS stuff (algorithms etc) which allows you to take the design and produce efficient code which does the right thing. You might be a good software designer, but if you do something dumb like using bubble sort instead of quicksort, you still lose.

SE should also teach you about how to test your work - like how do you test your requirements to see if they are both complete and consistent, or how to test your design to make sure it reflects the requirements.
For example, if you'd specified an editor, you'd look a right lemon if your requirements only stated that you could load a file, but omitted to say that you could save a file.
Then there's actual testing of the software (both static and dynamic tests).

02-04-2005, 08:55 AM
One of the big focuses of SE is proving that a program does what it claims to do. One of my professors was telling us recently of a project going on at a university where they are attempting to prove the entire system works: the program, the compiler, the os, the electronics, everything that is involved in the decision making process.

02-06-2005, 12:42 PM
I'm studying Software Engineering at Soton Uni at the moment. It's identical to the Computer Science course for the first two years (fundamentals of programming, algorithms, discrete maths, hardware, electronics et cetera)... then splits off to focus more on the design and development process for large commercial applications.

02-06-2005, 09:55 PM
I think I've decided to go with Computer Science with a minor in Business.

A lot of what I've read sounds like ultimately, CS and SE will get you to the right place if you play your cards right, but CS has more scholarships at Waterloo :P