Boot.dev Blog ยป Computer-Science ยป Should You Learn Computer Science or Software Engineering?

Should you Learn Computer Science or Software Engineering?

By Winston Wagner on Dec 17, 2020

The most important thing to understand about these two fields of study is that, ultimately, they are similar. At the end of the day, Software Engineering and Computer Science will both help to make you a better programmer and developer, and the only difference between the two is how they are applied. Software Engineering tends to be more practical, and Computer Science tends to be more theoretical. In a way, Software Engineering is just applied Computer Science, and using that as a starting point, we can examine the differences between the two.

The Differences

Software Engineering is the study of how software systems are built. While studying and practicing Software Engineering, there is a distinct focus on the following topics:

  • Application development
  • Project management
  • Quality assurance
  • Software testing and maintenance
  • Clean code and clean architecture
  • Security
  • Continuous integration and continuous deployment

By contrast, Computer Science tends to have a less practical and more theoretical approach to its study. The study of Computer Science can include (but is not necessarily limited to):

  • Artificial intelligence
  • Machine learning
  • Cryptography
  • Graphic development
  • Algorithms and data structures
  • Quantum computing
  • Distributed consensus

As you can see, Software Engineering has an obvious focus, while Computer Science can be viewed as a more renaissance study of theoretical computer applications.

Come to the dark side

HTML Courses

Regards and sorry for the interruption, Lane here! I built Boot.dev to give you a place to learn back-end development the...hard way? I mean easy? Maybe the "heasy" way? I don't know.

It's hard because you will have to write code... like a metric ton of code. It's easy because my courses have a built-in game that's pretty darn fun. Give it a try.

The Overlap

Of course, while there are plenty of differences between Computer Science and Software Engineering, there are many more similarities. As Software Engineering is basically just an applied form of Computer Science, it stands to reason that understanding both enhances the understanding of either. Any Computer Scientist benefits from understanding the practical applications of their craft - in the form of software development, technology management, and the result of programming.

By that same token, Software Engineers that have a deep understanding of Computer Science principles tend to command a higher salary and are able to solve more technically challenging problems.

As for actually attending school for both Software Engineering and Computer Science, there is actually a great deal of overlap between the two as far as classwork is concerned. In fact, it would easily be possible to begin down the path of one and, having changed your mind, start down the path of another.

Class Requirement Comparison

Because smaller colleges often provide more insight into a “standard” course load, let’s compare the differences and similarities between a Software Development (Software Engineering) degree and a Computer Science degree from Dixie State University, a mid-size college in southern Utah.

Software Development (Software Engineering) Class Requirements

Class NumberClass Name
Core Software Development Discipline Requirements
CS 1400Fundamentals of Programming
CS 1410Object Oriented Programming
CS 2420Introduction to Algorithms and Data Structures
CS 2450Software Engineering
CS 2810Computer Organization and Architecture
CS 3005Programming in C++
CS 3200Web Application Development I
CS 4307Database Design & Management
CS 4600Senior Project
ENGL 3010Professional Writing and Business Ethics
IT 1100Introduction to Unix/Linux
MATH 1210Calculus I (MA)
WEB 1400Web Design I: Fundamentals (ALCS)
Discipline Elective Requirements - 8 of the following:
CS 3010Mobile Application Development for Android
CS 3020Mobile Application Development: iOS
CS 3400Operating Systems
CS 3410Distributed Systems
CS 3440Software Practices
CS 3500Application Development
CS 3520Programming Languages
CS 3600Graphics Programming
CS 4200Web Application Development II
CS 4300Artificial Intelligence
CS 4320Machine Learning
CS 4550Compilers
IT 2400Intro to Networking
Complete nine credits from the following courses: (Choices from above may not be repeated here)
CS 3010Mobile Application Development for Android
CS 3020Mobile Application Development: iOS
CS 3310Discrete Mathematics
CS 3400Operating Systems
CS 3410Distributed Systems
CS 3440Software Practices
CS 3500Application Development
CS 3510Advanced Algorithms/Data Structures
CS 3520Programming Languages
CS 3530Computational Theory
CS 3600Graphics Programming
CS 4200Web Application Development II
CS 4300Artificial Intelligence
CS 4320Machine Learning
CS 4550Compilers
CS 4920RInternship
CS 4990Special Topics in Computer Science
CS 4991RCompetitive Programming
IT 2400Intro to Networking
IT 3100Systems Design and Administration I
IT 3110System Automation
IT 3150Windows Servers
IT 4200DevOps Lifecycle Management
IT 4500Information Security
MATH 1220Calculus II (MA)
MATH 2210Multivariable Calculus (MA)
MATH 2270Linear Algebra
MATH 2280Ordinary Differential Equations
MATH 3400Probability & Statistics
WEB 3400Web Design II: Essentials (ALCS)

