Another common question we get from prospective applicants deals with the differences between computer and software engineering (and computer science too). Since it’s not my area of expertise, I generally try to get one of my colleagues to discuss this in more detail with applicants. They have also put together a webpage with some helpful information that compares and contrasts these 3 programs. This is a good starting point, but there are several other things to consider. I’m going to focus on comparing just the two engineering programs.
Sometimes, when trying to choose between programs it can be useful to look at the courses from the university course calendar to see what catches your interest. Computer Engineering is here, and Software Engineering is here. (Reading university calendars takes some practice, so don’t get too worried about the details.) Looking through the courses, there are some similarities and some differences. As expected, Comp Eng tends to have more physics-based courses and a focus on hardware/electronics, signals, and networks, but there are still opportunities to take programming. In fact, Comp Eng students can do a Software Engineering Option (minor) which gets them into similar programming concepts. Add to this the ability to do co-op work term jobs in programming, and you end up with a large grey area where graduates from the two different programs may have similar career paths. The Software curriculum has more emphasis on computer science fundamentals and large software systems, but there are opportunities to take hardware courses too. So again, lots of potential overlap.
I guess all this information may not really help much with deciding between the two programs, so here’s an algorithm you might use:
- If you have no significant experience in using structured programming languages, apply to Computer Engineering. Software Engineering applicants are required to demonstrate this experience, either through course(s) or significant other activities. All of our other engineering programs (including Comp Eng) assume that you have no programming experience.
- If you have programming experience, and have little interest in hardware or electronics, go for the Software Engineering program. Note however, that this is one of our more competitive programs for admission, so consider putting Computer Engineering as a second choice on your Admission Information Form so you have the alternative route as a backup plan.
- If you are really interested in the combination of programming and hardware design, maybe lean towards Comp Eng.
- If you’re leaning towards the software side, consider also applying to Computer Science in the Faculty of Mathematics. This is a separate and independent application, and potentially gives you another offer to work with. Although you can only apply to one Engineering program, you can always apply to another program like Computer Science too.
- If you’ve looked at all the pros and cons and still can’t really decide, that’s actually not a bad sign. It probably means you have wide-ranging interests and abilities, and will likely do well with either choice. Some applicants will go with Comp Eng, because it has a bit more flexibility for shifting directions during the program, but this really just comes down to personal preference. There is probably no wrong choice for you between these two.
Finally, it’s good to recognize that all engineering programs use computing and programming to some extent. There are graduates from every program that go on to careers involving specialized software development for niche applications. So, if you think you like programming but are also interested in Mechanical or Management Engineering (for example), those are not mutually exclusive interests. It’s just a matter of pursuing the opportunities that arise during your education and co-op jobs.
57 thoughts on “Computer Engineering or Software Engineering?”
Is it possible to switch between the programs if you find yourself lacking interest? How does the transfer process work in determining if a student is eligible for a transfer?
For example, would it be more difficult to transfer from Comp Eng to Mechatronics than the reverse?
We try our best to help with program switches, but it gets complicated. First, there has to be available space. Then, there are differences in courses that might be a problem. Next, the co-op streaming can be a problem if the two programs are different streams. So, we can often allow switches but there may be a “cost”, such as having to take extra make-up courses, or sometimes even losing an entire year. There are too many combinations and permutations of switches to give more details, but we look at each request on a case-by-case basis. Specifically for switching to Mechatronics, it is often not possible because the program is usually quite full. In that case, we usually recommend that students stay in their program and do the Mechatronics Option (like a minor), which gets them much of the same academic material anyways.
Hello, I have a specific situation.
I am planning to apply to Software Engineering as my first choice via OUAC. On my AIF I will list Computer Engineering as my second choice. Since Software Engineering is such a highly competitive program, I am afraid that I may not be accepted into the program. Will my chances of getting into the Computer Engineering program be hindered since it is list as a second choice? Or will my application being entered into the same pool with applicants who list Computer Engineering as their first choice, giving me an equal chance?
No, there is no disadvantage to listing something as a second or third choice. So, if you don’t get into Software Engineering you’ll have the same opportunity as everyone else for your second choice Comp Eng. We do admissions into the most competitive programs first, then everyone who didn’t get admitted into one of those is added to the pool for the other programs. It’s sort of an iterative process, so everyone gets a fair chance for the choices they list. The one thing we assume however, is that the 1st, 2nd, and 3rd choices represent your actual preferences. So if possible, we try to give you your 1st choice, then 2nd, then 3rd only if the first two weren’t possible.
This is more of a general question and I’m a bit curious to know the answer.
In general, is there a difference in averages between non-semestered and semestered schools?
And also how well do students from these different school types transition into university?
That’s a good question. We’ve looked at that in the past, and found no significant differences in average or performance in our programs. The majority of students come from semestered schools however, so making comparisons is a bit difficult.
I’ve heard that a score of 80+ on the Euclid is required for a student to be qualified to take the advanced CS and math courses. It seems that this year, due to bill 115, that there will not be a chance for students to participate in Euclid or any other contest. Can you explain further the requirements?
Also, are advanced courses avail for SE students?
No, I don’t believe so. Like all engineering programs, the SE course selection is pretty much fixed for at least the first couple of years.
Peter, there are two answers to your question. First, the MATH 14x courses, which carry (Advanced) in their name. If you meet the prerequisites for those courses, and are a Software Engineering student you can take them. It’s rare, but I can see that one student currently in our system has taken MATH 145, for instance. The prerequisite isn’t necessarily an 80+ Euclid score; it amounts to “permission of instructor”. We also support Joint Honours with math programmes in SE.
CS 145 does require an 80+ Euclid score or an Honourable Mention on the Canadian Computing Competition. CS 145 is the advanced version of CS 135. But Software Engineers take CS 137 instead. So that’s not applicable here.
I’m sure that there will be something in place next year to figure out who CS145 is best for, if the contests don’t take place.
Thanks Prof. Lam, for clarifying this.
No, I don’t know. That is a Computer Science (Faculty of Mathematics) issue, and not engineering.
Thanks for the detailed exploration of these topics. I answer this question all the time as Associate Director of Software Engineering and as a professor of Electrical and Computer Engineering, where I regularly teach first-year Computer and Electrical students. Here is my perspective.
It is indeed true that you won’t be admitted to Software without programming experience. But the learning curve in Computer Engineering is steep as well: I give significant programming assignments in my course in second term. It may be the case that Computer Science has a better introductory sequence for those who don’t know how to program. In any case, you should expect to need to learn how to program very quickly in any of these programmes.
While the programmes are different, the pool of co-op jobs for Computer Engineering, Software Engineering, and Computer Science are quite similar. I know that Software Engineering has an excellent co-op placement rate; it’s about 1 student short of 100%.
If you’re considering Computer and Software Engineering, it is important to consider Computer Science as well. One way to think about Software Engineering is as a Computer Science programme which carries engineering accreditation. The cost is flexibility. You will also get to know your cohort better in Software Engineering versus Computer Science.
A key difference between Software Engineering and Computer Engineering is that you will learn more about designing hardware in Computer Engineering. There is still some hardware content in Software, but not as much.
Thanks for the additional insight!
Hello, I am a grade 12 student applying to Software Engineering via OUAC. I have a specific question regarding the academic requirement and the AIF. My grade 11 marks dropped a significant amount due to my personal issues midway through the grade 11 school year. As the result, my grade 11 marks eventually end up nowhere close to my normal academic performance. Does this have an affect on my admission for this year because my average this year applying to university has a huge difference compare to my grade 11 average? If so, is it mandatory to describe the situation in the “Circumstances” section in the AIF?
No effect in the long term. With low grade 11 marks you might not get an early offer in March (see How to get an early offer). But when we finish making offers in May it will be based entirely on Grade 12 marks. On the AIF, it would be a good idea to at least mention you had personal problems in grade 11, but there’s no need to go into details if you’re not comfortable doing so. If nothing is mentioned, we start wondering what’s going on and it raises some uncertainty in our minds.
Pingback: The difference between software engineering and computer science | Coldstreams.com
Pingback: Computer vs Software vs CS | A Professor in Waterloo Engineering
Pingback: Comparing Software Engineering to Computer Science | A Professor in Waterloo Engineering
I have a random question :). Software engineering is my first choice and I am not sure which post but you said that we can put 2nd and 3rd choices in AIF. I am planning to put computer eng as 2nd and electrical eng as third. I heard computer engineering and electrical engineering are essentially same program until 3rd year. I wonder if I put computer engineering as 2nd, do i need to put electrical engineering as third? Should I just put other program?
Yes, computer and electrical are lumped together for admission purposes, so putting both as alternates doesn’t help much.
I was wondering if I can place Computer Science as my second choice on my AIF when I’m applying for software engineering?
No, we decided to remove that option for reasons discussed in this post. If you want to be considered for CS, you should apply directly through OUAC, then you can potentially get offers to both programs.
Hello Prof. Anderson,
I have a question that relates to Software Engineering.
Currently, I have had 0 months experience with programming. I am planning to do some self-taught programming for the next 4-6 months (since my school does not offer any courses related to Comp Sci). On the AIF, I have listed Software Engineering as my second choice, and in the case that I am not accepted to my first choice, I would like to be considered for Software Engineering. How can I show on the AIF’s ‘Programming Knowledge’ Question the knowledge that I am planning to attain in programming? (The deadline for the AIF is at the time I will start the course.)
Should I just remove Software Engineering from my alternative courses?
You can describe your plans to get programming experience, with some details on timing and content.
Hi Prof. Anderson,
I’m wondering what you would consider to be adequate programming experience to be accepted to software engineering.
I’ve completed both ICS 3U1 and ICS 4U1, the two Ontario computer sciences courses and did fairly well in them (91 and 94 respectively). I suppose I’m just wondering what knowledge of programming a prospective software engineering student is expected to have coming in to the program (ie. basic OOP concepts, simple algorithms, specific languages etc.).
It’s alright if you can’t answer this question.
The ICS3U and 4U courses are supposed to be adequate preparation.
what is the easy engineering between computer and sofrware engineering . i dont intrested computer hardware repairing. i am intrested do best work on computer system .
I don’t think one is easier than the other. Computer engineering does not usually deal with hardware repair (that’s more typically a computer technician job).
I am grade 10 IB student. In grade 11/12 we are not offered any computer science courses but I completed ICS 208-a in grade 10 with 98%. So what are my options to gather programming experience to get in Software engineering?
If you don’t have courses, you can try joining a programming club (if available), or working on programming competitions, or doing online courses (some of which are free). See this post on learning to code.
I was interested in manufacturing engineering but due to narrower scope I was forced to go towards computer field.I decided computer engineering was a little similar to manufacturing engineering but it further divided into SE and HE.Which one will give me a better opportunity in future?
Our computer engineering program can focus on either software or hardware, or a mix of both, depending on which electives you pick in upper years. I would go with the area you find the most interesting, but that’s not something you need to decide until later.
For Software Engineering, when it says “You must have experience with writing programs to be admitted to (and to succeed in) Software Engineering,” by experience do they mean taking ICS4U1 or would you have to go learn another language on your own time?
ICS4U is quite fine for experience. Many applicants will learn other languages for programming competitions or as a hobby.
Just wondering how many people roughly apply to computer/electrical engineering, and how many of those people get accepted?
Roughly about 2000 people apply, and about 600 get offers.
I don’t know if this has already been asked, but as I’ve been accepted to software engineering, I’m wondering how easy it would be for me to switch into computer engineering if I do not enjoy software.
Switching from software to computer is usually easier than the other way because more space is available. See the post on switching programs for other details.
whats the main difference in studying computer engineering and software engineering ?
what one does after studying software engineering and computer engineering ?
and may i get in software after joining in computer engineering field ?
plz help and suggest me .. i dont know the differences betn them ?
Reviewing this post and similar ones, and other material online is a good starting point to seeing the differences. Basically computer engineering has more opportunities for hardware design. Switching from computer engineering to software engineering at Waterloo is highly unlikely.
I am Elshaday from Ethiopia. I have BSc in Computer Engineering and am genuinely interested in pursuing my MSc program either in Computer Engineering(1st choice) or Software engineering. Here my question is totally odd:Assuming I have taken almost all courses(>170crhs) which are required to be included under bachelor degree in Computer Engineering program, is there any possibility to get a scholarship from University of Waterloo so that I can learn in campus? I appreciate your helping me by providing information about the University’s attitude in giving scholarships for international students like me from your customized experience(if any one can do this for me). Thank you very much.
Sorry, I’m not sure I quite understand the question. If you’re asking about MASc admission, that’s not my area and I can’t comment. If you’re asking about upgrading to a Bachelor’s degree from Waterloo, that is not possible.
With a software engineering/computer engineering degree, are there any options for graduate school? I am just interested in both programs.
Can software development job (eg Google dev, Microsoft Skype dev, Facebook, etc…) positions be taken by computer engineering grads instead of software eng, or comp sci?
Yes, there are Masters and PhD programs available for graduates from all of our engineering programs (at UW or lots of other places). Those types of jobs are filled by computer, electrical, software engineering students (and computer science), and sometimes others too. Employers are generally more interested in your skills and aptitude, rather than the name of your program.
Prof. Anderson’s answer about industry is spot on.
Software Engineering qualifies you for CS grad school (as well as Computer Engineering grad school) and we have alumni who are currently in CS grad school in places from Waterloo to Cambridge and CMU.
I am applying for the 2016 admission. I am interested in both the computer and the electrical engineering. I was told that since both of them fall in the same faculty, I should just apply to one of them so as to be able to put one more alternative choice. May I confirm this with you? Are the candidates of both the computer and the electrical engineering competing in the same pool?
On the AIF form, will it have a negative effect if I also complete the part “programming knowledge (software engineering applicants only)” if I am not applying the software engineering. I just want to use the space to tell also my software knowledge and the side projects I have done.
Yes, electrical and computer engineering are basically the same pool because they take the same courses for the first 2 years. There is no negative effect describing programming experience even if you’re not applying to software. There is no positive effect either.
I noticed that the Software Engineering program only awards a Bachelor in SE while ComputerEng and all the other engineering branches award a BASc, are there any concrete reasons for this? I know that im only making asumptions that may be completely erroneus but i certainly get the feeling that the program “may” be lacking something in terms of accreditations (Not really sure).
Thanks for acknowledging my concerns 🙂
The Software Engineering program is offered and managed jointly by the Faculties of Engineering and Mathematics at Waterloo, and so it was felt at the time that it should have a different degree designation. Hence BES versus BASc for the others, which are offered by the Faculty of Engineering alone. The program meets all the requirements for accreditation by the Canadian Engineering Accreditation Board, and lacks nothing in that regard. It’s also accredited by the Computer Science Accreditation Council and so has dual accreditation, which is another reason for the unique degree name of BES.
If you are someone who is in mechanical and interested computer-based concepts like PLC, robotC, and even general python programming. Is there a chance for you to pursue a career in those fields based on the the knowledge and experience gained from university and side projects?
There is a whole sub-field in mechanical engineering related to automation and controls (https://ugradcalendar.uwaterloo.ca/page/ENG-Mechanical-Engineering) which is where PLC and other control systems appear. The same goes for chemical engineering (process systems and controls). Most engineering fields have some aspects of computer control in them, and career paths that follow from that.
Your article has helped me a lot in understanding the basic conceptual difference between Software Engineering and Computer Engineering.Being an International student from Bangladesh, can you please enlighten me if I can apply for studying Software Engineering with my AS level (British Curriculum) result at University of Waterloo? I did check the program requirement which indicates a final grade of “A” in A levels meaning I need to complete my A2 level to start my journey at Waterloo but this creates a hindrance for me as I would have to give a year gap which I certainly do not wish to. I want to join university as soon as my final results come out which is expected to be out on August 2019. But in the meantime, I will loose the opportunity to apply to University of Waterloo for Fall 2019 which is the sole reason I want to apply with my AS result which reflects half of my complete A level result itself.
I wish you will help me professor.
You apply with your AS results (and GCSE or equivalent grades) and predicted grades for the A2 level. If an offer is made, it will be conditional on achieving the required A2 grades in August so that you can start in September.
That seems like a good start if you carry through with your plans and can demonstrate some accomplishments. Grade information will probably be posted in the near future.
Comments are closed.