Should you Learn Computer Science or Software Engineering?

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

Last published December 17, 2020

Subscribe to curated backend podcasts, videos and articles. All free.

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.

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

Software Development Degree DSU

Computer Science Class Requirements ๐Ÿ”—

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

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