Specializations

Certain technical electives available to software engineering students have been organized into specific areas that reflect strong or emerging industry interest. This allows you to focus most of your technical electives in key areas of study.

How do I get a specialization?

The courses within each specialization are divided into two groups: the first group contains courses that are key to the area, and the second group contains supplementary “breadth” courses. To earn a specialization, you must take and pass a minimum of three courses (4.5 units) as follows:

  • Three or more courses must be from Group 1; OR
  • Two or more courses must be from Group 1, and one or more courses must be from Group 2.

Note: If you would like to take more than one specialization, a maximum of one course (1.5 units) can be shared across no more than two specializations.

What if I want to take a course that isn't listed on this page?

The Faculty of Engineering and Computer Science offers a variety of additional courses that are not listed below but may qualify as technical electives in a given specialization, including topics courses, directed studies, and technical projects. If you feel a course is appropriate for your targeted specialization, please contact the BSEng advisor before registering for the class as permission is required from the Program Director.

Where is my specialization noted?

Specializations are not displayed on your transcript or degree parchment. However, once you finish your degree, you can request a certificate from the Software Engineering Academic Advisor to show that you completed the requirements for the specialization area. Specialization certificates are distributed during convocation week.

The deadline for certificate requests is 30 days prior to convocation.

Specialization areas

Data mining and analysis, artificial intelligence, and machine learning

Group 1

  • CSC431 - Machine Learning Theory
  • ECE470 - Artificial Intelligence, OR CSC421 - Introduction to Artificial Intelligence
  • ECE485 - Data Analysis and Pattern Recognition
  • SENG474 - Data Mining

Group 2

  • CSC402 - Systems for Massive Datasets
  • CSC412 - Computing for Cognitive Augmentation
  • CSC425 - Analysis of Algorithms
  • CSC427 - Advanced Topics in Bioinformatics
  • CSC428 - Computational Biology Algorithms
  • CSC349A - Numerical Analysis
  • CSC445 - Operations Research: Linear Programming
  • CSC446 - Operations Research: Simulation
  • ECE403 - Optimization for Machine Learning
  • ECE471 - Computer Vision

Cyber-physical and smart systems

Group 1

  • CSC462 - Distributed Computing
  • CSC467 - Switching, Network Traffic and Quality of Service
  • ECE460 - Control Theory and Systems II
  • ECE463 - Design and Analysis of Computer Networks

Group 2

  • ECE403 - Optimization for Machine Learning
  • ECE448 - Cyber-System Security
  • ECE470 - Artificial Intelligence, OR CSC421 - Introduction to Artificial Intelligence
  • ECE485 - Data Analysis and Pattern Recognition
  • SENG422 - Advanced Software Architecture

Cybersecurity and privacy

Group 1

  • CSC429 - Cryptography, OR ECE406 - Applied Cryptography
  • ECE448 - Cyber-System Security
  • SENG460 - Practice of Information Security and Privacy

Group 2

  • CSC463 - Wireless and Mobile Networks
  • CSC466 - Overlay and Peer-to-Peer Networking
  • CSC467 - Switching, Network Traffic and Quality of Service
  • ECE463 - Design and Analysis of Computer Networks

Performance and scalability

Group 1

  • CSC462 - Distributed Computing
  • CSC464 - Concurrency
  • SENG468 - Software System Scalability
  • SENG475 - Advanced Programming Techniques for Robust Efficient Computing

Group 2

  • CSC402 - Systems for Massive Datasets
  • CSC467 - Switching, Network Traffic and Quality of Service
  • ECE457 - Parallel and Cluster Computing
  • ECE463 - Design and Analysis of Computer Networks

Interaction design and data visualization

Group 1

  • CSC411 - Information Visualization
  • CSC412 - Computing for Cognitive Augmentation
  • SENG411 - Advanced Methods for Human Computer Interaction

Group 2

  • CSC413 - Designing Creativity Support Tools
  • ECE470 - Artificial Intelligence, OR CSC 421 - Introduction to Artificial Intelligence
  • SENG435 - Computer-Supported Cooperative Work

Visual computing (vision/graphics)

Group 1

  • CSC305 - Introduction to Computer Graphics
  • CSC471 - Fundamentals of Computer Rendering
  • CSC472 - Fundamentals of Computer Modelling
  • CSC473 - Fundamentals of Computer Animation
  • ECE471 - Computer Vision

Group 2

  • CSC426 - Computational Geometry
  • CSC461 - Multimedia Systems
  • ECE470 - Artificial Intelligence, OR CSC421 - Introduction to Artificial Intelligence
  • ECE483 - Digital Video Processing
  • SENG475 - Advanced Programming Techniques for Robust Efficient Computing

Disclaimer

Not all elective courses are offered every year, and some courses may require additional prerequisites outside of the software engineering core. Check the UVic Calendar for current course schedules and prerequisites. If you need help planning your electives, make an appointment to see the BSEng advisor.

Software engineering specializations and the courses that qualify may be changed without notice.

Last updated April 27, 2023

The above specializations have been updated: any course registrations as of May 1, 2023 will use these new course lists. Here is a summary of the course additions, deletions, and group changes.