Computer Science
In the computer science program you’ll study computer systems and software. You'll take courses in:
- computer science
- software engineering
- mathematics
- technical writing
Potential careers
What can you do with a computer science degree? Here are a few jobs that relate to the program:
- software developer
- security analyst
- systems administrator
- systems auditor
- data administration
- technical writer
- operations manager
- web technician
- strategic analyst
- researcher
- networks architect or engineer
- intelligence developer
- systems designer
- web developer
- programmer
- systems architect
- full-stack developer
- mobile application designer or developer
- artificial intelligence and machine learning scientist
- research and development (R&D) scientist
- software quality assurance manager
- data scientist
- user interface designer
- database administrator
- database designer
- database analyst
- cloud computing engineer
- information security analyst
Some of these roles may require post-graduate ³Ô¹ÏÍø 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 computer science 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 computer science:
Hands-on learning opportunities
These courses in the computer science 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 167 - Game Strategy, Interaction and Design
Gain experience with game development
CSC 305 - Introduction to Computer Graphics
Complete hands-on graphics projects
CSC 355 - Digital Logic and Computer Organization
Use ASIC and field-programmable devices and learn digital logic design
CSC 360 - Operating Systems
Gain technical operating system skills
CSC 361 - Computer Communications and Networks
Gain technical network programming skills
CSC 375 - Introduction to Systems Analysis
Develop system analysis skills
CSC 446 - Operations Research: Simulation
Experience system simulations
CSC 463 - Wireless and Mobile Networks
CSC 466 - Overlay and Peer-to-Peer Networking
CSC 467 - Switching, Network Traffic and Quality of Service
Use advanced techniques and tools to analyze computer networks
CSC 471 - Fundamentals of Computer Rendering
CSC 472 - Fundamentals of Computer Modelling
CSC 473 - Fundamentals of Computer Animation
Use advanced techniques for 2D and 3D computer graphics and image processing
CSC 475 - Music Retrieval Techniques
Use advanced techniques and tools to analyze audio and music
Creative or physical practice
CSC 225 - Algorithms and Data Structures I
Apply concepts and programming skills
CSC 226 - Algorithms and Data Structures II
Apply advanced concepts and programming skills
Creative or design project
CSC 103 - Introductory Programming and Software Development
Build and deploy a software application
CSC 230 - Introduction to Computer Architecture
Do a software project on a specified hardware
CSC 460 - Design and Analysis of Real-time Systems
Design, use and test a real-time executive and application software
Lab
CSC 100 - Elementary Computing
Learn web page development and use of multimedia tools
CSC 105 - Computers and Information Processing
Gain experience with Office Suite
CSC 110 - Fundamentals of Programming I
Explore program design using hands-on tools
CSC 111 - Fundamentals of Programming with Engineering Applications
Experiment with alternative solutions through real-world engineering
CSC 130 - World Wide Web and Mobile Applications
Create web applications and gain skills in multimedia programming
CSC 167 - Game Strategy, Interaction and Design
Explore game development
CSC 205 - 2D Computer Graphics and Image Processing
Gain experience with graphics software
CSC 361 - Computer Communications and Networks
Learn network debugging and protocol testing
Research project
CSC 499 - Honours Seminar and Project
Prepare a written report and present a seminar describing your work
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 computer science program.
Networks, hardware and communications
- understand layered network architecture
- use different digital communication networks to send data
- work with LANs and WANs
- use different network protocols at different layers
- protect networks from unauthorized access using the appropriate policies
- identify mobile communications techniques and issues affecting multimedia quality of 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
- use 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
- understand computer science theory
- 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