What is the difference between Computer Science, Computer Engineering, and Software Engineering?
The three programs have common elements: they all stress an understanding of both digital hardware and software, though to varying degrees, and they all hone students' problem-solving skills. As well, graduates of all three programs may compete for some of the same jobs. However, the programs have different objectives.
- Computer Engineering (CE) deals with designing, developing, and operating computer systems. At its core, Computer Engineering concentrates on digital hardware devices and computers, and the software that controls them. Advanced courses focus on standard designs and techniques for specific application domains. In contrast to CS and SE, Computer Engineering emphasizes solving problems in digital hardware and at the hardware-software interface.
- Computer Science (CS) focuses on understanding, designing, and developing programs and computers. At its core, Computer Science concentrates on data, data transformation, and algorithms. Advanced courses present specialized programming techniques and specific application domains. The CS program is less structured than the CE and SE programs, giving students more flexibility to build depth or breadth in a variety of application domains or in the fundamentals of Computer Science.
- Software Engineering (SE) deals with building and maintaining software systems. It is more software-oriented and has a greater emphasis on large software applications than Computer Engineering. It is more applied than Computer Science, placing greater emphasis on the entire software development process, from idea to final product. It is also more disciplined than Computer Science, applying more systematic practices to help ensure that products are reliable and safe.
Additional resources: A Computer Engineering students has written a page comparing Computer Engineering, Software Engineering and Computer Science. We also have a comparison of Computer Science and Software Engineering on our site.
What is the program like?
Software engineering philosophy and discipline are taught early and practised throughout the program. Students are expected early on to design and evaluate their programs, in order to develop their technical skills as part of a successful development process. Through technical documentation, presentations, reports, and peer reviews, students develop strong communication skills. Through teamwork, they develop strong interpersonal skills.
What will I take in first year?
First-year software engineering students take Calculus, Algebra, Discrete Mathematics, Logic, and Physics, to build a strong foundation in mathematics and natural sciences. They take an introductory course in digital design and computer architecture. They also take two computer science courses that teach good programming skills and design principles; these courses use C and C++ as their programming languages.
Where will I go for academic advising?
How long does it take to complete the program?
Software Engineering is a co-op program, which is year-round. The school year is divided up into terms, where each term lasts four months. There are eight academic terms and either five or six work terms, meaning it would take students 4 2/3 years to complete the degree requirements. The six work terms comprise two years of work experience.
What will it say on my degree when I graduate?
Your degree will be a Bachelor of Software Engineering (BSE).
Is Software Engineering an accredited program?
Waterloo's Software Engineering program has been accredited by the Canadian Engineering Accreditation Board as satisfying the educational requirements for an engineering licence.
The program is also accredited by the Canadian Information Processing Society as satisfying the educational requirements for an I.S.P. certificate.
What are some potential career opportunities once I graduate?
Software Engineers help develop software for telecommunications, financial systems, aeronautics, medical devices, transportation systems, and banking and insurance companies. They tend to hold technical, decision-making positions, such as Systems Analyst, Software Architect, Quality Analyst, and Project Manager.
Are there opportunities for graduate studies?
The School of Computer Science (CS) and the department of Electrical & Computer Engineering (ECE) both offer graduate programs in which students can study and do research in software engineering at the Master's and Ph.D. levels. Together, they have the largest number of Software Engineering faculty in Canada, and their research programs are internationally renowned and respected. In addition, both CS and ECE offer accelerated programs in which students can apply for graduate studies in their 3B term.