Program | Co-op|Regular | Customize your degree | First year courses | Graduate studies
Program
The David R. Cheriton School of Computer Science welcomes students from different backgrounds, interests and experiences. Computer science is about understanding how technology works and how to use it to solve problems. In this program, you’ll learn how to design software, work with algorithms, and think logically about complex challenges. You’ll have opportunities to collaborate on projects in teams or explore ideas independently, and no prior programming experience is required. You’ll explore both the theory behind computing and how to apply it to real-world situations, from building useful applications to managing large, complex systems. Along the way, you’ll gain a deeper understanding of the power and limits of technology and how software and hardware work together.
Computer science skills show up in a surprising range of careers that aren’t purely "tech jobs." For example, in modern finance, quantitative analysts (often called "quants") use algorithms and data structures to model markets, assess risk, and guide investment strategies, blending coding with economics rather than building software products. In healthcare, bioinformatics specialists apply computational methods to analyze genetic data, helping researchers understand diseases and develop treatments. This work is rooted more in biology and medicine than traditional technology fields. Even fields like journalism are evolving: data journalists rely on programming and data analysis to uncover trends, visualize complex information, and tell evidence-based stories. In each case, computer science acts as a powerful toolset within a broader scope than the technology profession.
Artificial intelligence (AI) is transforming nearly every field, creating new opportunities for people with computing skills while also changing how work is done across industries. Far from replacing computer science, AI is expanding its impact, making it even more important to understand how software systems are built, how data is used, and how intelligent tools are designed and evaluated. Students in computer science gain the foundation needed to work with AI technologies, apply them responsibly, and adapt as the field continues to evolve. This includes roles in developing AI systems, improving their safety and reliability, and applying them to real-world challenges in areas like sciences, health care, education, business, and the world around us. As AI grows, computer science remains a core driver of innovation and opportunity, with strong demand for people who can think critically about both what these systems can do and how they should be used.
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 programming languages starting from no prior programming experience.
- 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.
- Determine suitable testing strategies, and write automated tests to satisfy those conditions.
- Understand how to select from and apply advanced data structures and algorithms, based on the programming problem.
- Analyze the complexity of algorithm designs, with respect to their running time performance and their space or memory usage, to ensure they scale to the processing of large data sets.
- 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 starting 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 | |
| 1 | 1A | 1B | * | 2A | * | 2B | * | 3A | * | 3B | * | 4A | * | 4B | |
| 2 | 1A | 1B | * | 2A | 2B | * | 3A | * | 3B | * | 4A | * | * | 4B | |
| 3 | 1A | 1B | Off | 2A | * | 2B | * | 3A | * | 3B | * | 4A | * | * | 4B |
| 4 | 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
In your second year, you can 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.
You can also 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 | |
| Digital Hardware | Undergraduate Calendar |
| Game Design | Undergraduate Calendar |
| Human-Computer Interaction | Undergraduate Calendar |
| Software Engineering | Undergraduate Calendar |
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.
Supports at the University of Waterloo
Computer Science and more generally the Faculty of Mathematics offers a wide variety of supports for its students. Students with questions or concerns about navigating life as a Comptuer Science student are always encouraged to reach out for help. CS advisors are a great first point of contact whenever you are unsure where to start or need guidance. Every first and second year Computer Science course includes dedicated staff to support your learning. For additional help in math and related courses, the Mathematics Tutoring Centre offers extra guidance when you need it. We are always looking for ways to improve, and the resources offered here go beyond academics to help students feel welcomed, connected, and supported within their computer science community.
The University of Waterloo more generally offers a wide range of supports for first-year students and beyond concerning accessibility, belonging, or inclusion. Campus Wellness provides support when life feels overwhelming, and AccessAbility Services can help arrange accommodations to ensure your experience at Waterloo is as successful and accessible as possible. Getting involved as a student ambassador, or connecting with one, is another great way to meet people who are passionate about the Waterloo community. These resources reflect Waterloo’s broader commitment to fostering an inclusive and supportive community in which all students can thrive.
Building a Community
At UWaterloo, you will find hundreds of clubs where you can connect with others who share your interests. From the Computer Science Club to the Campus Crusade for Cheese there is something for everyone. Want to get involved in meaningful projects? UW Blueprint offers opportunities to build technology for social good. Interested in working with data? The Data Science Club is a great place to start. Women in Computer Science is another club that has a great culture of mentorship and community. With such a large and vibrant campus community, it’s easy to find your place. And if you don’t see a club that fits your interests, you can always start your own club!
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.