Software Engineering
Software engineers address today's problems and shape the future. In this program you’ll learn to design and work with large-scale software systems. You’ll learn to:
- develop self-driving vehicles
- automate smart cities
- advance healthcare
- secure critical infrastructure
- transform data into action
Potential careers
What can you do with a software engineering degree? Here are a few jobs that relate to the program:
- Business intelligence developer
- Chief technology officer
- Cloud architect
- Cybersecurity analyst
- Data administrator
- Data analyst
- Data engineer
- Network engineer
- Product manager
- Programmer
- Project technical lead
- Software architect
- High-tech entrepreneur
- Software developer
- Software engineer
- Systems analyst
- Systems architect
- Systems designer
Some of these roles may require post-graduate studies or training.
Find a career that fits you
- Explore your career options at an appointment with a career educator.
- Attend career development workshops as you search for work.
- Enrol in the Your Career Starts Here course to generate career ideas and plan your next steps.
Experience & connections
Opportunities in the software engineering program
- With the Co-op Program you can alternate study with paid work.
Opportunities outside your program
- With a work study position you can develop skills during your study term.
- Volunteering is a great way to give back to your community while you build skills.
Networks you can connect to
Here are a few professional associations related to software engineering:
Hands-on learning opportunities
These courses in the software engineering program offer extensive hands-on learning.
Co-op
Co-op work terms
Alternate academic study with paid work terms to gain workplace experience
Course-based
CSC 355 - Digital Logic and Computer Organization
Use ASIC and field-programmable devices
SENG 321 - Requirements Engineering
Do a project following the life cycle methods for requirements engineering
SENG 360 - Security Engineering
Explore software applications
SENG 426 - Software Quality Engineering
Choose quality goals and select, plan and execute quality assurance activities
Creative or physical practice
CSC 225 - Algorithms and Data Structures I
Apply concepts and programming skills to fundamental problems
Creative/design project
CSC 460 - Design and Analysis of Real-time Systems
Design, implement and test a real-time executive and application software
ENGR 110 - Design and Communication I
ENGR 120 - Design and Communication II
Gain practical skills and engage with industry experts
SENG 350 - Software Architecture and Design
Design software architectures with unified modelling language and synthesis
SENG 310 - Human Computer Interaction
Design, implement and evaluate a prototype user interface
SENG 371 - Software Evolution
Evolve an existing project for a software system solution
SENG 468 - Software System Scalability
Do a project related to scalability issues in modern distribution software systems
Lab
CSC 111 - Fundamentals of Programming with Engineering Applications
Experiment with alternative solutions through real-world engineering
CSC 375 - Introduction to System Analysis
Learn to test large-scale software systems
SENG 426 - Software Quality Engineering
Document, review and test the code of an open-source software system
SENG 475 - Advanced Programming Techniques for Robust Efficient Computing
Learn advanced programming techniques for high-efficiency computing
Professional and technical skill development
ENGR 110 - Design and Communication I
ENGR 120 - Design and Communication II
Develop writing and presentation skills
ENGR 130 - Introduction to Professional Practice
Gain skills such as résumé writing and career development
Research project
SENG 499 - Design Project II
Do a team-based project, prepare a report and present a seminar
These courses are not always offered as described.
What you'll learn
Every student at UVic builds skills all employers look for. At UVic Co-op & Career we call these "competencies". This is what you’ll learn in the software engineering program.
Professional practice
- focus on the safety, health and welfare of the public
- focus on environmental protection
- promote health and safety in the workplace
- take on professional assignments only when qualified
- maintain confidentiality and avoid a conflict of interest
- keep informed to maintain competence
- act with fairness, courtesy and good faith toward clients, colleagues and others
- extend public knowledge and appreciation of engineering
Reliability, safety and failure analysis
- understand quality assurance standards and testing procedures
- ensure that systems or components perform their required function
- maintain a current knowledge of safety standards
- establish the mean time between failures when assessing reliability
Design
- gather full requirements for a project
- understand the client’s needs
- model a solution using the appropriate tools
- communicate the design process to the client
- use safe and effective designs
- understand how a design integrates into its environment
Engineering tools
- design equipment and systems using a variety of software packages
- simulate mechanical and electronic systems using the appropriate tools
- analyze systems, equipment and data using the correct tools
- operate mechanical equipment in a lab or workshop
- use electronics and electrical equipment
- develop software and scripts in a variety of environments and languages
- use computer software and systems
- understand databases and use them effectively
- research and recommend new tools where existing tools are inadequate
- choose tools based on their strengths and weaknesses
Engineering knowledge
- understand the mathematical fundamentals of engineering
- use the correct statistical methods to analyze and investigate data
- understand the supporting natural sciences for their discipline of engineering
- understand engineering fundamentals
- understand engineering economics
- understand how engineering specifics integrate into a larger project
- study related subjects to aid a project’s success
Control theory and systems
- apply control theory in the design of dynamic systems
- understand feedback control systems
- identify design specifications
- assess system performance
- identify components of a dc servo system and its use in motion control
- use a control system using feedback circuits
- understand processors and microcontrollers
Networks, hardware and communications
- understand layered network architecture
- uses different digital communication networks to send data
- work with LANs and WANs
- apply different network protocols at different layers
- protect networks from unauthorized access using the appropriate policies
- identify mobile communications techniques and issues affecting quality of multimedia service
- use different types of buses, interrupts, families of processors and instruction sets
Software development, practice and theory
- work within the different software development lifecycle stages
- take business, product and process requirements into consideration
- apply different software development methodologies
- use process improvement models, such as ISO 9000
- solve software development problems using formal methods
- consider software evolution issues during development
Computer hardware and systems
- use the necessary tools to improve system performance
- understand the transfer of information from one system component to another
- compare the performance of similar systems using common metrics
- identify the optimal system for a given problem
- work with different CPU architectures
- use different operating systems
- use different memory management methods
Computer information processing and algorithms
- design automated software test tools
- manipulate information
- create solutions from user specifications and known system constraints
- improve performance using coding best practices
- understand the practical limits of a system for problem solving