Computer Engineering is a discipline that is focused on developing computing systems. The goal of our program is to develop in students an ability to design complete systems that include hardware and software elements. Computer Engineers focus not just on how computers work but how to integrate them into larger systems.
The Computer Engineering Program begins in the second year of undergraduate studies, after completing the required first year engineering courses. Students will graduate with a Bachelor of Applied Science in Computer Engineering. Students in the Computer Engineering Program may choose their electives to focus on computer hardware design or the design of software-intensive computer systems.
See our video below for a brief introduction to the Computer Engineering program!
How does Computer Engineering differ from Computer Science and Electrical Engineering? And what is Software Engineering?
Computer Engineering is a discipline that focuses on developing computing systems. The goal of our Computer Engineering program is to develop in students an ability to design complete systems that include hardware and software elements. Computer Engineers focus not just on how computers work but how to integrate them into larger systems.
There is a some overlap between Electrical Engineering and Computer Engineering and this overlap is typically related to the design of digital circuits and systems. Electrical Engineering is more broadly concerned with electronic devices, electrical motors and machines, generation and transmission of electricity, communications, signal processing, and control of such systems. A computer engineer should understand how a transistor works and how it plays a role in digital circuits but questions related to improving the behaviour of the electronics is mostly an electrical engineering activity.
Computer Science programs evolved from Mathematics as it became necessary to express computation and develop algorithms as opposed to obtaining closed-form solutions for problems. In that sense, one could argue that the core of Computer Science as a discipline is about computation as an abstraction, not necessarily about computing systems. In the early days of computing, the design of programming languages to express computation and the development of algorithms to solve problems drove the discipline. However, for such ideas to be useful, computing systems were needed as well as the programming tools to actually carry out information management and computation. For example, there is much engineering that goes into the design and implementation of, say, operating systems and compilers. This is where “Computer Engineering” comes in.
Software Engineering is a discipline that covers the entire span of software development: from the gathering of requirements to specification, implementation, testing, deployment and maintenance. It also requires project management and risk assessment. No one expects a software engineer to build hardware. For example, a Software Engineer, in practice, may need to know about the properties of a data structure and be able to choose a data structure to use in a particular project, but rarely would such a person design a new data structure or prove correctness of algorithms and data structures.
What are some examples of typical work that a student does in Computer Engineering?
From the get-go, the Computer Engineering program strikes a balance between concepts and hands-on experience.
In CPEN 211, by the end of the course, students typically implement their own microprocessor (on an FPGA board) that can run a subset of ARM assembly language. In CPEN 221, students work on several mini-projects that may involve processing audio files or working with large graphs that represent social networks or a game that utilizes some AI. They also learn some of the key ideas that help us develop compilers for programming languages.
In CPEN 291, which is the Computer Systems Design Studio, students will work on projects that involve hardware and software design. The projects often to relate to robotics and controlling a small autonomous vehicle.
Computer Engineering Program Curriculum
First Term | Second Term |
CPEN 211 (5) | CPEN 212 (4) |
CPEN 221 (4) | CPEN 291 (6) |
CPEN 281 (3) | ELEC 201 (4) |
MATH 253 (3) | MATH 256 (3) |
CPSC 221 (4)* |
MATH 220 (3)* |
Total Credits = 39
*courses can be taken in either term
First Term | Second Term |
CPEN 331 (4) | CPSC 320 (3) |
CPEN 391 (6)** |
CPSC 320 (3)* |
Probability/Statistics Elective (3)* |
Electives (16) – To be chosen based on Department-approved list of Computer Engineering electives* |
Complementary Studies Electives (9)* |
Total Credits = 38
*courses can be taken in either term
**CPEN 391 requires either CPEN 311 or CPEN 322 to be completed
APSC 450 (2)* |
CPEN 481 (3)* |
CPEN 491 (10) |
Electives (20) – To be chosen based on Department-approved list of Computer Engineering electives* |
Science Elective (3)* |
Total Credits = 38
*courses can be taken in either term
For official course descriptions for each of the courses listed above, please visit our ECE Course Listing
For a downloadable CPEN program checklist, please use our CPEN Checklist. For students who entered 2nd Year CPEN prior to 2021, please see the following program checklists:
Computer Engineering Elective Lists
CPEN students can refer to the lists below of department-approved electives when planning their coursework:
- Probability/Stats Electives
- Breadth Electives
- Advanced Electives
- Technical Electives
- Science Electives
- Complementary Studies Electives
- Free Electives
CPEN students should complete 3 credits from the following Probability/Statistics Electives:
STAT 251, STAT 302, MATH 302, MATH 318 |
CPEN students should complete 8 or 12 of the following Breadth Elective credits.
The total number of breadth electives and advanced electives must be at least 24 credits. If a student chooses 8 credits of breadth electives then they must choose 16 credits of advanced electives.
Students should make sure to complete either CPEN 311 or CPEN 322 in preparation for CPEN 391, which is a required course.
CPEN 311 (required for CPEN 391), CPEN 322 (required for CPEN 391) |
ELEC 202, ELEC 221, ELEC 301, ELEC 315, ELEC 331, ELEC 341 |
BMEG 310 |
CPEN students should complete 12 or 16 Advanced Elective credits. The total number of advanced electives and breadth electives must be at least 24 credits. If a student chooses 12 credits of advanced electives then they must choose 12 credits of breadth electives.
CPEN 321, CPEN 411, CPEN 412, CPEN 421, CPEN 422, CPEN 431, CPEN 432, CPEN 441, CPEN 442 |
ELEC 402 |
Some “Topics in Computer Engineering” courses (eg, CPEN400**) may be approved as advanced electives |
CPEN students should complete 6 credits of the following Technical Electives:
CPEN courses in the list of Breadth and Advanced Electives |
Any ELEC 300 courses that aren’t already required as part of the program |
Any ELEC 400 courses that aren’t already required as part of the program |
CPSC 302, 303, 304, 311, 312, 314, 322, 330, 340, 404, 406, 411, 420, 421, 422, 425, 426, 427, 430, 440, 444 |
CPEN 499 (3 or 6 credits) |
APSC 440, 461 |
BMEG 310 |
MATH 303, 305, 307, 320, 321, 322, 323, 340, 341, 342, 344, 400, 401, 404, 405, 406, 418, 419, 420, 421, 422, 425, 426, 427, 437, 440, 441, 442, 443 |
STAT 305, 306, 321, 344, 404, 406, 443, 460, 461 |
CPEN students should complete 3 credits of the following Science Electives.
Please note: The below allowed science electives were chosen in such a way as to provide an introduction to the practice of the scientific method. If you plan to ask for permission to replace one of the allowed science electives with another course, you need to prepare a one-page (500 word) explanation detailing why the course you propose will serve as an adequate introduction to the scientific method for future scientists. Please also provide a detailed definition of what a scientific method entails.
ASTR 102, 200 |
ATSC 113 |
BIOL 111, 112, 121, 230, 345; typically any University-level Biology course can be used as a Science elective |
CHEM 201, 250, 251, 260 |
EOSC 110, 112, 114, 210 |
FNH 200 |
GEOG 102, 103 |
PHYS 200, 250, 330, 333, 404 |
CPEN Students should complete 6 credits of Complementary Studies – Humanities and Social Studies, and 3 credits of Complementary Studies – Impact of Technology on Society. Typically, students complete 3 credits from the Humanities and Social Studies credits in their first year before selecting 2nd Year CPEN.
For all information on what courses are eligible for your “Humanities and Social Studies” and “Impact of Technology on Society” credits, please see the EAS Course Planning Page |
Free electives are intended to allow students to explore a breadth of coursework that can extend beyond engineering or science coursework. Other courses cannot be applied to more than one ECE requirement, but free elective coursework can be applied towards ECE requirements and towards requirements of Minors (e.g., Mathematics Minor, Commerce Minor).
CPEN students can complete 6 credits of Free Electives and should note the following:
A maximum of 3 credits can be a language course |
A maximum of 3 credits can be at the 100-level |
Co-op courses cannot be used towards the free electives requirement |
Free Elective credits must be completed at the university level (no transfer credit for AP coursework or for other courses completed in high school) |
Students may count up to 3 transfer credits from another university to cover this requirement |