Metadata
Title
Computer Science
Category
undergraduate
UUID
f4b0648995824fe2810aae522f8ff4c2
Source URL
https://cs.uwaterloo.ca/future-undergraduate-students/undergraduate-programs-and...
Parent URL
https://cs.uwaterloo.ca
Crawl Time
2026-03-18T05:15:04+00:00
Rendered Raw Markdown
# Computer Science

**Source**: https://cs.uwaterloo.ca/future-undergraduate-students/undergraduate-programs-and-courses/computer-science
**Parent**: https://cs.uwaterloo.ca

[Program](#Program) | [Co-op|Regular](#Co-op) |  [Customize your degree](#customize-your-degree) |  [First year courses](#Courses) |  [Graduate studies](#Grad%20studies)

## 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](https://cs.uwaterloo.ca/node/2868) 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](https://uwaterloo.ca/academic-calendar/undergraduate-studies/catalog#/programs/H1vJJCCj3) |
| Bioinformatics | [Undergraduate Calendar](https://uwaterloo.ca/academic-calendar/undergraduate-studies/catalog#/programs/r17wJ10As2) |
| Business | [Undergraduate Calendar](https://uwaterloo.ca/academic-calendar/undergraduate-studies/catalog#/programs/S1eD1J0Aj2) |
| Computational Fine Arts | [Undergraduate Calendar](https://uwaterloo.ca/academic-calendar/undergraduate-studies/catalog#/programs/SkLD1kC0jh) |
| Digital Hardware | [Undergraduate Calendar](https://uwaterloo.ca/academic-calendar/undergraduate-studies/catalog#/programs/H1Svy1R0jh) |
| Human-Computer Interaction | [Undergraduate Calendar](https://uwaterloo.ca/academic-calendar/undergraduate-studies/catalog#/programs/rkP1y00ih) |
| Software Engineering | [Undergraduate Calendar](https://uwaterloo.ca/academic-calendar/undergraduate-studies/catalog#/programs/S1v11A0sn) |

\
In your second year, you can also request to transfer into  [Bachelor of Computer Science in Data Science program](https://uwaterloo.ca/data-science/undergraduate-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](https://uwaterloo.ca/academic-calendar/undergraduate-studies/catalog#/courses?group=Computer%20Science%20(CS)).

For more information on upper year classes, take a look at our  [suggested academic plans](https://cs.uwaterloo.ca/node/3065) 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)](https://cs.uwaterloo.ca/node/2922#MMath-CS) with a specialization in Computer Science.

Our third year students can apply for our  [accelerated master's](https://uwaterloo.ca/academic-calendar/graduate-studies/catalog#/policy/HJoaUvkRp) option to fast track their program.

Try your hand at research by enrolling in one of our  [Undergraduate Research Assistantship (URA)](https://cs.uwaterloo.ca/node/2897) positions as a current student. You can work with a professor during your academic or co-op term.

Questions?

Contact us!