DEV Community

Discussion on: Computer Science vs Software Engineering

elmuerte profile image
Michiel Hendriks

The way I see it, is that Software Engineering is part of Computer Science. It's the part that is more focused on the practice of applying computer science. Software Development is an application of Software Engineering. And programming is a task you do in Software Development, just like problem analysis and debugging.

quoll profile image
Paula Gearon

I see it exactly opposite to this. Computer Science is a part of Software Engineering, not the other way around.

Computer Science, despite the name, is more a field of mathematics than of science. It is fundamental to how computer programs are designed and built.

Software Engineering applies computer science to real world applications, but also involves processes for design, implementation, management, deployment, and maintenance.

The more that Software Engineers know about computer science, the better they will be at design and implementation. However, Computer Scientists can be, and often are, ignorant of many elements of software engineering.

Thread Thread
stojakovic99 profile image
Nikola Stojaković

Umm, no, software engineering is a branch of computer science. Behind all those applied solution there is some math, in compiler which generates the Assembly code, in browser engine which draws layout on the screen, in various libraries which we use to write software, in algorithms implemented in the standard libraries of programming languages etc. Computer scientist doesn't have to know many details about software engineering, but good software engineer must know certain topics in computer science to write stable, secure and well performing software.

Thread Thread
quoll profile image
Paula Gearon • Edited on

No. I agree with most of what you have to say above, except that software engineering a branch of computer science. It is not.

Software engineering did start as an area of computer science in the 1960s. During the 70s to 80s the definition evolved:

... the scope of its challenge became clearer. In addition to its computer science foundations, software engineering also involves human processes that, by their nature, are harder to formalize than are the logical abstractions of computer science.

(from The Overview Report by a joint task force by the ACM/AIS/IEEE-CS)

As you say, computer science and math are behind all of the engineering. And just like other disciplines of engineering, the scientists don't need to know much about engineering, but engineers need to understand enough of the science to apply it. I definitely agree with you on that.

Thread Thread
matteojoliveau profile image
Matteo Joliveau

Funny enough, I see the two POVs at stake (CS is part of SE or viceversa) and I think I personally stand outside of this diagram. To me, both are separate parts of what in Italy we call "Informatica", or "computer technology", the broather ensemble of software and data processing.
CS is the abstract, mathematical, theoretical part and SE is the concrete, practical part. They complement each other and often build on each other's findings.

I think it's interesting that I seem to struggle to find an equivalent word in English to describe this broader field.

Thread Thread
quoll profile image
Paula Gearon

My own POV developed from my education. As an engineering student we learned a lot of science, but this was as a tool for engineering. Scientific research (i.e. the observation/hypothesis/testing cycle) was what scientists did. But if that was the case, then what did engineering researchers do? Well... sometimes they research practical techniques for applying science, but then that is science too. And sometimes engineers do purely theoretical work.

Then I went back to university and studied science. That's when I learned that many scientists research practical applications that I would have thought was more in the domain of engineering.

So the line is extremely blurry.

Despite there being no clear division, in general I still think that science is more about understanding theoretical underpinnings, while engineering is more focused on the application of existing science to the real world. But each does reach into the domain of the other. This applies as much to electrical engineering/physics, chemical engineering/chemistry, materials engineering/materials science, etc, as it does to software engineering/computer science.