Computer Science

ProgramCo-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 

Undergraduate Calendar

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.