
New Course Offerings
This page contains term-specific information on our newest course offerings, namely those for CS 489: Special Topics. Please note that we cannot guarantee that these courses will be offered again in a future term.
Fall 2025
CS 398: Introduction to Graphics Programming
This course provides an introduction of computer graphics techniques and relevant concepts such as graphics processing units (GPUs). The main work in this course involves hands-on programming assignments using a shadier programming language on GPUs. Students completing this course will gain knowledge of basic concepts in computer graphics and will be able to apply those to develop a computer graphics program that utilizes GPUs. This course will also cover some basics of general purpose programming on GPUs where students get to learn how to harness GPUs beyond problems in computer graphics.
Intended Audience: Third or fourth year Computer Science students.
Prerequisites: Students should be able to understand linear algebra, calculus, data structures, and algorithms. They should also be able to learn a new programming language and refer to external resources as needed.
CS 489/698: Foundations of Modern Cryptography
This course provides an introduction to basic principles and tools of modern cryptography. The course’s main focus is on theoretical foundations of cryptography: Basing the security of cryptographic primitives and protocols on well-studied complexity-theoretic assumptions via reductions. Students completing this course will learn about basic cryptographic primitives, and how to use them as part of larger constructions in a provably sound way.
Intended Audience: Students who enjoy cryptography, security, algorithms, and/or theory of computation.
Prerequisites: Any one of CS 245, CS 341, CS 360 or CS 365 or their equivalents. In general, a good understanding of algorithms and basic notions of computation (e.g., polynomial time, probabilistic computation).
Spring 2025
CS 453: Software and Systems Security
CS 459: Privacy, Cryptography, Network and Data Security
(CS 458: Computer Security and Privacy is no longer offered.)
CS489/698: Monte Carlo Methods for Advanced Applications
This course covers stochastic techniques used in the development of computer models employed in different fields, from computer graphics and biomedical engineering, to remote sensing and artificial intelligence, just to name a few. The course has four main modules. The first module provides theoretical background on fundamental probability concepts and Monte Carlo methods. The second and third modules are devoted to algorithms and methodology used in the development of Monte Carlo based models for interdisciplinary applications. While the case studies examined in the second and third modules largely involve light transport simulations, the described methodology has also been employed in other areas. These connections are discussed in the forth module along with a broad outlook on the disseminated use of Monte Carlo methods in art, science and medicine.
Grading: Midterm and Final Exams (50%), Assignments and Project (50%).
Intended Audience: CS and Engineering students, 3B or above; first year CS or Engineering graduate students.
Recommended Background: Students should have experience with C++ programming language and Matlab. It is expected that students have taken STAT 230/240 or similar courses (for students outside the computer science program). Familiarity with computer graphics techniques will be helpful, but not required. Reviews of relevant background topics may be given during the course as needed.
CS489/698: Software Delivery
This course introduces the fundamental and modern concepts, tools, and approaches involved in delivering software to consumers. Modern software delivery teams are tasked with selecting appropriate software delivery tools and assembling them to produce integration, release, and deployment (a.k.a., DevOps) pipelines that connect development, release, and operations processes. Through the course material, students will gain experience in developing integration, release, and deployment pipelines. More specifically, students will:
- develop an understanding of the scope and challenges of modern software delivery
- learn to leverage several key software delivery tools (build and test automation, infrastructure-as-code, version control automation)
- study and improve upon existing open-source integration, release, and deployment pipelines
Past Course Website (Winter 2024, To Be Updated): https://cs.uwaterloo.ca/~s4mcinto/courses/CS489/1241/
Grading: (subject to change) Assignments: 12%, Final and Midterm Exams (F): 60%, Team Project: 28%
Intended Audience: Fourth year CS students or first year CS graduate students
Pre-requisites: CS 350
Winter 2025
CS489/698-001: Secure Programming
This course provides an introduction to building secure software applications. It examines the software development life cycle and teaches what developers can do in each step to make their software more secure. It also will cover common vulnerabilities that exist and how developers can avoid or safeguard against them.
Students completing this course should be able to build and deploy software with fewer security issues.
Intended audience: Fourth year CS students (CS 45X), or first year CS graduate students (CS 65X)
Corequisites: CS454 or CS456
Prerequisites: (MATH135 or MATH145) and (CS 350 or SE 350).
CS489/698-002: Computational Audio
This is a project-based course. Students choose their own topic and direction in any area related to audio (sound, music, acoustics, digital signal processing, electronics, etc). The project is developed with a proposal (week 5), a progress report (week 8), an optional in class presentation (week 12) and a final report (end of term).
Students may work individually or in groups. Curriculum and background material will be covered in lectures. Grading is 50% assignments, 50% project. Assignments will involve creation, analysis, and processing of audio files. Examples in lectures will be presented in Matlab/Octave though students are free to do assignments (and their project) on any platform.
Intended audience: CS students, 3B or above.
Prerequisites: None. Lecture material is self contained, however Matlab and Scientific Computation (CS370/71) or equivalent background is recommended.