Difference between computer science and software engineering

NOTE: This blog post was inspired by this Reddit post

In my experience, many people do not understand the difference between computer science and software engineering. They want a coding career, not understanding they want the latter, not the former. 

Computer sciences usually defined as "the study of computers and computational systems". It is more about the theory and practice of computing, which involves testing and improving data structures and the algorithms to manipulate them to achieve some goal. It's not really programming per se, but meta-programming. But it's definitely about software and its efficiency, and possibly better ways of doing things, and the various trade-offs. 

Knowing computer science is NOT the same as knowing DSA (data structures and algorithms). Though they are usually taught together as basics to be discussed, as big O and computational efficiency is a big part of computer science. But different students have very different goals for learning them. Computer science students learn DSA as their fundamentals because they need to learn them in order to go onto even more complicated and complex algorithms. Software engineering students study DSA as basic TOOLS for problem-solving like you can't study geometry without a compass, protractor, and ruler. 

As a coder (i.e. software engineer or software developer) you are learning to PROBLEM SOLVE with programming. It's more about using the knowledge gained in CS to solve real-world problems, the way that engineering is about turning theory into something practical.

That's why computer science is NOT software engineering. Completely different fields.

Think of it this way: computer science is about creating and improving tools for the toolbox. Software engineering is about building something with the tools in the toolbox. 

If your school offers "software engineering" as a major, you need that. But if they don't have a separate major for it, and just have computer science, then get a computer science major. But if you have a choice of "concentration" that's more practical than theoretical, then take the more "practical" courses. 

If you are just self-studying, then it is important you understand the difference and research the right field. Yes, you do need DSA, but as TOOLS that you can use later, not as a basis for deeper study. 

Comments

Popular posts from this blog

Yet another take on recursion

Problem Solving for Programmers: a Neglected Topic?

How to Solve a Problem, with Examples