Comparing Software Engineering to Computer Science

A couple of previous posts have looked at the differences in Software Engineering, Computer Engineering and Computer Science, from my simple perspective and from a new student viewpoint.  Below are some (updated) comments from an academic expert viewpoint, as prepared by Prof. Patrick Lam in the Department Electrical and Computer Engineering (and the Associate Director of the Software Engineering program).  If there are questions or comments, I’ll ask him to respond.  Note that at Waterloo you can apply to both Software Engineering and Computer Science.  They are treated independently for admissions, so you could get two separate offers.

Comparing the BSE in Software Engineering to the BCS in Computer Science

Our Bachelor of Software Engineering degree is an accredited computer science degree, and BSE students take many of the same CS core courses as BCS students. In addition, Software Engineering (BSE) students also take computer engineering (CE) courses and the engineering core, thus satisfying the requirements to be a CEAB-accredited Engineering programme. Like all engineering students, BSE students follow a rather regimented programme and learn about the physical world. BCS students enjoy more flexibility.

Employment outcomes from the BASc in Computer Engineering, the BSE, and the BCS are broadly similar. What you get out of a university education depends less on your specific courses and more on what you put into your courses, your interaction with peers, and your work experience. However, the programmes do differ. To help you choose which programme is the best fit for you, here are some of my personal observations about cohorts and courses.

Cohort: The more regimented programme comes with a cohort system and enables a capstone design project. Each year, Software Engineering aims to admit a new cohort of 125 students; cohorts take most of their core courses together and get to know each other well. In part because of the cohort system, Software Engineering students can work together to complete impressive design projects, including a commercialized TTC trip planner and a social networking site for bands.

Courses: In terms of computer science content, BSE students must take two upper-year three-course sequences that are optional for BCS students: the software engineering course sequence on requirements, design, and validation (which is also open to both BCS and CE students) and the capstone design project (for which there is no CS equivalent). BSE students are also required to take specific upper-year CS courses1, while the BCS has a smaller set of core courses, plus a set of distribution requirements for their upper-year CS courses.

In terms of computer engineering, BCS students take a single course on computer organization and design, whereas BSE students take three courses offered by ECE: two courses on circuits and then a course on computer organization (i.e. processor design). BSE students are thus exposed to much more content about computer hardware than BCS students.

BSE students also take courses common to all engineering programmes, including two physics courses, one chemistry course, and engineering economics. The BSE degree also trades a second statistics course for a course on differential equations. (The math content is otherwise quite similar between the BSE and the BCS.) Knowing differential equations enables BSE students to take a course in feedback control.

Summary: BSE students belong to a cohort, take the engineering core, complete a capstone design project, and satisfy an accredited computer science curriculum. BCS students cover the same range of CS topics, enjoy more flexibility, and are not required to complete the engineering core.

1. Specifically: SE students must take CS349, user interfaces; CS348, databases; and CS343, concurrent and parallel programming. This covers the CS systems and applications areas. BCS students, on the other hand, have a choice between systems, applications, and theory areas, and need to cover at least two of those areas with at least one course.

