Computer Science

ProgramCo-op|Regular | Customize your degree | First year courses | Graduate studies

Program

Computer Science focuses on the study of software, algorithms, programming, and the limits of computation. Using a combination of theory and application, you will learn how to describe problems in a formal, precise way so that machines can solve them. You will also learn about managing large scale programs, and about understanding the power, limitations, and organization of computer software and hardware.

Learning Outcomes

  • Deepen knowledge of core concepts in linear algebra, differential and integral calculus, probability, statistics, combinatorial enumeration, graph theory, and mathematical logic, leveraging these skills as they relate to computer science.  
  • Write and extend complex computer programs in multiple languages and multiple paradigms (notably imperative, functional, and object-oriented).  
  • Read and produce a specification for a computer program and design and/or implement a working prototype.  
  • Debug and test code to uncover and resolve errors. 
  • Analyze the asymptotic complexity of algorithms and determine the complexity classes of common algorithms.  
  • Apply techniques such as divide-and-conquer, greedy, and dynamic programming to solve a variety of programming problems.  
  • Compare fundamental trade-offs in algorithm design, including time and space, in selecting appropriate data structures, algorithms, and libraries. 
  • Recognize and explain the organization of a computer system and the main functional units of a computer.
  • Describe the main components of modern operating systems and construct simple implementations of those components.    
  • Identify and acknowledge the fundamental, theoretical limits of computation, and of the practical limits of contemporary computers. 

Co-op and regular

Computer Science is available as a co-op or regular program.

As a co-op student, you will have the choice to choose between four co-op sequences before your first year.

  Year 1 Year 2 Year 3 Year 4 Year 5
  F W S F W S F W S F W S F W S
A 1A 1B * 2A * 2B * 3A * 3B * 4A * 4B  
B 1A 1B * 2A 2B * 3A * 3B * 4A * * 4B  
C 1A 1B Off 2A * 2B * 3A * 3B * 4A * * 4B
D 1A 1B 2A * 2B * 3A * 3B * 4A * * 4B  
Reg 1A 1B Off 2A 2B Off 3A 3B Off 4A 4B Off      


F = Fall | W = Winter | S = Spring | * = Work term | Reg = Regular

Customize your degree

You can explore additional areas of interest with your Computer Science studies by adding a specialization in second year to customize your degree.

Specialization

Courses (available on our Undergraduate Calendar)

Artificial Intelligence Undergraduate Calendar
Bioinformatics Undergraduate Calendar
Business Undergraduate Calendar
Computational Fine Arts  Undergraduate Calendar
Digital Hardware Undergraduate Calendar
Human-Computer Interaction Undergraduate Calendar
Software Engineering Undergraduate Calendar


In your second year, you can also request to transfer into Bachelor of Computer Science in Data Science program, which allows for additional focus in Data Science in your Bachelor of Computer Science degree. 

First year courses

Course Course code
Introduction to Computer Science/Designing Functional Programs CS 115, CS 135 or CS 145
Elementary Algorithm Design and Data Abstraction CS 136 or CS 146
Calculus 1 MATH 127, MATH 137 or MATH 147
Calculus 2 MATH 128, MATH 138 or MATH 148
Algebra MATH 135 or MATH 145
Linear Algebra MATH 136 or MATH 146


Course descriptions are available on our Undergraduate Calendar.

For more information on upper year classes, take a look at our suggested academic plans under our "current students" section.

Graduate studies

Following your undergraduate degree, you can continue your studies in Computer Science through our graduate studies program. At Waterloo, you can pursue a Master of Mathematics (MMath) with a specialization in Computer Science.

Our third year students can apply for our accelerated master's option to fast track their program.

Try your hand at research by enrolling in one of our Undergraduate Research Assistantship (URA) positions as a current student. You can work with a professor during your academic or co-op term.