ECE Students must pre-enrol in all elective courses.
Courses without sufficient numbers after pre-enrolment will be canceled.

Note that enrolment in elective is not guaranteed if you do not pre-enrol. Pre-enrolment is used to find sufficiently large classrooms for all courses across all disciplines and failure to pre-enrol may result in a classroom that is smaller than the actual demand. Those Technical Electives that you are most interested in must therefore be listed first on your pre-enrolment form.

Each Electrical and Computer Engineering (ECE) Undergraduate student must complete five technical electives (TEs). Of those five courses:

  • At least three must be approved ECE NNN courses,
  • At most two may be 2nd- or 3rd-year courses (ECE 2NN and ECE 3NN) from the other ECE program as approved below, and
  • At most two may be taken from other departments (usually engineering) as approved below.

Due to resource limitations or limited enrollment, it may be necessary to  cancel some offerings of certain 4th-year Technical Electives. Students should pre-enrol in all technical electives at the appropriate time.

Current as of Spring 2017

Number Title Instructor
ECE 413 Digital Signal Processing Oleg Michailovich
ECE 414 Wireless Communications Guang Gong
ECE 433 Fabrication Technologies for Micro and Nano Devices Not offered
ECE 445 Integrated Digital Electronics Lan Wei
ECE 452 Software Software Design and Architectures Not offered
ECE 454 Distributed Computing Wojciech Golab
ECE 455 Embedded Software Carlos Moreno
ECE 457A Cooperative and Adaptive Algorithms Allaa Hilal
ECE 457C Reinforcement Learning Mark Crowley
ECE 458 Computer Security Vijay Ganesh
ECE 462 Electrical Distribution Systems Mohammed Nassar
ECE 463 Design and Applications of Power Electronic Converters Mehrdad Kazerani
ECE 475 Electromagnetic Radiation and Propagation Omar Ramahi
ECE 481 Digital Control Systems Daniel Miller
ECE 486 Robot Dynamics and Control Dana Kulic
ECE 493 T20 NEW! IoT Signal Processing Otman Basir

List of 4B (Winter) Technical Electives

Current as of Winter 2018

Number Title Instructor
ECE 406 Algorithm Design and Analysis Stephon Smith
ECE 409 Cryptography and System Security Guang Gong
ECE 415 Multimedia Communications Not offered
ECE 416 Advanced Topics in Networking Catherine Rosenberg
ECE 417 NEW! Image Processing Oleg Michailovich
ECE 423 Embedded Computer Systems Rodolfo Pellizzoni
ECE 432 Radio Frequency Integrated Devices and Circuits John Long
ECE 444 Integrated Analog Electronics Adel Sedra
ECE 451 Software Software Requirements Specification and Analysis Not offered
ECE 453 Software Testing, Quality Assurance and Maintenance Arie Gurfinkel
ECE 457B Fundamentals of Computational Intelligence Fakhri Karray
ECE 459 Programming for Performance Jeff Zarnett
ECE 464 High Voltage Engineering and Power System Protection Shesha Jayaram
ECE 467 Power System Analysis, Operations and Markets Claudio Canizares
ECE 474 Radio and Wireless Systems Slim Boumaiza
ECE 477 Photonic Devices and Systems Hamed Majedi
ECE 488 Multivariable Control Systems David Wang
ECE 493 T18 NEW! Non-linear Electroncis Bosco Leung
ECE 493 T21 NEW! Autonomous Vehicles Krzysztof Czarnecki

It must be noted that ECE 403, ECE 404, and ECE 405 (cross-listed with PHYS 358, 233, and 256, respectively) do not count as technical electives; they are List-1 Natural Science Electives (NSEs).

Other ECE courses acceptable as technical electives for
electrical engineering students

Two of these five courses may be used as Technical Electives for electrical engineering students:

Other ECE courses acceptable as technical electives for
computer engineering students

Two of these three courses may be used as technical electives for computer engineering students:

Taking Technical Electives in Terms other than 4A and 4B

Some courses (for example, ECE 428) are taught outside of their scheduled 4th-year Academic Terms as a service to other programs. If, for example, a student who is in Waterloo during his or her sixth Co-op Work Term (between 4A and 4B) or possibly even between 3B and 4A if the student is in Stream 8, that student may consider taking available courses in Software Engineering, Mechatronics, or Nanotechnology, however, any such choice must be discussed with the appropriate Program Academic Advisor. Please contact the appropriate Program Advisor/Co-ordinator (Computer Engineering or Electrical Engineering). Such courses will almost certainly require a Course Override Form signed by the Course Instructor to override prerequisites. This form must be submitted to the appropriate Program Advisor/Co-ordinator.

Approving alternate technical electives

If you would like to take a course and have it count as a TE but it does not appear below, you may request to have the course approved as a Technical Elective. Please fill in an Elective Approval Form and submit it to your Academic Advisor before you take the course.

