Computer Engineering, Software Engineering, or Computer Science?

Choosing exactly the right program for yourself is hard work, we’ve all been there. At times this may even be a little overwhelming due to all the different choices. Not only do you have to choose a faculty, but you have to nitpick exactly which program you think you will enjoy the most out of a couple very similar looking ones. I have encountered this too when I was choosing my program because computer engineering, software engineering, and computer science all looked like great options for me. But which one was I supposed to choose? What was I supposed to base it off of? The best thing to consider when choosing between programs is the courses that you will be taking in the program.

You will see that each program offers a different set of courses that are prerequisites and also courses that you are able to take to specialize in a certain area. You will see the main differences between these three programs in the courses that you are able to take. Consider also which courses you have enjoyed in high school. Did you like math? Computer science? Robotics? Physics? All of these? None of these? Ask yourself which one was your most and least favourite, and why.

Check out the courses in the later years too to get a better understanding of what awaits you, because the first year only provides a good basis for your later years, and then moves into more specialized courses.

Computer Engineering

Computer Engineering teaches you about both the hardware and software aspects of computers, and so is a good program to take if you would like a more general understanding of computers. In contrast to the other two programs, Computer Engineering is focused more on the designing and developing of computer systems and how the software interacts with the hardware. So you will be learning about circuits, logic gates, physics, but also programming and Computer Engineering is a lot more hands on too. If you want to learn about how computers work and also learn about programming, then take Computer Engineering. Click here for more information on computer engineering.

1A:CHE 102 – Chemistry
ECE 100A – Electrical and Computer Eng Practice
ECE 105 – Physics ECE 140 – Linear Circuits
ECE 150 – Fundamentals of Programming
MATH 117 – Calculus
 1B: ECE 100B – Electrical and Computer Eng Practice
ECE 103 – Discrete Mathematics
ECE 106 – Physics
ECE 124 – Digital Circuits and Systems
ECE 155 – Engineering Design with Embedded Systems
MATH 119 – Calculus

Software Engineering

Software Engineering basically takes Computer Science and combines it with Engineering. It focuses more on the application than theory in comparison with Computer Science, but it still contains science courses due to being offered by the Engineering department. The main focus though is software development and building and maintaining software systems. Software Engineering is a lot less focused on the hardware than Computer Engineering, but in comparison to Computer Science it is more applied and provides a greater emphasis on the developmental process to ensure that programs work as they should and are safe. If you like programming and would like to take more of a hands on approach to it, take Software Engineering. Click here for more information on software engineering.

1A:CS 137 – Programming Principles
ECE 105 – Physics
ECE 140 – Linear Circuits
MATH 115 – Linear Algebra
MATH 117 – Calculus
SE 101 – Introduction to Methods
 1B: SE 102 – Seminar
CS 138 – Intro to Data Abstraction and Implementation
ECE 106 – Physics
ECE 124 – Digital Circuits and Systems
MATH 119 – Calculus
MATH 135 – Algebra for Honours Mathematics

Computer Science

Computer Science is offered by the Faculty of Mathematics as opposed to the other two, and so it involves more math courses and is more theoretical than the engineering programs. This means no courses on circuits or physics, but more on programming and the theory behind it. This means a lot more math. Be prepared. Computer Science does not have courses on circuitry or how the hardware systems work, and has less practical and hands on learning of programming than Software Engineering. So in general, if you like to know more about the algorithms and ideas behind programming, take Computer Science. Click here for more information on Computer Science.

1A:MATH 135 – Algebra for Honours Mathematics
MATH 137 – Calculus 1 for Honours Mathematics
CS 135 – Designing Functional Programs
+ Additional courses of your choice
 1B:MATH 136 – Linear Algebra 1 for Honours Mathematics
MATH 138 – Calculus 2 for Honours Mathematics
CS 136 – Elementary Algorithm Design and Data Abstraction
+ Additional courses of your choice

In general, these three programs are quite similar in that you will be learning about computers, but they have different specializations. In these programs you will also be able to choose even more specialized courses depending on what you want to learn about the most. To reiterate, Computer Engineering is based on the hardware and software, Computer Science is based more on the algorithms and theory behind programming, and Software Engineering is a mix of both, teaching the applications of programming while still having a basic science background.

One last thing to note is the access to coop. No matter which program you choose, coop is a great idea because it’ll give you a chance to get experience and meet employers before you even leave school. You will learn about your job opportunities and how to work in a professional environment. Not only do you get awesome experience, you also earn money to start funding your university before you even finish! How great would it be if you could graduate with little to no debt, right? All three of these programs offer coop for their students, so I advise you to go for it!

