Skip to main content
GameDev.net gamedev.net
🔒 Locked

Difference between Comp. Science and Software Engineering?

Started by Cloaked Figure Mar 28, 2009 at 12:12 PM 6 replies 1.5k views
Original Post
Cloaked Figure
Cloaked Figure
I have to make my college choices soon, and I have read a lot about these two but still don't get it. What is the blarging difference? I want to take the thing that teaches Programming. Which one is that? Pretty sure it's computer science but I want to be 100% sure. I'm tempted by that 'engineer' tag...
Wyrframe
Wyrframe
As far as I'm concerned, it's a purely rhetorical or semantic difference.

However, when I do see them separated... one usually is focused on code monkeying, network and server installationm configuration, and maintennance, the theory and use of databases, and the development of lots of small tools or modules in a greater app. The other is focused on code monkeying, software architecture, software maintennance, patterns, algorithms, and the development of some small-scale real-world applications, usually in groups.

Problem is, which is which varies widely, and places that only have one tend to overlap the two very strongly, or at least give the option to overlap them in the electives. I myself have a B.Sc. Computer Science, and happen to consider myself a Computer Scientist because I work in a much broader scope than just software development.

Your results may vary.
RIP GameDev.net: launched 2 unusably-broken forum engines in as many years, and now has ceased operating as a forum at all, happy to remain naught but an advertising platform with an attached social media presense, headed by a staff who by their own admission have no idea what their userbase wants or expects.Here's to the good times; shame they exist in the past.
Drew_Benton
Drew_Benton
Quote:
Original post by Cloaked Figure
I want to take the thing that teaches Programming.


Then you'd want to choose option C; none of the above [wink]

There is a lot of overlap between the two majors and the differences will vary based on where you go to college. In some places, they are essentially the same major in terms of the courses you have to take. In other places, there are a strong distinction between them. As a result, I won't try to explain the technical differences between the two since the interpretations of the two will vary greatly on the education program as well as where you live geographically. I.e., I have a degree in Software Engineering, however I cannot legally call myself a Software Engineer in Texas due to laws requiring anyone who have the word "Engineering" in their job title to have actually passed the engineering certification exam (see Texas Board of Professional Engineers site).

Either way though, neither teaches you "how to program". They will give you bare minimal basics, but that's it. Colleges expect that you learn how to do that on your own time. They might offer some "Intro to Java/C++/etc..." classes, but you are expected to know how to use C/C++/Java. Most classes will allow you to choose which language to implement your projects in, but sometimes you have to use one particular language. For example, in our Operating Systems class, we had to use C (only C, no C++) for a few projects. In our intro to data structures class we could use Java or C++. In another class we had to use Bash on unix (no Windows, no Linux). I think you get the idea; it just varies from class to class as to what you will learn and be taught.

That being said, you will need to pull up the degree plans for both degrees and compare them, item by item to see the overlap and see the differences. That is your best bet in seeing which direction to go. At the university I went to, University of Texas at Dallas, there were minor differences at the time I was pursuing my degree, but now there are more differences. If you'd like to look at the degree programs at UTD, here are the links for the CS Program and the SE Program. You should notice the overlap I am talking about as well as a few core differences.

Good luck!
Cloaked Figure
Cloaked Figure
Yea, I figured as much. And, I'm learning C++ at the moment, so that base is covered. :)

I guess I understand the difference a bit better now. Problem is, the brochures for some colleges list both, some list only comp science and other list only software engineering.

This deciding my future thing is a lot harder than I thought :grin:

thanks guys!
Daniel B
Daniel B
Neither of the degrees will teach you how to program. Here are the differences though:

Computer Science: Focuses on theory and how things should work, you will learn lots of algorithms and things of the sort.

Computer Engineering: Focuses on the application of computers in the real world.

From my professional experience, computer science grads focus way too much on theory. The problem with that is that in business, an ideal application is almost never possible. My boss (who has been in the industry for many years) says that he has had to fire more computer science grads than any other degree (none included) put together.