Software Development Degree DSU

Computer Science Class Requirements

Class numberClass Name
Computer Science Core Requirements - All are required
CS 1400Fundamentals of Programming
CS 1410Object Oriented Programming
CS 2420Introduction to Algorithms and Data Structures
CS 2450Software Engineering
CS 2810Computer Organization and Architecture
CS 3005Programming in C++
CS 3200Web Application Development I
CS 3400Operating Systems 1
or CS 3410Distributed Systems
CS 3510Advanced Algorithms/Data Structures
CS 3520Programming Languages
CS 3530Computational Theory
CS 3600Graphics Programming
CS 4300Artificial Intelligence
or CS 4320Machine Learning
CS 4307Database Design & Management
CS 4550Compilers
CS 4600Senior Project
Math & Science Core Requirements
CS 3310Discrete Mathematics
MATH 1210Calculus I (MA)
MATH 1220Calculus II (MA)
BIOL 1610
& BIOL 1615Principles of Biology I (LS)
and Principles of Biology I Lab (LAB)
PHYS 2210
& PHYS 2215Physics/Scientists Engineers I (PS)
and Physics/Scientists Engineers I Lab (LAB)
Math & Science Elective Requirements - 8 of the following
MATH 2210Multivariable Calculus (MA)
MATH 2270Linear Algebra
MATH 2280Ordinary Differential Equations
MATH 3400Probability & Statistics
BIOL 1620
& BIOL 1625Principles of Biology II
and Principles of Biology II Lab
BIOL 2060
& BIOL 2065Principles of Microbiology
and Principles of Microbiology Lab
CHEM 1210
& CHEM 1215Principles of Chemistry I (PS)
and Principles of Chemistry I Lab (LAB)
CHEM 1220
& CHEM 1225Principles of Chemistry II
and Principles of Chemistry II Lab
PHYS 2220
& PHYS 2225Physics/Scientists EngineersII
and Physics/Scientists Engineers II Lab
Computer Science Elective Requirements - 9 of the following
CS 3010Mobile Application Development for Android
CS 3020Mobile Application Development: iOS
CS 3150Computer Networks
CS 3400Operating Systems 1
or CS 3410Distributed Systems
CS 3440Software Practices
CS 3500Application Development
CS 4200Web Application Development II
CS 4920RInternship
CS 4300Artificial Intelligence
CS 4320Machine Learning
CS 4990Special Topics in Computer Science
CS 4991RCompetitive Programming
IT 3100Systems Design and Administration I
IT 3110System Automation
IT 4200DevOps Lifecycle Management
IT 4500Information Security
WEB 1400Web Design I: Fundamentals (ALCS)
WEB 3400Web Design II: Essentials (ALCS)

Computer Science Degree DSU

As you can see, there is a great deal of overlap in course load between the two disciplines.

The main difference between a computer science degree or certificate and a software engineering education is that computer science requires more high-level math and science classes, while the software engineering route includes more applied classes such as Unix/Linux and Web Design. If you can stick it out, most employers generally prefer a candidate with a computer science background, as software engineering principles can more easily be learned on the job.

Want to learn Python and Go?

Anakin back-end developer meme

The rumors are not true. I've been writing Go and Python for many years and I smell delightful.

Titles and Salaries

When it comes right down to it, the job titles of “Software Engineer” and “Computer Scientist” make comparable money with Software Engineers averaging $100,000/yr and Computer Scientists averaging $102,000/yr, at least in the United States. However, it’s important to note that the job titles don’t necessarily match the skillsets of the individuals performing them. Many software engineers, especially the highly-paid ones have also studied Computer Science, and it’s almost impossible to find a computer scientist who isn’t well-versed in the best software engineering practices. For a full list of CS salary breakdowns by job title, we have a separate article that goes into the details.

Additionally, Software Engineers, being of a more practical variety of skilled laborers, are more likely to come into increasingly high demand as technology continues to move forward. In practice, both Computer Science and Software Engineering are excellent fields to enter if one has a love of computers, coding, and mathematics. The best part is, you don’t even need to go to a university, you can learn both computer science and software engineering completely online.

Find a problem with this article?

Report an issue on GitHub