Software Engineering vs. Computer Science

Dr.Q writes AI-infused insights
4 min readOct 24, 2023

The most frequently asked question I get from high school students and parents at the Ontario Universities’ Fair (OUF) and open house sessions is the difference between Software Engineering (SE) and Computer Science(CS) degree programs. This article sheds light on this matter, highlighting the distinguishing characteristics to help prospective students understand which path might be best for them.

Disclaimer: I am a professor of software engineering at Ontario Tech University, located in Oshawa, Ontario, Canada. Ontario Tech University offers an accredited Bachelor of Engineering (B.Eng.) program in Software Engineering (by the Faculty of Engineering and Applied Science) and a Bachelor of Science (B.Sc.) program in Computer Science (by the Faculty of Science).

Definitions

Defining Computer Science and Software Engineering helps bring clarity, direction, and purpose to students and parents. The following definitions are inspired by the ACM/IEEE-CS Computing Curricula 2020.

  • Computer Science: At its core, CS is a theoretical discipline. It is an academic field rooted in mathematics and logic, focusing on understanding the nature of computation, algorithms, and the design of computer systems. The primary goal is to understand the principles and theories that underpin computing and software systems. According to the ACM Computing Curricula, “CS continues to have a more theoretical focus among the other computing disciplines, and its connection with abstract mathematics is still strong”.
  • Software Engineering: SE is an engineering discipline that emphasizes designing, constructing, and maintaining software systems. It involves systematic design and application of methodologies, tools, and processes to produce robust, efficient, and scalable software. The primary goal is to apply engineering principles to ensure that software is reliable and sustainable. According to the ACM Computing Curricula, “SE focuses on the development and use of rigorous methods for designing and constructing software artifacts that will reliably perform specified tasks”.

Curriculum

Software Engineering and Computer Science have some common elements and graduates of both programs may compete for some of the same jobs, but the objectives of each program are different.

  • Computer Science: You may find some CS programs to be more applied, but traditional programs focus on coding, data structures, algorithms, theory of computation, and computer architecture and organization. The curriculum emphasizes problem-solving skills, abstract thinking, and mathematical reasoning. It trains students to tackle complex computational problems and innovate new algorithms. CS is about understanding the “why”.
  • Software Engineering: As an engineering program, the emphasis is on the application of engineering principles to the full software development lifecycle and courses may include software design and architecture, software quality assurance and testing, engineering economics, law and ethics, and project management. The curriculum focuses on pragmatic skills. Students are taught how to think like an engineer, work in teams, manage projects, communicate with clients, and ensure that software solutions meet specified requirements and standards. SE is about executing the “how”.

At Ontario Tech University, software engineering students share some engineering courses with other other engineering students in Automotive, Electrical and Mechatronics Engineering because of the common first year, but they also take a couple of electrical engineering courses to gain insights into the physical world and software-hardware interfacing.

The Software Engineering program at Ontario Tech University is a CEAB-accredited engineering program (CEAB is the Canadian Engineering Accreditation Board) featuring a two-semester Capstone Systems Design team project. Graduates of the program receive the iron ring, worn by Canadian-trained engineers as a symbol and reminder of the obligations and ethics associated with the engineering profession.

Student Feedback

A couple of years ago, I asked senior SE students in my ‘Distributed Systems’ class about their perspectives on the distinction between SE and CS. Here’s a summary of what they shared:

  • Software engineering is more practical than computer science. It’s about applying everything you learned to build, design and test software systems.
  • Computer science deals with developing algorithms (more math focused), software engineering deals with working with an entire system and making sure that system persists in the long term.
  • Software engineering is an accredited program thus you have engineering qualifications.
  • Software engineering provides a wider range of topics, not just programming. You get to learn about various system architecture, laws and ethics of practicing engineering.
  • Software engineering provides more opportunities when looking for a job. You have knowledge and experience in both hardware and software aspects of building systems.
  • Software engineering allows you to focus on areas other than programming: such as analysis, testing, design.
  • Software engineering focuses on the engineering aspects of building large scale applications and solve problems. CS focuses more on the science behind computers, and more programming.
  • I have switched into software engineering — engineering credits can be accepted in place of non-engineering credits but not the other way around.

Recommendation

For students uncertain about which program to pursue, I suggest enrolling in Software Engineering first. If it doesn’t align with their interests, switching to Computer Science is an easy option. My rationale is straightforward: Ontario Tech University’s Software Engineering is a CEAB-accredited Engineering program and all Engineering disciplines at Ontario Tech University share a common first-year curriculum, so if you initially choose Computer Science and later decide to switch to Software Engineering, the course sequence will be disrupted, requiring summer courses to stay on track.

Conclusion

The choice between Computer Science and Software Engineering boils down to one’s interests, strengths, and long-term career goals. Both fields offer exciting opportunities; for those with a passion for diving deep into computing’s theoretical aspects and computational thinking, CS might be the path. For those who enjoy the practical aspect of building software and the dynamics of teamwork and wish to have the ‘Engineer’ professional designation and the Iron ring, SE is a better fit. Whichever path one chooses, the world of computing is vast, ever-evolving and promises a vibrant, challenging, and rewarding journey ahead.

References

ACM/IEEE-CS Computing Curricula 2020: Paradigms for Global Computing Education.

--

--

Dr.Q writes AI-infused insights

Qusay Mahmoud (aka Dr.Q) is a Professor of Software Engineering and Associate Dean of Experiential Learning and Engineering Outreach at Ontario Tech University