I am at this time a computer engineering student.
WavyVirus
WavyVirus
I studied in the UK. At my university, both courses offered the same programming classes. There was a fairly large intersection (about 80% of the first year). In the programming classes, they show you the various types of loops, variable assignment, if/case statements etc. You are expected to work on applying these to problems yourself, but the assignments generally eased people in gently - the first half-year basically is spent bringing everyone up to a baseline level of knowledge, due to the widely varying experience people come in with - some had coded for money before, a few had never coded at all.

Quote:
Original post by Daniel B
Neither of the degrees will teach you how to program. Here are the differences though:

Computer Science: Focuses on theory and how things should work, you will learn lots of algorithms and things of the sort.

Computer Engineering: Focuses on the application of computers in the real world.

From my professional experience, computer science grads focus way too much on theory. The problem with that is that in business, an ideal application is almost never possible. My boss (who has been in the industry for many years) says that he has had to fire more computer science grads than any other degree (none included) put together.

I am at this time a computer engineering student.


I'd pretty much agree with the distinction between the two courses. Computer Science is exactly what it sounds like - it focuses (to a varying degree depending on the college/university) on the theory of algorithms, computation, data structures etc. It is more maths based.

But I'm not sure about your generalisation about effectiveness in industry - true, often a computer science graduate will start off with less directly applicable practical knowledge, but will have the ability to pick-up on ideas and techniques very quickly as they are underpinned by a solid theoretical knowledge. They are still taught software development methodology. As a CS graduate I am sometimes able to apply techniques to my work that my SE colleagues do not know about or understand.

I could turn your argument around by saying that, in my experience, many graduates of software engineering/information/business focused degrees in computing have no idea about running-times and algorithmic efficiency, computational correctness or an in-depth grasp of logic. They will implement something and not even realise it is O(n^3) when it could be O(n^2) while a CS graduate will always be mindful of such things. Some are only good for applying the work of computer scientists to particular problems, and don't understand how the algorithms and components they use actually work.

Of course these are unfair generalisations - really, it depends on your taste as with hard work and ability you will be able to be quite effective after any such course. If you enjoy maths and theory, or want to get into research then comp. sci. is probably for you. If you want to dive straight into implementation but perhaps sacrifice SOME knowledge of the underlying principles and history of computational techniques then SE is probably for you.

The job you are aiming for may also have some bearing on your choice. Many development jobs will be making use of solid software and libraries to create desktop applications, with the implementation of a hashing or sorting algorithm being fairly useless knowledge (go SE). Other jobs, however, might deal with low-level implementation of numerical methods for weather prediction or analysing scientific data or something like that (go CS)...

[Edited by - WavyVirus on March 29, 2009 12:54:18 PM]
RabblePants
RabblePants
Computer Engineering and Software Engineering is not the same thing, don't make the mistake of mixing them up.

That said, to the OP's exact question, Software Engineering is a subset of Computer Science, a specialization if you want to go that far.

Computers are everywhere and involve so many different things - hardware, software, social issues (eg. online bullying), history, law, algorithms, mathematics, etc etc. As such, the general term encompassing everything related to computers is Computer Science. That includes Software Engineering.

Software Engineering, specifically, are all the theories and applications of writing better software using better tools, processes, design patterns and so on. Software Engineering itself will not teach you how to program - but it will teach how to program well. But, again, S.E. falls under Computer Science, and is not separate from it.

If you go to a strong school Computer Science school, you'll learn plenty about Software Engineering. Not so much the other way around. Software Engineering, for example, will not teach you about Software Patents and why it's such a controversial issue. Nor will SE teach you algorithms and different approaches to creating new algorithms. That is because those are also different facets of the Computer Science "umbrella" term. Computer Engineering (since it was mentioned before), also falls under Computer Science, and is a whole 'nother can of worms :)
Aik
Aik
My experiences with a software engineering major have been less than good. It might just be because the course convener for this is one of those experts in his rather narrow field, but two of the three courses for this major I've done have focused on multi-million lines of code systems for, say, the military or emergency services type stuff. This makes it pretty much irrelevant to my interests (and yours too, probably, seeing where we are). The other course focuses on business systems, which is more useful and down-to-earth but still off-base. I really don't think any of it applies to how the games industry works.

Hopefully this isn't the state of things everywhere, because the main techniques being taught seem useless to any project that isn't utterly insane.



Topic Locked

This topic has been locked by a moderator. New replies are not allowed.

Sign in to reply to this topic.