12 thoughts on “Comparing Software Engineering to Computer Science

  1. Hey, I believe there is false information here.

    A BSE does not fulfill the requirements of a BCS.

    Comparing these:

    Computer Science students must take AT LEAST 16 CS courses, while Software Engineering students only need to take 12.

    Also BSE does not need breadth or depth/minor.

    Therefore, a Bachelor of Software Engineering does not equal a Bachelor of Computer Science.


    Also to any students considering CS, consider:

    Bachelor of Computer Science\Software Engineering Option.

    You get a Bachelor of Computer Science, and the stuff Software Engineers do in terms of ethics and Software Engineering, without needing to dive into electrical circuits, chemistry, etc. Unless you want to work with hardware, why waste time learning electrical stuff?

    • There is a BCS checklist. A BSE student can check all of the boxes for the BCS degree. I’ve tried it. Some of our SE courses count as CS course for the purpose of the checklist. The breadth requirement is met by the engineering linkage electives, as I recall, while the depth requirement is met by one of our other programme requirements.

      The Software Engineering Option is very different from an SE degree in a number of ways. The most noticeable differences are the lack of a fourth-year design project, and the fact that CS students aren’t in a cohort.

      • I now have the checklist. BSE students use SE 212, 350, 463, 464, and 465 instead of directly equivalent CS courses and thus end up with the right number of CS courses. As I wrote before, linkage electives meet the breadth requirement. ECE 140-124-222 meet the prerequisite chain of length 3 requirement.

  2. It may be worthwhile to mention the benefits of the Computer Science program’s flexibility. Students in CS get to take advanced section of any CS and math classes, including CS 145/146/365, MATH 145/146/147/148/245/247/249, STAT 240/241, AMATH 251, CO 255. These bring much more intellectual value to a degree than the regular sections. While it is occasionally possible to take them in SE, it is very difficult.

    Many of the most interesting courses in university are only offered once every year or two. Due to co-op, there will often be only a single opportunity to take those courses. SE’s tight schedule does not allow much flexibility there.

    CS students have room for much more electives – almost any course offered at Waterloo. For example, this includes courses like the highly-rated psychology courses, or CO department offerings (Combinatorics and Optimization), which Waterloo is world-famous for. For students that enjoy SE’s mandatory physics & ECE courses this may not be a problem, but given each course is >1000$, no one should be stuck taking a class they do not enjoy.

    The last point applies only for some students with transfer credits: the first semester of SE will appear to cover very little material, despite having over 50% more course hours than a regular CS schedule.

    Note that these are all logistics arguments. Programs also differ in classroom environment. SE, for example, will have a larger concentration of students with programming experience upon admission, which is an important aspect to consider – we learn as much from peers as from profs.

    • Agreed. Plain CS has more enrichment opportunities than SE. I do try to work with students who are interested, and we have some students who do successfully take advanced level courses. But it requires effort, since these courses don’t necessarily schedule well. We even have a couple of students who pursue Joint Honours with another programme in the Faculty of Math. That comes at the (time, not money) cost of taking more courses. I do always say that the tradeoff in taking SE is having less flexibility.

      Having said that, a lot of the learning at university doesn’t occur in lectures or in course material. Most of the instructors in any programme will be more than happy to personally enrich a student’s course with more material if there is interest. There is something to be said for taking a generally more advanced course, and I will say that I enjoyed such courses in my own undergraduate career.

    • As a comp eng grad working in Silicon Valley, I would strongly encourage students to consider CS instead of CE or SE. The CS track is more flexible and allows you to take more challenging courses and skip courses that you’re not interested in. As a CE student, I was not allowed to take the advanced algorithms course due to mismatched pre-reqs, and I could not schedule in the real time os course because my course load was already too heavy. I didn’t even know there was a CO department. When I started working, I felt like I didn’t know as much math and CS fundamentals as my colleagues. When they discuss modeling a problem as a graph problem or a optimization problem, I feel clueless (though most software jobs don’t require this)
      While I did very well in class, if you do start struggling, the flexibility of the CS department will allow you to graduate on time despite failing a few courses. Almost half of my classmates took 6-7 years to graduate due to having to repeat entire semesters.
      Waterloo has an excellent reputation among employers in top tech companies, but no one knows the difference between specific degrees. It’s a real shame that high school students have to make this decision now and can’t easily change it later.

  3. Pingback: Comparing Software to Computer Engineering | A Professor in Waterloo Engineering

  4. DO i need any recommendation letter or something like that for any of three:- Computer Science,Computer engineering and software engineering.

    I think it was needed in previous year for one of these course

  5. Pingback: Software Engineering vs Computer Science at uWaterloo - Havin Leung

Comments are closed.