Good luck, and don’t stress out too much! :)

1A Computer Engineering
University of Waterloo

18 thoughts on “Computer Engineering, Software Engineering, or Computer Science?

  1. Nice post!!! Great!! I love it . Sorry to disturb you; I am a nigerian aspiring to study computer engineering in your university. Could you please tell me the program requirements because I dont really understand what I saw in the school website. Do I need to take an exam? I will appreciate it if you reply soon.

  2. The Chosen One says:

    This article made things crystal clear for me! Thank you! I am going to apply to U Waterloo from an American High School soon. I will have to submit my SAT score. I know that Canadian students don’t have to take the SATs, but do you happen to know a what a safe score would be to be in the safe acceptance zone for any of the programs above? I have searched the website, but i couldn’t find any averages, only the minimums.
    Again, Great Article!

    • Hello,

      I am not sure of what a safe score would be for SATs, but of course, the higher the better. Keep in mind that the SAT score is not the only thing the admissions office will look at; your mark in all required courses, as well as the AIF (admission information form) are also incredibly important. Very rarely will the admissions office base their decision solely on grades so make sure you do a good job on your AIF too. I highly recommend that you write a draft of your AIF first so you can make changes before submitting it. Also, just as a reminder, your required courses for admission to any Engineering program are English, Chemistry, AP Physics, AP Calculus, and Mathematics. You need to state in your AIF that you will be taking AP courses so that the university knows that you intend on meeting the requirements, you will be taking the AP exams, and that you will be submitting those scores.

      Hope that helps! Do not hesitate to ask more questions. Good luck!

      1A Electrical Engineering
      University of Waterloo

  3. Lucy says:

    Hi there,
    I love your post. I am considering computer science or software engineering at Waterloo. I have some questions about it.

    1) I noticed that there are so little prescribed courses for computer science. I was wondering what students generally take for the two additional courses each semester?
    2)Are there specified electives that computer science students are aloud to take(like in software engineering)?
    3)For software engineering, I went on the website and noticed that software engineering students take up to 7 courses a semester when there are generally 5 courses per semester. Does this make it a heavier work load or is the work load similar to 5 courses per semester(eg. it just covers less things)?

    Thank you in advance for taking the time to answer my post:)

    • Hello,

      Before I answer anything, I would like to make it clear now that Computer Science is no longer available as an alternative program when you apply to Software Engineering. It was previously available but the demand for Computer Science has gone up and you are now required to apply to each program separately if you would like to be considered for both. Computer Engineering, however, is still available as an alternative program when applying for Software Engineering; you can select any Engineering program as an alternative program if the program you are applying for is part of the Faculty of Engineering.

      I am not sure what courses first year courses are available to be selected as your two electives, but I did find a list of courses available here. Here are also some suggestions available on the UW Computer Science page. My advice would be to first decide on whether you want to take the regular Computer Science program or Computer Science by co-op. The co-op program at uWaterloo is excellent and I would personally highly recommend it; it allows you to gain hands-on experience and in my opinion, there is no better way to learn than to apply your knowledge through hands-on work. While it will take longer for you to obtain your degree, I think it’s completely worth the time and effort. If you plan on taking Computer Science by co-op, take relevant courses. Choose courses that will help you get a job that you’re interested in. It’s up to you.

      As for the course load, I can say by experience that having 6+ courses in Engineering is a lot of work. None of the courses are any easier than they would be if we were to have less courses. Engineering is incredibly demanding and if you wish to do well, you have to put in a lot of work so be prepared for that. I’m in Electrical Engineering and I currently have five heavily academic courses, one course on engineering practices that isn’t very demanding, a course on co-op, and a course on academic success. I would say that this course load feels a lot like seven full courses even though it says I’m registered for eight. My schedule says I have classes from 8:30AM – 5:20PM most days but that doesn’t include the occasional extra lectures, help sessions, and extra-curricular activities. I would say that I typically leave my rez at 8:15AM and arrive home at 7:15PM, sometimes 9:15Pm, depending on the day. Software Engineering is about the same.

      I would suggest that you do an Engineering Shadow Day if you can because that gives you a better idea of what it’s like to be in Engineering. I recommend going with a first or second year Software Engineering student, or if that’s not available, try a first or second year Computer or Electrical Engineering student. I posted about it in a separate post recently on my blog so take a look at it. I would be happy to take you through a day of ECE (Computer and Electrical Engineering) if you would like so if you are applying, feel free to fill in a request for me.

      Hope this helps. Feel free to keep asking me questions. I’ll try to dig up some more detailed information for you soon.

      1A Electrical Engineering
      University of Waterloo

  4. Md Noman Bin Khalid says:

    I want to study in engineering about computer. But i am confused about that which engineering course is the best in this present world situation about computer among them…1. Computer science and engineering,2. Software engineering,3. Electronic and computer engineering. Plz suggest me about this.. Plz.. Plz.. Plz…

    • Hello,

      Based on the current job market demands, it looks like software knowledge is quite important. I don’t think you can go wrong by choosing Computer Science, Software Engineering, or Computer Engineering. Instead, it really depends on what your interest is in for greater chances of success. What part of software development or computers are you most interested in and what level of programming experience do you have?

      1A Electrical Engineering
      University of Waterloo

      • Md Noman Bin Khalid says:

        I chosse a subject. That is called Bachelor of Computer Science(Hons) (Network Technology And Cybersecurity). It’s offer me as a IT Specialist. I want to know about this subject’s damand and future job field. Please reply me as first as possible. Please…

      • I can’t speak too much for programs outside of the Engineering faculty, but I’m sure there is a demand for this field. With security these days, it only seems to get more and more complex. I find that anything to do with computer programming and security will be incredibly useful for now and in the future.


      • Bilal Majeed says:

        Hey. I have a question. Lets say I wanna take a program that will teach me to build phones, phone operating systems, and apps. What program should be the right one, from this post I assume its computer engineering. Is that right

      • I would personally suggest computer engineering, mostly because it does mostly cover those topics. Computer engineering, from how it is described by UW and what I’ve heard from upper-year students, is a good mix of hardware and software knowledge. You can really specialize in these areas in upper-year courses and through co-op terms. In your position, I would select computer engineering as my first choice.


  5. Yash says:

    Hey !
    I am a high school student in India. I had applied for the Computer Engineering (CO-OP Only) program at University of Waterloo and got in. Although I have gotten into CE, I still haven’t decided whether CS, SE or CE would be the best for me. How easy is it to change from CE to either CS or SE if I ever decide to do this in the future ? I am interested in a COOP program only. Secondly, what are the differences in the COOP jobs in these 3 programs ? I mean what kind of internships I can expect in these 3 programs ? I am fascinated by companies like Google, Facebook, Amazon etc and have always wanted to work in the Silicon Valley. So does companies like Google, Facebook etc hire from all these 3 programs or more from CS/SE programs ? Thirdly, Waterloo has a very reputed CS program in the world. I believe it is 24th in the QS rankings. As CS and CE are administered by different faculties, so is the ranking same for CE too or is it only for the CS program ? And can one take CS subjects like Artificial Intelligence, Machine Learning n CE too ? Lastly, how was your experience at Waterloo ?
    Thanks for your help !

    • Hi Yash,

      From what I’m aware of, it is typically not possible to switch between CE and SE once you have started your program but it is possible to switch into CS. You cannot, however, switch from CS to an Engineering program without having to start from the beginning. If you are planning to switch programs now, I would recommend talking to the admissions office now.

      Co-op jobs tend to be quite similar. There are plenty of software related jobs available for everyone. I am in Electrical Engineering and I’m doing a software job right now. My coworker is a Mechanical Engineer and he decided that he wanted to try software engineering and now he is on the software team too. All three majors that you are interested in are quite similar. If you like the jobs available in Silicon Valley, it will your skills that will get you there. There are so many different pieces that are required to bring a piece of software together so whatever major you end up going with, you will gain the skills to be part of a good software team.

      I wouldn’t worry about rankings too much, personally. There will always be good professors and plenty of resources available to you, regardless of what you go with. There will be opportunities for you to take electives in upper years where you will be able to narrow down your interests. I am not familiar with what is available but there are definitely plenty of different electives to choose from.

      My experience with uWaterloo Eng is that everything is very fast paced. It was overwhelming and not always the most pleasant but if you know that engineering is what you are passionate about, you will push through it. There are good times and bad times so enjoy the good times and pick yourself up and try again during the bad times. Manage your time well and don’t put too much pressure on yourself. If you need help, get help. We all know it is challenging to get through an engineering program. Make friends, work together, and enjoy your time in university! :)

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s