Graduate-level TEs

If the course is a graduate-level ECE course, please consult with the Professor to ensure that the course is not equivalent to an already-existing 4th-year ECE course.

Note that graduate students usually take only two courses per term and that the work-load in each course can be commensurately higher. If you are not maintaining an excellent standing, you should seriously consider whether or not you require a particular graduate-level course for your technical electives.

Management science technical electives

Up to two of the five Management Science courses

  • MSCI 331 Operations Research 1,
  • MSCI 431 Operations Research 2,
  • MSCI 432 Production and Operations Management,
  • MSCI 444 Information Systems Analysis and Design (for EE students only), or
  • MSCI 452 Decision Making Under Uncertainty

may be used to satisfy your maximum of two 4th-year non-ECE TEs. These are often taken by students completing the Management Science option. Please note that CO 250 Introduction to Optimization may be used in place of MSCI 331 in order to satisfy the Management Science option.

List of pre-approved alternate technical electives

The courses listed in Table 2 show all other non-ECE courses which have, in the past, been used as Technical Electives. You do not have to seek approval to have these counted as your allowed non-ECE technical electives. You may need to fill in a Course Override Form to be admitted into these courses, as you may need the Professor's approval.

  • ACTSC/STAT 446 Mathematical Models in Finance
  • BME 487-T1 Special Topics on Biomedical signals (Currently, only the course on ultrasound is approved)
  • CHE 522 Advanced Process Dynamcis and Control
  • CHE 524 Process Control Laboratory
  • CIVE 460 Orthopaedic Bioengineering
  • CO 250 Introduction to Optimization; however, if this course is taken as a TE, the other four TEs must be ECE TEs.
  • CO 456 Introduction to Game Theory
  • CO 463 Convex Optimization and Analysis
  • CO 466 Continuous Optimization
  • CS 343 Concurrent and Parallel Programming
  • CS 349 User Interfaces
  • CS 442 Principles of Programming Languages
  • CS 448 Database Systems Implementation
  • CS 452 Real-time Programming
  • CS 480 Introduction to Machine Learning
  • CS 484 Computational Vision
  • CS 485 Statistical and Computational Foundations of Machine Learning
  • CS 488 Introduction to Computer Graphics
  • ECON 405 Topics in Financial Econometrics
  • ME 351 Fluid Mechanics 1
  • ME 452 Energy Transfer in Buildings
  • ME 459 Energy Conversion
  • MSCI 331 Operations Research 1
  • MSCI 431 Operations Research 2
  • MSCI 432 Production and Operations Management
  • MSCI 446 Data Mining
  • MSCI 452 Decision Making Under Uncertainty
  • MTE 544 Autonomous Mobile Robots
  • STAT 341 Computational Statistics and Data Analysis
  • STAT 440 Computational Inference
  • STAT 441 Statistical Learning - Classification
  • STAT 444 Statistical Learning - Function Estimation
  • SYDE 372 Introduction to Pattern Recognition
  • SYDE 411 Optimization and Numerical Methods
  • SYDE 422/522 Machine Intelligence
  • SYDE 544 Biomedical Measurement and Signal Processing
  • SYDE 542 Interface Design
  • SYDE 556 Simulating Neurobiological Systems
  • SYDE 572 Introduction to Pattern Recognition
  • SYDE 575 Image Processing

Graduate Courses

A number of undergraduate students have opted at times to take graduate-level courses either as technical electives or as extra courses (possibly for graduate studies). These must be added through Course Override Forms, as a graduate course requires an override of the student's career. The following graduate-level courses may be appropriate for some ECE undergraduate students:

  • ECE 662 Power Systems
  • ECE 665 High Voltage Engineering Applications
  • ECE 669 Dielectric Materials
  • ECE 760 Topic 4 Operation Restructured Power Systems (prerequisite of ECE 467)
  • ECE 765 Topic 4 Distribution Systems Engineering
  • ECE 671 Microwave & RF Engineering

Please see the Schedule of Classes for Graduate Students, select ECE for the subject. To add such a course, you must fill in a Course Override Form and have the instructor sign it before you submit it to your Program Advisor/Co-ordinator. Courses where the Catalog Number ends in PD may not be taken as a technical electives under any circumstances.

Courses NOT Allowed as TEs

The following courses are not allowed as Technical Electives: ECON 3721, ECON 404, KIN 341, SCI 238, CS 241, CS 432, MSCI 454.

It must be noted that ECE 403, ECE 404, and ECE 405 (cross-listed with PHYS 358, 233, and 256, respectively) do not count as technical electives; they are List-1 Natural Science Electives (NSEs).


1 While ECON 372 is an antirequisite of STAT 446 (there is at least a 50% overlap), it is not at the same level as STAT 446 and consequently, may not be used as a TE.