Computer science and software engineering may sound like interchangeable terms — and indeed, the skills that each field will teach you overlap considerably.
Yet there are important differences between computer science and software engineering. Depending on your interests and career plans, pursuing one field or the other is likely to be a better fit for you.
- What Is Computer Science?
- What Is Software Engineering?
- Similarities Between Software Engineering and Computer Science
- Key Differences Between Computer Science and Software Engineering
- Career Differences: Computer Science vs. Software Engineer
- Which Degree Is Right for You? How to Choose Between CS and Software Engineering
- Becoming a Software Engineer with a CS Background (and Vice Versa)
What Is Computer Science?
Computer science is a field dedicated to the study of computers. It deals with computers and related technologies of all types — from computer hardware and software, to networking, to storage systems and beyond.
Thus, if you study computer science, you'll learn about a broad range of technologies. They include but are not limited to:
- How operating systems work
- How to write and compile software
- How to connect computers over a network and far beyond
- How to debug and troubleshoot hardware and software
- How to assess user needs and align IT systems with them
In short, computer science teaches you everything about how all aspects of computers work.
The depth at which computer science programs and computer scientists cover the topics at play in computer science can vary. Most computer scientists are not complete experts in every aspect of computer science; instead, they specialize in certain areas, such as hardware or networking. But they are expected to have a relatively rigorous understanding of computer science as a whole so that they can pursue their specialized interests.
What Is Software Engineering?
Software engineering is a subfield within computer science that deals with the design and development of software.
Software engineering encompasses topics such as:
- How programming languages work, and the differences between popular programming languages
- How to select an application architecture (such as a monolithic or microservices-based architecture)
- How to implement and manage CI/CD pipelines as part of the software development process
- How to test software to ensure it meets quality, performance, and security requirements
- How to deploy software into production environments, and different strategies (like progressive deployment) for reducing risk during the deployment process
Software engineering, in other words, focuses on everything required to design, create, test, and deploy software.
You can also expect software engineering content to touch on related topics, such as how a computer's hardware configuration or the design of a network will impact software. But software engineering only deals with topics like these to the extent necessary to manage software systems. It doesn't go into the level of depth that computer science as a whole would.
Similarities Between Software Engineering and Computer Science
Software engineering and computer science overlap because they both deal, at least in part, with software systems. In software engineering, software is the core focus. In computer engineering, software is not the only area of focus, but it is one of the primary subfields that computer scientists study.
It's worth noting, too, that software touches virtually every aspect of computer science, which means you can't "do" computer science without understanding software. If you're learning about how to design and build hardware as part of a computer science program, for example, you'll need to understand how hardware interacts with software. Likewise, if you're studying computer networking, you'll need to understand how software programs exchange information over networks and how software-based networking can complement traditional approaches to network management.
Because software is essentially inextricable from computer science as a whole, you could argue that software engineering plays a more prominent role in computer science than other subfields of computer science. You could specialize in computer hardware without knowing much about networking, for example, because not all hardware connects to a network. Or you could design networks without studying storage systems because not all computer networks include storage resources. But it's hard to imagine doing computer science work of any type without dealing with software at some point along the way.
Key Differences Between Computer Science and Software Engineering
The main difference between computer science and software engineering is that software engineering is only one aspect of computer science. Computer science includes other fields — like storage and networking — besides software engineering. This means that computer science involves exposure to a broader array of technologies and concepts than software engineering.
In addition, computer scientists typically don't specialize in software engineering and development at the same depth as software engineers. If you study computer science, you'll learn the basics of software engineering, like how a compiler works, and what the difference is between source code and binary code. But you probably won't learn in depth about different software development techniques or how to use software test automation tools to streamline quality assurance processes. Those details fall to software engineers rather than people who study computer science as a whole.
Career Differences: Computer Science vs. Software Engineer
From a career perspective, too, the outlook for computer scientists and software engineers can be a bit different.
If you have a background in computer science, you are likely to find it easier to apply for a wide range of jobs, since you can claim expertise in a wide range of computer-related subjects. In contrast, if you specialize in software engineering, you'll only be competitive for software engineering jobs.
Computer science experience also places you in a stronger position to work as a researcher or pursue a Ph.D. in computer science. Although Ph.D. programs in software engineering exist, it's more common for people seeking to pursue cutting-edge research about software engineering to do so as part of a computer science Ph.D. program.
Computer scientists and software engineers may earn different salaries, too. The salary range for computer scientists in the United States is about $65,000 to $200,000 and up. That's wider than for software engineers, who typically earn between about $90,000 and around $180,000 in the United States. (These salary figures are broad estimates based on currently available data; in some cases, the salaries in both fields can exceed the numbers mentioned here, and in rare cases they might be lower.)
The fact that the range of computer scientist salaries is wider reflects the broader set of specializations that people with computer science backgrounds might pursue. For example, if you get a computer science degree and become a hardware support technician — a role that tends to pay relatively little — you'll likely earn much less than someone with a computer science background who specializes in networking and lands a role helping to design networks for cloud computing environments.
With software engineering, the salary range is narrower because there is less variation between software engineers when it comes to the skills they have and the types of jobs they can obtain.
Lastly, note that computer science career paths are more variable than those for software engineers. If you have a software engineering background, you should expect to work in software engineering roles, unless you pivot by expanding your skill set in ways that make you competitive for other roles. But if you studied computer science, you can draw on your broader set of skills to pursue multiple potential career paths.
It may also be easier to jump from one area of specialization (like hardware management) to another (like networking) if you're a computer scientist because you'll have qualifications that deal with multiple fields.
Which Degree Is Right for You? How to Choose Between Computer Science and Software Engineering
How do you decide which type of degree — computer science or software engineering — is best for you?
The simple way to answer that question is to decide how passionate you are about software development relative to other IT roles and skills. If you can see yourself being very happy writing, testing, and deploying code all day, software engineering is probably the best degree for you.
But if you're interested in a broader set of technologies, or if you're unsure exactly which type of career you want to pursue, consider a computer science degree. It will expose you to more areas of specialization so that you can get a feel for what interests you most. It will also place you in a more versatile position for pursuing different types of careers within the IT industry — unlike a software engineering degree, which in most cases will qualify you only for work in software development.
Becoming a Software Engineer with a Computer Science Background (and Vice Versa)
A final piece of advice: Just because you obtain a degree in either computer science or software engineering doesn't mean your future is set in stone. If you studied computer science and want to specialize in software development but don't feel you have enough depth in software engineering to land a good software engineering job, you can always beef up your development skills by taking a coding bootcamp or teaching yourself to program. (For more guidance on how to beef up your software development skills, check out our guide to becoming a software developer.)
Likewise, if you studied software engineering but want to pivot to a different type of role, consider obtaining a certification in the new area. There are plenty of programs that offer online as well as in-person training and certifications in specialties like networking, cybersecurity, and cloud administration, to mention only a few. As long as you can demonstrate to employers that you've augmented your software engineering background with the training necessary to work in an adjacent field, a software engineering degree will be a boon, not a hindrance, to whichever role you want to pursue.
About the authorChristopher Tozzi is a technology analyst with subject matter expertise in cloud computing, application development, open source software, virtualization, containers and more. He also lectures at a major university in the Albany, New York, area. His book, “For Fun and Profit: A History of the Free and Open Source Software Revolution,” was published by MIT Press.