DEV Community

Ben Halpern
Ben Halpern Subscriber

Posted on

Computer Science vs Software Engineering

Let's compare and contrast the fields/disciplines of CS vs Software engineering.

Latest comments (49)

Collapse
 
philipoakley profile image
Philip Oakley

The distinction should be between "Science" (its aims and philosophy, and its prospects for doing good) and that of "Engineering" and it's view of the same goals.
Coding isn't either, in just the same way as lab technicians and electricians aren't "Scientists" and "Engineers" per se. Good software is more than just coding.

Collapse
 
jmplourde profile image
Jean-Michel Plourde

In Canada, engineer is a reserved title. You can't use engineer is you aren't a licensed engineer and license requires a 4 year bachelor degree in a certified engineering program. I'm currently a student in computer engineering and it is illegal for me to represent myself as an engineer or let someone present me as an engineer. The engineer order of my province has rules made for conventional engineerings like civil, mechanic, geology. Let's be honest, the boundaries of computer engineering are obscure. The engineering order does not even recognize restricted activities for computer engineers.

So for me, engineer needs (legally) to be about an activity made by someone who's a registered engineer and it involves applied science. I'm aware in USA and in other places where it's not regulated the same, engineering is the use of scientific principles to design and build machines.

As for computer science, IMO, it's all about applying computer theories to process scientific data.

Collapse
 
xowap profile image
Rémy 🤖

Indeed, I meant it in regard to people saying that bridge engineers can make a safe bridge and software engineers can't make anything safe and thus they are not proper engineers.

That asks a quite deep question of what is software engineering and what is just writing code that somehow works.

Collapse
 
wolfhoundjesse profile image
Jesse M. Holmes

I feel like we're doing all contrast here, so here's a tangent comparison: both disciplines tackle delivering content at scale.

A developer/coder/programmer could handle the flow of information, inputs and outputs, such as putting data on the screen, without regard to efficiency/scale.

Computer Science aids in selecting the right data structures and algorithms (both are math) to get the job done efficiently.

Software Engineering aids in ensuring that platforms can deliver the content to as many people as necessary in the most efficient and cost effective manner for a period of time until the infrastructure hoisting the content needs to be adapted or removed.

Collapse
 
jacoby profile image
Dave Jacoby

I get thinking about linguistics as a subfield of CS, especially how the fundamental ideas on how to create programming languages is derived from Noam Chomsky's early theories on how human language works.

But I see a lot of pushback ahead at the idea that the field which investigates how thoughts are expressed and understood by humans and other animals to be fitted under another field that's named after inorganic machines. And less and less when you get into the other fields named. And I'm on that team.

Collapse
 
hassanaskary profile image
Hassan Askary

Software Engineering is to Computer Science what Electrical Engineering is to Physics.

Collapse
 
burdettelamar profile image
Burdette Lamar

Science is "know what." Technology (engineering) is "know how."

Collapse
 
gypsydave5 profile image
David Wickes

I will one again quote Abelson and Sussman

[Computer science] is not really about computers -- and it's not about computers in the same sense that physics is not really about particle accelerators, and biology is not about microscopes and Petri dishes

And now Bauer

Software engineering is the part of computer science which is too difficult for the computer scientist

And finally I'll paraphrase Hamming

Scientists stand on the shoulders of giants; computers scientists stand on each others toes

Collapse
 
xowap profile image
Rémy 🤖

Oh I'm not sure of the difference between the science and the engineering but one thing I can tell for sure is that the engineering is not nearly deserving its title. Not entirely through the fault of its practitioners though.

XKCD cartoon where software engineers explain they wouldn't trust software to vote

If you listen to SpaceX's spokesperson, he explained that putting humans into space is one order of magnitude more difficult than putting things into space, and putting cargo into space is already damn complex.

Althgouh it doesn't mean that SpaceX is using other-wordly tech, in fact some parts even are made in JavaScript and everything is done with a familiar stack (Linux, C++, etc).

So why can they shoot a capsule at 7.66 km/s to reach a 80cm pin-hole in space but I can't get my app to work for all my users?

The answer boils down to time and methodology. My clients expect things to be delivered fast at minimal cost and they are (somehow) ready to compromise on reliability for that. If a few percentage of people get an issue, they're definitely not going to die but on the other hand making sure that those bugs don't happen would probably take ten times the same amount of time with extensive testing, coding the same thing 3 times and making sure that all outputs concur at all times, analysing communication charts and planning for every single failure a counter-measure, ...

Regular software is: the user clicks on a button, the API doesn't reply, try to display an error in a not shitty way and that's it.

Engineered software would be: the user clicks a button, the API doesn't reply so a specific experience is triggered diagnosing the cause of the error (network error? dead API?) then the user would be instructed to wait, probably you'd need to start a background process in case the user closes the page and then retry until the API works again and make sure that it always stays consistent with the state of the application that you're displaying to the user and that they receive a proper notification when the action is done no matter what they are doing now. And you do this for every single API call.

That would totally blow up software costs. So, we're using software science to do software, but definitely few of us are properly engineering their software (and for good reason).

Collapse
 
erimeri profile image
Erkand Imeri • Edited

How i view is that Software Engineering is Applied Computer Science. And Computer Science itself just as already posted before is a branch of mathematics dealing with computation.