Should you Learn Computer Science or Software Engineering?
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) |
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.
Related Articles
Guide to Getting a Certificate in Computer Science
Dec 15, 2020 by Zulie Rane - Data analysis and computer science techincal author
There are so many reasons to want to get a certificate in computer science in 2021, especially when you compare it to alternatives like getting a degree or attending a coding bootcamp.
6 Computer Science Resume Examples
Dec 14, 2020 by Lane Wagner - Boot.dev co-founder and backend engineer
It’s really hard to get your foot in the door for engineering interviews, especially if you have no experience and are looking for an entry-level position. Often times, more experienced candidates looking to find a higher-paying job can also have trouble. As an employer myself, I can tell you that one of the biggest mistakes I see in 75% of resumes is using a visually boring template. When I’m sifting through forty or fifty applicants, it’s really easy for my eyes to glaze over. Think of your resume as your website landing page. You need to catch your employer’s attention by calling out your biggest accomplishments and selling points at a glance.
The Highest-Paying Computer Science Jobs
Dec 09, 2020 by Lane Wagner - Boot.dev co-founder and backend engineer
There are many jobs within the software industry, and most of them are easier to land or are higher-paying once you land them, if you have a solid grasp of computer science fundamentals. You don’t need a degree from an accredited university in 90% of cases, but you do need to learn the material, whether it be online, on the job, or in a formal setting. Let’s explore the most common computer science job titles and their associated compensation, details, and duties.
Computer Information Systems vs Computer Science
Dec 03, 2020 by Winston Wagner - Technical author at Boot.dev
As technology continues to advance, the need for professionals who are capable of utilizing and understanding computers continues to grow. This demand creates a strong job market, with excellent pay and exclusive opportunities. However, there are two fields of study when it comes to working with this technology: Computer Information Systems and Computer Science. Both are useful areas of study with in-demand skills, but what are the benefits of each, in comparison to each other? We explore that below.