Course Timetable
APSC 160 - 2023W
Introduction to Computation in Engineering Design
Analysis and simulation, laboratory data acquisition and processing, measurement interfaces, engineering tools, computer systems organization, programming languages. Credit will only be given for one of: APSC 160, CPSC 301, or EOSC 211.
Section | Term | Days | Time | Location | Instructor(s) | Webpage | Details |
---|---|---|---|---|---|---|---|
101 | Term 1 | Tue Thu | 8:00 AM - 9:30 AM | CIRS 1250 | Seyyed Hosseini | ||
Instructor(s) |
|||||||
102 | Term 1 | Tue Thu | 3:30 PM - 5:00 PM | LIFE 2201 | Rik Blok | ||
Instructor(s) |
|||||||
9AR | Term 1 | ||||||
|
|||||||
VE1 | Term 1 | Mon Wed Fri | 4:00 PM - 5:00 PM | ORCH 3074 | |||
|
|||||||
202 | Term 2 | Tue Thu | 8:00 AM - 9:30 AM | FSC 1005 | |||
|
|||||||
204 | Term 2 | Tue Thu | 3:30 PM - 5:00 PM | GEOG 100 | |||
|
CPSC 100 - 2023W
Computational Thinking
Meaning and impact of computational thinking. Solving problems using computational thinking, testing, debugging. How computers work. No prior computing experience required. Not for students with existing credit for or exemption from CPSC 107, CPSC 110 or APSC 160.
Section | Term | Days | Time | Location | Instructor(s) | Webpage | Details |
---|---|---|---|---|---|---|---|
101 | Term 1 | Mon Wed Fri | 3:00 PM - 4:00 PM | DMP 310 | Oluwakemi Ola | ||
Instructor(s) Extended Description “Computational thinking is the thought processes involved in formulating problems and their solutions so that the solutions are in a form that can be effectively carried out by an information-processing agent” [Cuny, Snyder, Wing 10]. Computational thinking and its outcomes (i.e., computers, software, and their usage) are increasingly shaping the world in which we live. In order to be productive citizens of the 21st century, UBC students need to have the opportunity to learn concepts such as how data can be processed to gain insights, how computers use their personal data, and why computational thinking enables some amazing tasks (e.g., finding directions, sharing videos, and communicating instantly) but is as yet so bad at others (e.g., translating documents between languages). CPSC 100 will give non-computer science majors key insights into (1) the building blocks necessary for computational thinking (2) applications of computational thinking and (3) how computational thinking and its applications impact the world around them. Students will explore the past, present, and future of computing including a student directed exploration of computing and computational thinking issues in the news. This course is targeted to first year students, but is open to all. |
|||||||
201 | Term 2 | Mon Wed Fri | 3:00 PM - 4:00 PM | DMP 310 | |||
Extended Description “Computational thinking is the thought processes involved in formulating problems and their solutions so that the solutions are in a form that can be effectively carried out by an information-processing agent” [Cuny, Snyder, Wing 10]. Computational thinking and its outcomes (i.e., computers, software, and their usage) are increasingly shaping the world in which we live. In order to be productive citizens of the 21st century, UBC students need to have the opportunity to learn concepts such as how data can be processed to gain insights, how computers use their personal data, and why computational thinking enables some amazing tasks (e.g., finding directions, sharing videos, and communicating instantly) but is as yet so bad at others (e.g., translating documents between languages). CPSC 100 will give non-computer science majors key insights into (1) the building blocks necessary for computational thinking (2) applications of computational thinking and (3) how computational thinking and its applications impact the world around them. Students will explore the past, present, and future of computing including a student directed exploration of computing and computational thinking issues in the news. This course is targeted to first year students, but is open to all. |
CPSC 103 - 2023W
Introduction to Systematic Program Design
Computation as a tool for systematic problem solving in non-computer-science disciplines. Introductory programming skills. Not for credit for students who have credit for, or exemption from, or are concurrently taking CPSC 110 or APSC 160. No programming experience expected.
Section | Term | Days | Time | Location | Instructor(s) | Webpage | Details |
---|---|---|---|---|---|---|---|
101 | Term 1 | Tue Thu | 9:30 AM - 11:00 AM | LIFE 2201 | Ian Mitchell | ||
Instructor(s) Extended Description When you have completed this course, you will be able to systematically design small programs using the Python programming language. You will be able to take a problem from an academic discipline of your choice, appropriately represent the domain information as data in your program, and design functions that successfully solve your problem. You will learn how to break down a large problem into well-structured sub-problems, each of which will be solved systematically. You will understand how programs work which will help you better understand the computer-based world that you interact with every day. You will be better able to communicate with computer scientists in your future workplace. This course is designed for students who are not computer science majors. There are no prerequisites. |
|||||||
102 | Term 1 | Tue Thu | 2:00 PM - 3:30 PM | LIFE 2201 | Rik Blok | ||
Instructor(s) Extended Description When you have completed this course, you will be able to systematically design small programs using the Python programming language. You will be able to take a problem from an academic discipline of your choice, appropriately represent the domain information as data in your program, and design functions that successfully solve your problem. You will learn how to break down a large problem into well-structured sub-problems, each of which will be solved systematically. You will understand how programs work which will help you better understand the computer-based world that you interact with every day. You will be better able to communicate with computer scientists in your future workplace. This course is designed for students who are not computer science majors. There are no prerequisites. |
|||||||
201 | Term 2 | Tue Thu | 11:00 AM - 12:30 PM | LIFE 2201 | Giulia Toti | ||
Instructor(s) Extended Description When you have completed this course, you will be able to systematically design small programs using the Python programming language. You will be able to take a problem from an academic discipline of your choice, appropriately represent the domain information as data in your program, and design functions that successfully solve your problem. You will learn how to break down a large problem into well-structured sub-problems, each of which will be solved systematically. You will understand how programs work which will help you better understand the computer-based world that you interact with every day. You will be better able to communicate with computer scientists in your future workplace. This course is designed for students who are not computer science majors. There are no prerequisites. |
|||||||
202 | Term 2 | Tue Thu | 3:30 PM - 5:00 PM | CIRS 1250 | Giulia Toti | ||
Instructor(s) Extended Description When you have completed this course, you will be able to systematically design small programs using the Python programming language. You will be able to take a problem from an academic discipline of your choice, appropriately represent the domain information as data in your program, and design functions that successfully solve your problem. You will learn how to break down a large problem into well-structured sub-problems, each of which will be solved systematically. You will understand how programs work which will help you better understand the computer-based world that you interact with every day. You will be better able to communicate with computer scientists in your future workplace. This course is designed for students who are not computer science majors. There are no prerequisites. |
|||||||
V01 | Term 2 | Mon Wed | 10:30 AM - 12:00 PM | ORCH 4074 | Meghan Allen | ||
Instructor(s) Extended Description When you have completed this course, you will be able to systematically design small programs using the Python programming language. You will be able to take a problem from an academic discipline of your choice, appropriately represent the domain information as data in your program, and design functions that successfully solve your problem. You will learn how to break down a large problem into well-structured sub-problems, each of which will be solved systematically. You will understand how programs work which will help you better understand the computer-based world that you interact with every day. You will be better able to communicate with computer scientists in your future workplace. This course is designed for students who are not computer science majors. There are no prerequisites. |
CPSC 107 - 2023W
Systematic Program Design
Fundamental computation and program structures. Continuing systematic program design from CPSC 103.
Section | Term | Days | Time | Location | Instructor(s) | Webpage | Details |
---|---|---|---|---|---|---|---|
201 | Term 2 | Mon Wed Fri | 11:00 AM - 12:00 PM | LIFE 2201 | |||
|
|||||||
207 | Term 2 | Mon Wed Fri | 1:00 PM - 2:00 PM | LSK 200 | Rik Blok | ||
Instructor(s) |
CPSC 110 - 2023W
Computation, Programs, and Programming
Fundamental program and computation structures. Introductory programming skills. Computation as a tool for information processing, simulation and modelling, and interacting with the world.
Section | Term | Days | Time | Location | Instructor(s) | Webpage | Details |
---|---|---|---|---|---|---|---|
101 | Term 1 | Tue Thu | 9:30 AM - 11:00 AM | LSK 462 | Gregor Kiczales | ||
Instructor(s) Extended Description Computation, programs and programming play a vital role in the work of scientists, engineers, artists and other professionals: they allow us to organize, store, analyze and visualize information; create animations, music, and online communities; control devices in our environment; develop computational models and simulations; and much much more. The major goal of this course is to introduce students to the practice of systematic problem solving through the design of programs. The course will also help you understand more deeply how computation and programs work, and how they have the power to do what they do. Do you know how to design a computer animation? Or a multi-player game? Or how to combine information from sources like eBay and Google automatically? Or a game that runs on your phone? Do you know how to use the process of writing a computer program to better understand ecosystems or Translink schedules? This course will show you how—we will explore systems like these as part of our lab projects. The course presents an approach to systematic problem analysis and solution design, and prepares students for further course-based and/or independent learning of Computer Science skills and concepts. The course is designed to be interesting, accessible and useful to a wide range of students. No prior programming experience is assumed, and very little math and science background is required. This makes the course appropriate for all UBC students—CS majors and non-majors alike. |
|||||||
102 | Term 1 | Tue Thu | 12:30 PM - 2:00 PM | IRC 4 | Gregor Kiczales | ||
Instructor(s) Extended Description Computation, programs and programming play a vital role in the work of scientists, engineers, artists and other professionals: they allow us to organize, store, analyze and visualize information; create animations, music, and online communities; control devices in our environment; develop computational models and simulations; and much much more. The major goal of this course is to introduce students to the practice of systematic problem solving through the design of programs. The course will also help you understand more deeply how computation and programs work, and how they have the power to do what they do. Do you know how to design a computer animation? Or a multi-player game? Or how to combine information from sources like eBay and Google automatically? Or a game that runs on your phone? Do you know how to use the process of writing a computer program to better understand ecosystems or Translink schedules? This course will show you how—we will explore systems like these as part of our lab projects. The course presents an approach to systematic problem analysis and solution design, and prepares students for further course-based and/or independent learning of Computer Science skills and concepts. The course is designed to be interesting, accessible and useful to a wide range of students. No prior programming experience is assumed, and very little math and science background is required. This makes the course appropriate for all UBC students—CS majors and non-majors alike. |
|||||||
104 | Term 1 | Mon Wed | 12:30 PM - 2:00 PM | MCML 160 | |||
Extended Description Computation, programs and programming play a vital role in the work of scientists, engineers, artists and other professionals: they allow us to organize, store, analyze and visualize information; create animations, music, and online communities; control devices in our environment; develop computational models and simulations; and much much more. The major goal of this course is to introduce students to the practice of systematic problem solving through the design of programs. The course will also help you understand more deeply how computation and programs work, and how they have the power to do what they do. Do you know how to design a computer animation? Or a multi-player game? Or how to combine information from sources like eBay and Google automatically? Or a game that runs on your phone? Do you know how to use the process of writing a computer program to better understand ecosystems or Translink schedules? This course will show you how—we will explore systems like these as part of our lab projects. The course presents an approach to systematic problem analysis and solution design, and prepares students for further course-based and/or independent learning of Computer Science skills and concepts. The course is designed to be interesting, accessible and useful to a wide range of students. No prior programming experience is assumed, and very little math and science background is required. This makes the course appropriate for all UBC students—CS majors and non-majors alike. |
|||||||
CH1 | Term 1 | ||||||
Extended Description Computation, programs and programming play a vital role in the work of scientists, engineers, artists and other professionals: they allow us to organize, store, analyze and visualize information; create animations, music, and online communities; control devices in our environment; develop computational models and simulations; and much much more. The major goal of this course is to introduce students to the practice of systematic problem solving through the design of programs. The course will also help you understand more deeply how computation and programs work, and how they have the power to do what they do. Do you know how to design a computer animation? Or a multi-player game? Or how to combine information from sources like eBay and Google automatically? Or a game that runs on your phone? Do you know how to use the process of writing a computer program to better understand ecosystems or Translink schedules? This course will show you how—we will explore systems like these as part of our lab projects. The course presents an approach to systematic problem analysis and solution design, and prepares students for further course-based and/or independent learning of Computer Science skills and concepts. The course is designed to be interesting, accessible and useful to a wide range of students. No prior programming experience is assumed, and very little math and science background is required. This makes the course appropriate for all UBC students—CS majors and non-majors alike. |
|||||||
201 | Term 2 | Tue Thu | 12:30 PM - 2:00 PM | DMP 301 | Oluwakemi Ola | ||
Instructor(s) Extended Description Computation, programs and programming play a vital role in the work of scientists, engineers, artists and other professionals: they allow us to organize, store, analyze and visualize information; create animations, music, and online communities; control devices in our environment; develop computational models and simulations; and much much more. The major goal of this course is to introduce students to the practice of systematic problem solving through the design of programs. The course will also help you understand more deeply how computation and programs work, and how they have the power to do what they do. Do you know how to design a computer animation? Or a multi-player game? Or how to combine information from sources like eBay and Google automatically? Or a game that runs on your phone? Do you know how to use the process of writing a computer program to better understand ecosystems or Translink schedules? This course will show you how—we will explore systems like these as part of our lab projects. The course presents an approach to systematic problem analysis and solution design, and prepares students for further course-based and/or independent learning of Computer Science skills and concepts. The course is designed to be interesting, accessible and useful to a wide range of students. No prior programming experience is assumed, and very little math and science background is required. This makes the course appropriate for all UBC students—CS majors and non-majors alike. |
|||||||
203 | Term 2 | Tue Thu | 9:30 AM - 11:00 AM | SPPH B151 | Oluwakemi Ola | ||
Instructor(s) Extended Description Computation, programs and programming play a vital role in the work of scientists, engineers, artists and other professionals: they allow us to organize, store, analyze and visualize information; create animations, music, and online communities; control devices in our environment; develop computational models and simulations; and much much more. The major goal of this course is to introduce students to the practice of systematic problem solving through the design of programs. The course will also help you understand more deeply how computation and programs work, and how they have the power to do what they do. Do you know how to design a computer animation? Or a multi-player game? Or how to combine information from sources like eBay and Google automatically? Or a game that runs on your phone? Do you know how to use the process of writing a computer program to better understand ecosystems or Translink schedules? This course will show you how—we will explore systems like these as part of our lab projects. The course presents an approach to systematic problem analysis and solution design, and prepares students for further course-based and/or independent learning of Computer Science skills and concepts. The course is designed to be interesting, accessible and useful to a wide range of students. No prior programming experience is assumed, and very little math and science background is required. This makes the course appropriate for all UBC students—CS majors and non-majors alike. |
CPSC 121 - 2023W
Models of Computation
Physical and mathematical structures of computation. Boolean algebra and combinations logic circuits; proof techniques; functions and sequential circuits; sets and relations; finite state machines; sequential instruction execution.
Section | Term | Days | Time | Location | Instructor(s) | Webpage | Details |
---|---|---|---|---|---|---|---|
101 | Term 1 | Tue Thu | 9:30 AM - 11:00 AM | LSK 200 | Seyyed Hosseini | ||
Instructor(s) Extended Description CPSC 121 explores formal modeling systems that help us to understand and to explore the capabilities of computers and, more generally, of any problem solving process. Our exploration of these systems will be guided by the desire to answer the following four practical questions:
|
|||||||
102 | Term 1 | Tue Thu | 12:30 PM - 2:00 PM | SCRF 100 | Karina Mochetti | ||
Instructor(s) Extended Description CPSC 121 explores formal modeling systems that help us to understand and to explore the capabilities of computers and, more generally, of any problem solving process. Our exploration of these systems will be guided by the desire to answer the following four practical questions:
|
|||||||
103 | Term 1 | Tue Thu | 5:00 PM - 6:30 PM | SCRF 100 | Karina Mochetti | ||
Instructor(s) Extended Description CPSC 121 explores formal modeling systems that help us to understand and to explore the capabilities of computers and, more generally, of any problem solving process. Our exploration of these systems will be guided by the desire to answer the following four practical questions:
|
|||||||
104 | Term 1 | Mon Wed | 3:30 PM - 5:00 PM | ANGU 098 | |||
Extended Description CPSC 121 explores formal modeling systems that help us to understand and to explore the capabilities of computers and, more generally, of any problem solving process. Our exploration of these systems will be guided by the desire to answer the following four practical questions:
|
|||||||
201 | Term 2 | Tue Thu | 12:30 PM - 2:00 PM | FSC 1005 | Karina Mochetti | ||
Instructor(s) Extended Description CPSC 121 explores formal modeling systems that help us to understand and to explore the capabilities of computers and, more generally, of any problem solving process. Our exploration of these systems will be guided by the desire to answer the following four practical questions:
|
|||||||
202 | Term 2 | Tue Thu | 3:30 PM - 5:00 PM | SWNG 221 | Karina Mochetti | ||
Instructor(s) Extended Description CPSC 121 explores formal modeling systems that help us to understand and to explore the capabilities of computers and, more generally, of any problem solving process. Our exploration of these systems will be guided by the desire to answer the following four practical questions:
|
|||||||
203 | Term 2 | Tue Thu | 5:00 PM - 6:30 PM | SWNG 121 | Karina Mochetti | ||
Instructor(s) Extended Description CPSC 121 explores formal modeling systems that help us to understand and to explore the capabilities of computers and, more generally, of any problem solving process. Our exploration of these systems will be guided by the desire to answer the following four practical questions:
|
CPSC 203 - 2023W
Programming, Problem Solving, and Algorithms
Analysis of increasingly complex algorithmic problems, using a modern programming language and a variety of approaches. Problem decomposition and abstraction guide explorations of topics from applied algorithms, for example Voronoi Diagrams, Markov Chains, Bin Packing, and Graph Search. Not for students with credit for, or currently enrolled in, CPSC 210 or CPEN 221.
Section | Term | Days | Time | Location | Instructor(s) | Webpage | Details |
---|---|---|---|---|---|---|---|
201 | Term 2 | Tue Thu | 11:00 AM - 12:30 PM | AERL 120 | Ian Mitchell | ||
Instructor(s) |
CPSC 210 - 2023W
Software Construction
Design, development, and analysis of robust software components. Topics such as software design, computational models, data structures, debugging, and testing.
Section | Term | Days | Time | Location | Instructor(s) | Webpage | Details |
---|---|---|---|---|---|---|---|
101 | Term 1 | Mon Wed Fri | 11:00 AM - 12:00 PM | LIFE 2201 | Paul Carter | Course Page | |
Instructor(s) Extended Description The following broad topics will be covered. The main learning goals for each topic are also provided. Data Abstraction
Control Flow Models
Type Hierarchies, Polymorphism and Dispatching
Robust Data Abstractions
Object-Oriented Design
Design Patterns
|
|||||||
102 | Term 1 | Mon Wed Fri | 2:00 PM - 3:00 PM | CHEM B150 | Paul Carter | Course Page | |
Instructor(s) Extended Description The following broad topics will be covered. The main learning goals for each topic are also provided. Data Abstraction
Control Flow Models
Type Hierarchies, Polymorphism and Dispatching
Robust Data Abstractions
Object-Oriented Design
Design Patterns
|
|||||||
103 | Term 1 | Mon Wed Fri | 4:00 PM - 5:00 PM | BIOL 1000 | Mehrdad Oveisi | ||
Instructor(s) Extended Description The following broad topics will be covered. The main learning goals for each topic are also provided. Data Abstraction
Control Flow Models
Type Hierarchies, Polymorphism and Dispatching
Robust Data Abstractions
Object-Oriented Design
Design Patterns
|
|||||||
201 | Term 2 | Mon Wed Fri | 10:00 AM - 11:00 AM | HEBB 100 | Mehrdad Oveisi | ||
Instructor(s) Extended Description The following broad topics will be covered. The main learning goals for each topic are also provided. Data Abstraction
Control Flow Models
Type Hierarchies, Polymorphism and Dispatching
Robust Data Abstractions
Object-Oriented Design
Design Patterns
|
|||||||
202 | Term 2 | Mon Wed Fri | 11:00 AM - 12:00 PM | LIFE 2201 | |||
Extended Description The following broad topics will be covered. The main learning goals for each topic are also provided. Data Abstraction
Control Flow Models
Type Hierarchies, Polymorphism and Dispatching
Robust Data Abstractions
Object-Oriented Design
Design Patterns
|
|||||||
203 | Term 2 | Mon Wed Fri | 3:00 PM - 4:00 PM | FSC 1005 | Mehrdad Oveisi | ||
Instructor(s) Extended Description The following broad topics will be covered. The main learning goals for each topic are also provided. Data Abstraction
Control Flow Models
Type Hierarchies, Polymorphism and Dispatching
Robust Data Abstractions
Object-Oriented Design
Design Patterns
|
CPSC 213 - 2023W
Introduction to Computer Systems
Software architecture, operating systems, and I/O architectures. Relationships between application software, operating systems, and computing hardware; critical sections, deadlock avoidance, and performance; principles and operation of disks and networks.
Section | Term | Days | Time | Location | Instructor(s) | Webpage | Details |
---|---|---|---|---|---|---|---|
101 | Term 1 | Tue Thu | 12:30 PM - 2:00 PM | FSC 1005 | Jordon Johnson | ||
Instructor(s) |
|||||||
102 | Term 1 | Tue Thu | 5:00 PM - 6:30 PM | DMP 310 | Mike Feeley | Course Page | |
Instructor(s) Course Page Extended Description Help students develop a model of computation that is rooted in what really happens when a program executes. |
|||||||
203 | Term 2 | Mon Wed Fri | 2:00 PM - 3:00 PM | LIFE 2201 | Geoffrey Tien | ||
Instructor(s) |
|||||||
204 | Term 2 | Mon Wed Fri | 9:00 AM - 10:00 AM | SWNG 222 | Geoffrey Tien | ||
Instructor(s) |
|||||||
205 | Term 2 | Mon Wed Fri | 11:00 AM - 12:00 PM | IRC 2 | Jordon Johnson | ||
Instructor(s) |
CPSC 221 - 2023W
Basic Algorithms and Data Structures
Design and analysis of basic algorithms and data structures; algorithm analysis methods, searching and sorting algorithms, basic data structures, graphs and concurrency.
Section | Term | Days | Time | Location | Instructor(s) | Webpage | Details |
---|---|---|---|---|---|---|---|
101 | Term 1 | Mon Wed Fri | 2:00 PM - 3:00 PM | LSK 200 | Vsevolod Lynov | ||
Instructor(s) |
|||||||
102 | Term 1 | Mon Wed Fri | 3:00 PM - 4:00 PM | SWNG 121 | Geoffrey Tien | ||
Instructor(s) |
|||||||
201 | Term 2 | Mon Wed Fri | 1:00 PM - 2:00 PM | ESB 1013 | Vsevolod Lynov | ||
Instructor(s) |
|||||||
202 | Term 2 | Mon Wed Fri | 4:00 PM - 5:00 PM | SWNG 121 | Geoffrey Tien | ||
Instructor(s) |
|||||||
203 | Term 2 | Mon Wed Fri | 12:00 PM - 1:00 PM | CIRS 1250 | Vsevolod Lynov | ||
Instructor(s) |
CPSC 259 - 2023W
Data Structures and Algorithms for Electrical Engineers
Advanced procedural programming. Fundamental algorithms for sorting and searching. Data structures including lists, trees, and hash tables. Introduction to scripting languages and file input/output.
Section | Term | Days | Time | Location | Instructor(s) | Webpage | Details |
---|---|---|---|---|---|---|---|
101 | Term 1 | Mon Wed Fri | 8:00 AM - 9:00 AM | FSC 1005 | Geoffrey Tien | ||
Instructor(s) |
CPSC 302 - 2023W
Numerical Computation for Algebraic Problems
Numerical techniques for basic mathematical processes involving no discretization, and their analysis. Solution of linear systems, including analysis of round-off errors; norms and condition number; introduction to iterative techniques in linear algebra, including eigenvalue problems; solution to nonlinear equations.
Section | Term | Days | Time | Location | Instructor(s) | Webpage | Details |
---|---|---|---|---|---|---|---|
101 | Term 1 | Mon Wed Fri | 1:00 PM - 2:00 PM | IRC 5 | Chen Greif | ||
Instructor(s) |
CPSC 303 - 2023W
Numerical Approximation and Discretization
Numerical techniques for basic mathematical processes involving discretization, and their analysis. Interpolation and approximation, including splines and least squares data fitting; numerical differentiation and integration; introduction to numerical initial value ordinary differential equations.
Section | Term | Days | Time | Location | Instructor(s) | Webpage | Details |
---|---|---|---|---|---|---|---|
201 | Term 2 | Mon Wed Fri | 2:00 PM - 3:00 PM | ESB 1012 | Joel Friedman | ||
Instructor(s) |
CPSC 304 - 2023W
Introduction to Relational Databases
Overview of database systems, ER models, logical database design and normalization, formal relational query languages, SQL and other commercial languages,data warehouses, special topics.
Section | Term | Days | Time | Location | Instructor(s) | Webpage | Details |
---|---|---|---|---|---|---|---|
101 | Term 1 | Tue Thu | 3:30 PM - 5:00 PM | SWNG 122 | Rachel Pottinger | ||
Instructor(s) Extended Description The preliminary syllabus is here: https://www.students.cs.ubc.ca/~cs-304/2021W1/cpsc304_2021w1_syllabus.pdf |
|||||||
102 | Term 1 | Tue Thu | 12:30 PM - 2:00 PM | CIRS 1250 | Jessica Wong | ||
Instructor(s) Extended Description The preliminary syllabus is here: https://www.students.cs.ubc.ca/~cs-304/2021W1/cpsc304_2021w1_syllabus.pdf |
|||||||
103 | Term 1 | Wed Fri | 3:30 PM - 5:00 PM | CHEM D300 | Vsevolod Lynov | ||
Instructor(s) Extended Description The preliminary syllabus is here: https://www.students.cs.ubc.ca/~cs-304/2021W1/cpsc304_2021w1_syllabus.pdf |
|||||||
201 | Term 2 | Mon Wed | 3:30 PM - 5:00 PM | SWNG 222 | Raymond Ng | ||
Instructor(s) Extended Description The preliminary syllabus is here: https://www.students.cs.ubc.ca/~cs-304/2021W1/cpsc304_2021w1_syllabus.pdf |
|||||||
202 | Term 2 | Tue Thu | 5:00 PM - 6:30 PM | ANGU 098 | Vsevolod Lynov | ||
Instructor(s) Extended Description The preliminary syllabus is here: https://www.students.cs.ubc.ca/~cs-304/2021W1/cpsc304_2021w1_syllabus.pdf |
CPSC 310 - 2023W
Introduction to Software Engineering
Specification, design, validation, evolution and construction of modern software systems, within the context of socially and professionally relevant domains such as ethics, intellectual property, and information security.
Section | Term | Days | Time | Location | Instructor(s) | Webpage | Details |
---|---|---|---|---|---|---|---|
101 | Term 1 | Tue Thu | 8:00 AM - 9:30 AM | SWNG 222 | Reid Holmes | ||
Instructor(s) Extended Description CPSC 310 will be a challenging course that we have designed to integrate many of the ideas and concepts from your prior courses in order to help you to learn how to apply them to engineering modern software systems. The official course learning outcomes (CLOs) for CPSC 310 are:
|
|||||||
102 | Term 1 | Tue Thu | 2:00 PM - 3:30 PM | MCML 360 | Reid Holmes | ||
Instructor(s) Extended Description CPSC 310 will be a challenging course that we have designed to integrate many of the ideas and concepts from your prior courses in order to help you to learn how to apply them to engineering modern software systems. The official course learning outcomes (CLOs) for CPSC 310 are:
|
|||||||
201 | Term 2 | Tue Thu | 8:00 AM - 9:30 AM | MCML 360 | |||
Extended Description CPSC 310 will be a challenging course that we have designed to integrate many of the ideas and concepts from your prior courses in order to help you to learn how to apply them to engineering modern software systems. The official course learning outcomes (CLOs) for CPSC 310 are:
|
|||||||
202 | Term 2 | Tue Thu | 3:30 PM - 5:00 PM | MCML 360 | |||
Extended Description CPSC 310 will be a challenging course that we have designed to integrate many of the ideas and concepts from your prior courses in order to help you to learn how to apply them to engineering modern software systems. The official course learning outcomes (CLOs) for CPSC 310 are:
|
|||||||
203 | Term 2 | Tue Thu | 2:00 PM - 3:30 PM | DMP 310 | |||
Extended Description CPSC 310 will be a challenging course that we have designed to integrate many of the ideas and concepts from your prior courses in order to help you to learn how to apply them to engineering modern software systems. The official course learning outcomes (CLOs) for CPSC 310 are:
|
CPSC 311 - 2023W
Definition of Programming Languages
Comparative study of advanced programming language features. Statement types, data types, variable binding, parameter passing mechanisms. Methods for syntactic and semantic description of programming languages.
Section | Term | Days | Time | Location | Instructor(s) | Webpage | Details |
---|---|---|---|---|---|---|---|
101 | Term 1 | Mon Wed Fri | 10:00 AM - 11:00 AM | DMP 310 | Ronald Garcia | ||
Instructor(s) |
CPSC 312 - 2023W
Functional and Logic Programming
Principles of symbolic computing, using languages based upon first-order logic and the lambda calculus. Algorithms for implementing such languages. Applications to artificial intelligence and knowledge representation.
Section | Term | Days | Time | Location | Instructor(s) | Webpage | Details |
---|---|---|---|---|---|---|---|
201 | Term 2 | Mon Wed Fri | 12:00 PM - 1:00 PM | PHRM 1201 | David Poole | ||
Instructor(s) Extended Description In this course, we will streeeeetch our minds around two programming languages that you may find strange. Why bother doing that? You might go out and use these as your “home” programming languages for the rest of your career, but the real point is that stretching your concept of programs and programming will make you a better designer, programmer, and thinker. |
CPSC 313 - 2023W
Computer Hardware and Operating Systems
Instruction sets, pipelining, code optimization, caching, virtual memory management, dynamically linked libraries, exception processing, execution time of programs.
Section | Term | Days | Time | Location | Instructor(s) | Webpage | Details |
---|---|---|---|---|---|---|---|
101 | Term 1 | Mon Wed Fri | 4:00 PM - 5:00 PM | DMP 310 | Norm Hutchinson, Steve Wolfman | ||
Instructor(s) Extended Description In CPSC 213, you learned how computers execute programs and how common programming language constructs can be translated into assembly language. You also discussed how to deal with multiples processes and threads and how you can synchronize their operations. Finally, you discussed virtual memory. In this course, we will dig a bit deeper and examine how computers are designed and some techniques that are used to make them execute the programs we write as quickly as possible. At the end of this course you will be able to:
|
|||||||
102 | Term 1 | Mon Wed Fri | 11:00 AM - 12:00 PM | SWNG 122 | Norm Hutchinson, Steve Wolfman | ||
Instructor(s) Extended Description In CPSC 213, you learned how computers execute programs and how common programming language constructs can be translated into assembly language. You also discussed how to deal with multiples processes and threads and how you can synchronize their operations. Finally, you discussed virtual memory. In this course, we will dig a bit deeper and examine how computers are designed and some techniques that are used to make them execute the programs we write as quickly as possible. At the end of this course you will be able to:
|
|||||||
203 | Term 2 | Mon Wed Fri | 11:00 AM - 12:00 PM | FSC 1005 | Steve Wolfman | ||
Instructor(s) Extended Description In CPSC 213, you learned how computers execute programs and how common programming language constructs can be translated into assembly language. You also discussed how to deal with multiples processes and threads and how you can synchronize their operations. Finally, you discussed virtual memory. In this course, we will dig a bit deeper and examine how computers are designed and some techniques that are used to make them execute the programs we write as quickly as possible. At the end of this course you will be able to:
|
|||||||
204 | Term 2 | Mon Wed Fri | 2:00 PM - 3:00 PM | FSC 1005 | Steve Wolfman | ||
Instructor(s) Extended Description In CPSC 213, you learned how computers execute programs and how common programming language constructs can be translated into assembly language. You also discussed how to deal with multiples processes and threads and how you can synchronize their operations. Finally, you discussed virtual memory. In this course, we will dig a bit deeper and examine how computers are designed and some techniques that are used to make them execute the programs we write as quickly as possible. At the end of this course you will be able to:
|
CPSC 314 - 2023W
Computer Graphics
Human vision and colour; geometric transformations; algorithms for 2-D and 3-D graphics; hardware and system architectures; shading and lighting; animation.
Section | Term | Days | Time | Location | Instructor(s) | Webpage | Details |
---|---|---|---|---|---|---|---|
101 | Term 1 | Tue Thu | 3:30 PM - 5:00 PM | DMP 310 | Michiel van de Panne | ||
Instructor(s) Extended Description The course will provide an introduction to the theory and practice of computer graphics algorithms, including different aspects of modelling, rendering and basic animation. We will focus on the modern programmable graphics pipeline with vertex and fragment shaders. This course is the first in our sequence on computer graphics, followed by Modeling (CPSC 424) and Animation (CPSC 426) as well as several graduate CG courses. Topics to be covered include most or all of the following: geometric transformations; the rendering pipeline, including perspective projection, scan conversion, and hidden surface removal; lighting and illumination; texture mapping; colour models; geometry modeling and data structures; complex shading algorithms; ray-tracing; animation; graphics APIs; GPUs. |
|||||||
201 | Term 2 | Mon Wed Fri | 10:00 AM - 11:00 AM | SWNG 121 | Dinesh Pai | ||
Instructor(s) Extended Description The course will provide an introduction to the theory and practice of computer graphics algorithms, including different aspects of modelling, rendering and basic animation. We will focus on the modern programmable graphics pipeline with vertex and fragment shaders. This course is the first in our sequence on computer graphics, followed by Modeling (CPSC 424) and Animation (CPSC 426) as well as several graduate CG courses. Topics to be covered include most or all of the following: geometric transformations; the rendering pipeline, including perspective projection, scan conversion, and hidden surface removal; lighting and illumination; texture mapping; colour models; geometry modeling and data structures; complex shading algorithms; ray-tracing; animation; graphics APIs; GPUs. |
CPSC 317 - 2023W
Introduction to Computer Networking
Computer networking, basic communication protocols, network infrastructure and routing. Common application-level protocols and principles associated with developing distributed applications.
Section | Term | Days | Time | Location | Instructor(s) | Webpage | Details |
---|---|---|---|---|---|---|---|
101 | Term 1 | Mon Wed Fri | 9:00 AM - 10:00 AM | SWNG 121 | Norm Hutchinson | ||
Instructor(s) Extended Description Computer networks are pervasive and we use them daily yet we often do not give a lot of thought to how they are put together, work, how applications use them, and what the underlying fundamental principles are that allow us to build and design applications using computer networks. In this course you should:
In particular the material will be framed by looking at the key strategies and models for addressing:
|
|||||||
102 | Term 1 | Mon Wed Fri | 3:00 PM - 4:00 PM | LSK 201 | |||
Extended Description Computer networks are pervasive and we use them daily yet we often do not give a lot of thought to how they are put together, work, how applications use them, and what the underlying fundamental principles are that allow us to build and design applications using computer networks. In this course you should:
In particular the material will be framed by looking at the key strategies and models for addressing:
|
|||||||
201 | Term 2 | Mon Wed Fri | 3:00 PM - 4:00 PM | SWNG 121 | Norm Hutchinson | ||
Instructor(s) Extended Description Computer networks are pervasive and we use them daily yet we often do not give a lot of thought to how they are put together, work, how applications use them, and what the underlying fundamental principles are that allow us to build and design applications using computer networks. In this course you should:
In particular the material will be framed by looking at the key strategies and models for addressing:
|
|||||||
202 | Term 2 | Mon Wed Fri | 12:00 PM - 1:00 PM | PHRM 1101 | Aastha Mehta | ||
Instructor(s) Extended Description Computer networks are pervasive and we use them daily yet we often do not give a lot of thought to how they are put together, work, how applications use them, and what the underlying fundamental principles are that allow us to build and design applications using computer networks. In this course you should:
In particular the material will be framed by looking at the key strategies and models for addressing:
|
CPSC 319 - 2023W
Software Engineering Project
The design, implementation, and test of a large software system, using a team approach.
Section | Term | Days | Time | Location | Instructor(s) | Webpage | Details |
---|---|---|---|---|---|---|---|
201 | Term 2 | Mon Wed | 6:30 PM - 8:00 PM | DMP 110 | Jerry Jim | ||
Instructor(s) |
CPSC 320 - 2023W
Intermediate Algorithm Design and Analysis
Systematic study of basic concepts and techniques in the design and analysis of algorithms, illustrated from various problem areas. Topics include: models of computation; choice of data structures; graph-theoretic, algebraic, and text processing algorithms.
Section | Term | Days | Time | Location | Instructor(s) | Webpage | Details |
---|---|---|---|---|---|---|---|
101 | Term 1 | Mon Wed Fri | 2:00 PM - 3:00 PM | BIOL 1000 | Mehrdad Oveisi, Anne Condon | ||
Instructor(s) Extended Description The topics that we will be discuss in this course fall into two main categories. First, we will look at techniques that we can use to design efficient data structures and algorithms. Second, we will learn tools that make it possible to prove the correctness and the efficiency of the algorithms and data structures that we designed. More specifically, we will look at the following broad topics (not necessarily in this order):
Much of the material is formal (mathematical) in nature, and hence proofs will constitute an important part of the course. At the end of the course, you will be able to:
|
|||||||
102 | Term 1 | Mon Wed Fri | 9:00 AM - 10:00 AM | CHBE 101 | Mehrdad Oveisi, Anne Condon | ||
Instructor(s) Extended Description The topics that we will be discuss in this course fall into two main categories. First, we will look at techniques that we can use to design efficient data structures and algorithms. Second, we will learn tools that make it possible to prove the correctness and the efficiency of the algorithms and data structures that we designed. More specifically, we will look at the following broad topics (not necessarily in this order):
Much of the material is formal (mathematical) in nature, and hence proofs will constitute an important part of the course. At the end of the course, you will be able to:
|
|||||||
103 | Term 1 | Mon Wed Fri | 11:00 AM - 12:00 PM | SWNG 122 | |||
Extended Description The topics that we will be discuss in this course fall into two main categories. First, we will look at techniques that we can use to design efficient data structures and algorithms. Second, we will learn tools that make it possible to prove the correctness and the efficiency of the algorithms and data structures that we designed. More specifically, we will look at the following broad topics (not necessarily in this order):
Much of the material is formal (mathematical) in nature, and hence proofs will constitute an important part of the course. At the end of the course, you will be able to:
|
|||||||
201 | Term 2 | Mon Wed Fri | 10:00 AM - 11:00 AM | LIFE 2201 | Susanne Bradley | ||
Instructor(s) Extended Description The topics that we will be discuss in this course fall into two main categories. First, we will look at techniques that we can use to design efficient data structures and algorithms. Second, we will learn tools that make it possible to prove the correctness and the efficiency of the algorithms and data structures that we designed. More specifically, we will look at the following broad topics (not necessarily in this order):
Much of the material is formal (mathematical) in nature, and hence proofs will constitute an important part of the course. At the end of the course, you will be able to:
|
|||||||
202 | Term 2 | Mon Wed Fri | 4:00 PM - 5:00 PM | SWNG 221 | Bruce Shepherd | ||
Instructor(s) Extended Description The topics that we will be discuss in this course fall into two main categories. First, we will look at techniques that we can use to design efficient data structures and algorithms. Second, we will learn tools that make it possible to prove the correctness and the efficiency of the algorithms and data structures that we designed. More specifically, we will look at the following broad topics (not necessarily in this order):
Much of the material is formal (mathematical) in nature, and hence proofs will constitute an important part of the course. At the end of the course, you will be able to:
|
|||||||
203 | Term 2 | Mon Wed Fri | 1:00 PM - 2:00 PM | SWNG 122 | Susanne Bradley | ||
Instructor(s) Extended Description The topics that we will be discuss in this course fall into two main categories. First, we will look at techniques that we can use to design efficient data structures and algorithms. Second, we will learn tools that make it possible to prove the correctness and the efficiency of the algorithms and data structures that we designed. More specifically, we will look at the following broad topics (not necessarily in this order):
Much of the material is formal (mathematical) in nature, and hence proofs will constitute an important part of the course. At the end of the course, you will be able to:
|
CPSC 322 - 2023W
Introduction to Artificial Intelligence
Problem-solving and planning; state/action models and graph searching. Natural language understanding Computational vision. Applications of artificial intelligence.
Section | Term | Days | Time | Location | Instructor(s) | Webpage | Details |
---|---|---|---|---|---|---|---|
101 | Term 1 | Tue Thu | 2:00 PM - 3:30 PM | DMP 310 | Jordon Johnson | ||
Instructor(s) |
|||||||
102 | Term 1 | Tue Thu | 5:00 PM - 6:30 PM | ESB 1012 | Jordon Johnson | ||
Instructor(s) |
|||||||
201 | Term 2 | Tue Thu | 5:00 PM - 6:30 PM | SCRF 100 | Mehrdad Oveisi | ||
Instructor(s) |
CPSC 330 - 2023W
Applied Machine Learning
Application of machine learning tools, with an emphasis on solving practical problems. Data cleaning, feature extraction, supervised and unsupervised machine learning, reproducible workflows, and communicating results.
Section | Term | Days | Time | Location | Instructor(s) | Webpage | Details |
---|---|---|---|---|---|---|---|
101 | Term 1 | Tue Thu | 3:30 PM - 5:00 PM | SWNG 121 | Andrew Roth | ||
Instructor(s) Extended Description This course covers application of machine learning tools, with an emphasis on solving practical problems. Also included in the course are data cleaning, feature extraction, supervised and unsupervised machine learning, reproducible workflows, and communicating results. |
|||||||
102 | Term 1 | Tue Thu | 11:00 AM - 12:30 PM | SWNG 221 | Varada Kolhatkar | ||
Instructor(s) Extended Description This course covers application of machine learning tools, with an emphasis on solving practical problems. Also included in the course are data cleaning, feature extraction, supervised and unsupervised machine learning, reproducible workflows, and communicating results. |
|||||||
201 | Term 2 | Tue Thu | 9:30 AM - 11:00 AM | LSK 200 | Mathias Lécuyer | ||
Instructor(s) Extended Description This course covers application of machine learning tools, with an emphasis on solving practical problems. Also included in the course are data cleaning, feature extraction, supervised and unsupervised machine learning, reproducible workflows, and communicating results. |
|||||||
202 | Term 2 | Tue Thu | 3:30 PM - 5:00 PM | DMP 310 | Jiarui Ding | ||
Instructor(s) Extended Description This course covers application of machine learning tools, with an emphasis on solving practical problems. Also included in the course are data cleaning, feature extraction, supervised and unsupervised machine learning, reproducible workflows, and communicating results. |
CPSC 340 - 2023W
Machine Learning and Data Mining
Models of algorithms for dimensionality reduction, nonlinear regression, classification, clustering and unsupervised learning; applications to computer graphics, computer games, bio-informatics, information retrieval, e-commerce, databases, computer vision and artificial intelligence.
Section | Term | Days | Time | Location | Instructor(s) | Webpage | Details |
---|---|---|---|---|---|---|---|
101 | Term 1 | Mon Wed Fri | 12:00 PM - 1:00 PM | FRDM 153 | Jeff Clune, Mark Schmidt | ||
Instructor(s) Extended Description We introduce basic principles and techniques in the fields of data mining and machine learning. These are some of the key tools behind the emerging field of data science and the popularity of the "big data" buzzword. These techniques are now running behind the scenes to discover patterns and make predictions in various applications in our daily lives. We'll focus on many of the core data mining and machine learning technologies, with motivating applications from a variety of disciplines. |
|||||||
102 | Term 1 | Mon Wed Fri | 4:00 PM - 5:00 PM | LSK 200 | Jeff Clune, Mark Schmidt | ||
Instructor(s) Extended Description We introduce basic principles and techniques in the fields of data mining and machine learning. These are some of the key tools behind the emerging field of data science and the popularity of the "big data" buzzword. These techniques are now running behind the scenes to discover patterns and make predictions in various applications in our daily lives. We'll focus on many of the core data mining and machine learning technologies, with motivating applications from a variety of disciplines. |
|||||||
201 | Term 2 | Mon Wed Fri | 12:00 PM - 1:00 PM | DMP 310 | Jeff Clune | ||
Instructor(s) Extended Description We introduce basic principles and techniques in the fields of data mining and machine learning. These are some of the key tools behind the emerging field of data science and the popularity of the "big data" buzzword. These techniques are now running behind the scenes to discover patterns and make predictions in various applications in our daily lives. We'll focus on many of the core data mining and machine learning technologies, with motivating applications from a variety of disciplines. |
|||||||
202 | Term 2 | Mon Wed Fri | 2:00 PM - 3:00 PM | LSK 201 | |||
Extended Description We introduce basic principles and techniques in the fields of data mining and machine learning. These are some of the key tools behind the emerging field of data science and the popularity of the "big data" buzzword. These techniques are now running behind the scenes to discover patterns and make predictions in various applications in our daily lives. We'll focus on many of the core data mining and machine learning technologies, with motivating applications from a variety of disciplines. |
CPSC 344 - 2023W
Introduction to Human Computer Interaction Methods
Basic tools and techniques, teaching a systematic approach to interface design, task analysis, analytic and empirical evaluation methods.
Section | Term | Days | Time | Location | Instructor(s) | Webpage | Details |
---|---|---|---|---|---|---|---|
101 | Term 1 | Mon Wed | 3:30 PM - 5:00 PM | SWNG 222 | |||
Extended Description Either 211 or 210 will automatically suffice for the 344 pre-requisite. |
|||||||
201 | Term 2 | Mon Wed | 3:30 PM - 5:00 PM | ESB 1012 | |||
Extended Description Either 211 or 210 will automatically suffice for the 344 pre-requisite. |
CPSC 349 - 2023W
Honours Research Seminar
Students will attend a series of research seminars presented by faculty members, produce a thesis proposal, and choose their honours thesis supervisor. Available to Honours students. Majors students with satisfactory standing may also be permitted to enrol.
Section | Term | Days | Time | Location | Instructor(s) | Webpage | Details |
---|---|---|---|---|---|---|---|
001 | Term 1 & 2 | Thu | 3:30 PM - 5:00 PM | MCML 160 | Mark Greenstreet | ||
Instructor(s) |
CPSC 368 - 2023W
Databases in Data Science
Overview of relational and non-relational database systems, role and usage of a database when querying data, data modelling, query languages, and query optimization.
Section | Term | Days | Time | Location | Instructor(s) | Webpage | Details |
---|---|---|---|---|---|---|---|
201 | Term 2 | Tue Thu | 2:00 PM - 3:30 PM | BUCH B315 | Jessica Wong | ||
Instructor(s) |
CPSC 404 - 2023W
Advanced Relational Databases
Physical database design, indexing, external mergesort, relational query processing and optimization, transaction processing, concurrency control, crash recovery, special topics.
Section | Term | Days | Time | Location | Instructor(s) | Webpage | Details |
---|---|---|---|---|---|---|---|
101 | Term 1 | Tue Thu | 3:30 PM - 5:00 PM | ANGU 098 | Ed Knorr | Course Page | |
Instructor(s) Extended Description This course continues with database topics beyond CPSC 304. Whereas CPSC 304 focuses on using a relational database management system (RDBMS), CPSC 404 focuses on the internals and performance issues of an RDBMS. Topics include disks and the storage hierarchy, the I/O cost model, buffer pool management, disk scheduling, record layouts, metadata, system catalogs, tree-structured indexes, hash indexes, query evaluation, query optimization, transaction processing, concurrency, and crash recovery. Note that some of these important topics also have applicability to areas outside of database systems. |
|||||||
201 | Term 2 | Tue Thu | 9:30 AM - 11:00 AM | SWNG 122 | |||
Extended Description This course continues with database topics beyond CPSC 304. Whereas CPSC 304 focuses on using a relational database management system (RDBMS), CPSC 404 focuses on the internals and performance issues of an RDBMS. Topics include disks and the storage hierarchy, the I/O cost model, buffer pool management, disk scheduling, record layouts, metadata, system catalogs, tree-structured indexes, hash indexes, query evaluation, query optimization, transaction processing, concurrency, and crash recovery. Note that some of these important topics also have applicability to areas outside of database systems. |
CPSC 406 - 2023W
Computational Optimization
Formulation and analysis of algorithms for continuous and discrete optimization problems; linear, nonlinear, network, dynamic, and integer optimization; large-scale problems; software packages and their implementation; duality theory and sensitivity.
Section | Term | Days | Time | Location | Instructor(s) | Webpage | Details |
---|---|---|---|---|---|---|---|
201 | Term 2 | Tue Thu | 11:00 AM - 12:30 PM | CEME 1202 | Michael Friedlander | ||
Instructor(s) |
CPSC 410 - 2023W
Advanced Software Engineering
Specification, design, construction and validation of multi-version software systems.
Section | Term | Days | Time | Location | Instructor(s) | Webpage | Details |
---|---|---|---|---|---|---|---|
101 | Term 1 | Tue Thu | 11:00 AM - 12:30 PM | DMP 310 | |||
|
|||||||
201 | Term 2 | Tue Thu | 5:00 PM - 6:30 PM | LSK 201 | Caroline Lemieux, Alex Summers | ||
Instructor(s) |
CPSC 411 - 2023W
Introduction to Compiler Construction
A practical introduction to lexical analysis, syntactic analysis, type-checking, code generation and optimization. This will be used to design and implement a compiler for a small language.
Section | Term | Days | Time | Location | Instructor(s) | Webpage | Details |
---|---|---|---|---|---|---|---|
201 | Term 2 | Tue Thu | 2:00 PM - 3:30 PM | ORCH 1001 | |||
Extended Description The goal of this course is to give students experience designing, implementing, and extending programming languages. Students will start from a machine language, the x86-64 CPU instruction set with Linux system calls (x64), and incrementally build a compiler for a subset of Racket to this machine language. In the process, students will practice building, extending, and maintaining a complex piece of software, and practice creating, enforcing, and exploiting abstractions formalized in programming languages. |
CPSC 416 - 2023W
Distributed Systems
Concepts and design of distributed systems. Communication architecture and models for interprocess communication. Process migration, naming, distributed file systems, fault tolerance, and concurrency control.
Section | Term | Days | Time | Location | Instructor(s) | Webpage | Details |
---|---|---|---|---|---|---|---|
101 | Term 1 | Tue Thu | 5:00 PM - 6:30 PM | FRDM 153 | Tony Mason | ||
Instructor(s) |
|||||||
201 | Term 2 | Tue Thu | 8:00 AM - 9:30 AM | DMP 310 | Arpan Gujarati | ||
Instructor(s) |
CPSC 418 - 2023W
Parallel Computation
Algorithms, architectures, and programming paradigms for parallel computation. Shared memory, message passing, and data parallel architectures and programming models. Parallel algorithms including reduce, scan, and sorting networks. Reasoning about the correctness of parallel programs. Performance analysis and measurement for parallel programs.
Section | Term | Days | Time | Location | Instructor(s) | Webpage | Details |
---|---|---|---|---|---|---|---|
101 | Term 1 | Mon Wed Fri | 1:00 PM - 2:00 PM | DMP 101 | Mark Greenstreet | ||
Instructor(s) |
|||||||
201 | Term 2 | Mon Wed Fri | 3:00 PM - 4:00 PM | DMP 301 | Mark Greenstreet | ||
Instructor(s) |
CPSC 420 - 2023W
Advanced Algorithms Design and Analysis
The study of advanced topics in the design and analysis of algorithms and associated data structures. Topics include algorithms for graph-theoretic; algebraic and geometric problems; algorithms on nonsequential models; complexity issues; approximation algorithms.
Section | Term | Days | Time | Location | Instructor(s) | Webpage | Details |
---|---|---|---|---|---|---|---|
201 | Term 2 | Mon Wed Fri | 1:00 PM - 2:00 PM | DMP 310 | William Evans | ||
Instructor(s) |
CPSC 421 - 2023W
Introduction to Theory of Computing
Characterizations of computability (using machines, languages and functions). Universality, equivalence and Church's thesis. Unsolvable problems. Restricted models of computation. Finite automata, grammars and formal languages.
Section | Term | Days | Time | Location | Instructor(s) | Webpage | Details |
---|---|---|---|---|---|---|---|
101 | Term 1 | Mon Wed Fri | 11:00 AM - 12:00 PM | PHRM 1201 | Joel Friedman | Course Page | |
Instructor(s) Extended Description This is a one-term introductory course to the theory of computing, covering: regular languages, Turing machines, undecidable problems, and NP-completeness. Specific topics covered varies from year to year. |
CPSC 422 - 2023W
Intelligent Systems
Principles and techniques underlying the design, implementation and evaluation of intelligent computational systems. Applications of artificial intelligence to natural language understanding, image understanding and computer-based expert and advisor systems. Advanced symbolic programming methodology.
Section | Term | Days | Time | Location | Instructor(s) | Webpage | Details |
---|---|---|---|---|---|---|---|
201 | Term 2 | Mon Wed Fri | 2:00 PM - 3:00 PM | DMP 310 | Jordon Johnson | ||
Instructor(s) |
CPSC 425 - 2023W
Computer Vision
Introduction to the processing and interpretation of images. Image sensing, sampling, and filtering. Algorithms for colour analysis, texture description, stereo imaging, motion interpretation, 3D shape recovery, and recognition.
Section | Term | Days | Time | Location | Instructor(s) | Webpage | Details |
---|---|---|---|---|---|---|---|
101 | Term 1 | Tue Thu | 5:00 PM - 6:30 PM | DMP 110 | |||
|
|||||||
201 | Term 2 | Mon Wed | 3:30 PM - 5:00 PM | FRDM 153 | Kwang Moo Yi | ||
Instructor(s) |
CPSC 427 - 2023W
Video Game Programming
Video game programming techniques and technologies, including rendering, animation, interaction, game AI, real-time software development for games; start-to-finish simple video-game design and implementation.
Section | Term | Days | Time | Location | Instructor(s) | Webpage | Details |
---|---|---|---|---|---|---|---|
101 | Term 1 | Wed | 3:00 PM - 4:00 PM | DMP 110 | Helge Rhodin | ||
Instructor(s) |
|||||||
201 | Term 2 | Wed | 3:00 PM - 4:00 PM | DMP 110 | |||
|
CPSC 430 - 2023W
Computers and Society
Impact of computer technology on society; historical perspectives; social and economic consequences of large-scale information processing systems and automatic control; legal and ethical problems in computer applications. Computers and the individual: machine versus human capabilities, fact and fancy; problematic interface between man and machine.
Section | Term | Days | Time | Location | Instructor(s) | Webpage | Details |
---|---|---|---|---|---|---|---|
101 | Term 1 | Tue Thu | 2:00 PM - 3:30 PM | IRC 1 | Giulia Toti | Course Page | |
|
|||||||
102 | Term 2 | Mon Wed | 3:30 PM - 5:00 PM | LSK 460 | |||
|
|||||||
201 | Term 2 | Tue Thu | 2:00 PM - 3:30 PM | FSC 1221 | |||
|
CPSC 436A - 2023W
Topics in Computer Science - OS DESIGN & IMPL
Selected topics in a specific area within Computer Science. May be taken more than once for credit with permission of the department.
Section | Term | Days | Time | Location | Instructor(s) | Webpage | Details |
---|---|---|---|---|---|---|---|
101 | Term 1 | Tue Thu | 9:00 AM - 11:00 AM | MCLD 2002 | Thomas Pasquier | ||
Instructor(s) Extended Description Please refer to the course website for an extended description of the course. |
CPSC 436C - 2023W
Topics in Computer Science - CLOUD COMPUTING
Selected topics in a specific area within Computer Science. May be taken more than once for credit with permission of the department.
Section | Term | Days | Time | Location | Instructor(s) | Webpage | Details |
---|---|---|---|---|---|---|---|
101 | Term 1 | Tue Thu | 11:00 AM - 12:30 PM | LIFE 2202 | Maryam Raiyat Aliabadi | ||
Instructor(s) |
CPSC 436E - 2023W
Topics in Computer Science - ENTREPRENEURSHIP
Selected topics in a specific area within Computer Science. May be taken more than once for credit with permission of the department.
Section | Term | Days | Time | Location | Instructor(s) | Webpage | Details |
---|---|---|---|---|---|---|---|
201 | Term 2 | Wed | 9:00 AM - 12:00 PM | SCRF 1005 | Frank Wood | ||
Instructor(s) |
CPSC 436N - 2023W
Topics in Computer Science - NLP
Selected topics in a specific area within Computer Science. May be taken more than once for credit with permission of the department.
Section | Term | Days | Time | Location | Instructor(s) | Webpage | Details |
---|---|---|---|---|---|---|---|
101 | Term 1 | Tue Thu | 9:30 AM - 11:00 AM | IRC 1 | Vered Shwartz | ||
Instructor(s) |
CPSC 436R - 2023W
Topics in Computer Science - RANDOMIZED ALGS
Selected topics in a specific area within Computer Science. May be taken more than once for credit with permission of the department.
Section | Term | Days | Time | Location | Instructor(s) | Webpage | Details |
---|---|---|---|---|---|---|---|
101 | Term 1 | Mon Wed Fri | 2:00 PM - 3:00 PM | DMP 301 | Nick Harvey | ||
Instructor(s) |
CPSC 436S - 2023W
Topics in Computer Science - COMP SECURITY
Selected topics in a specific area within Computer Science. May be taken more than once for credit with permission of the department.
Section | Term | Days | Time | Location | Instructor(s) | Webpage | Details |
---|---|---|---|---|---|---|---|
201 | Term 2 | Wed Fri | 10:30 AM - 12:00 PM | MCML 166 | Robert Xiao | ||
Instructor(s) |
CPSC 440 - 2023W
Advanced Machine Learning
Advanced machine learning techniques focusing on probabilistic models. Deep learning and differentiable programming, exponential families and Bayesian inference, probabilistic graphical models and other generative models, Monte Carlo and variational inference methods.
Section | Term | Days | Time | Location | Instructor(s) | Webpage | Details |
---|---|---|---|---|---|---|---|
201 | Term 2 | Mon Wed | 3:30 PM - 5:00 PM | MCML 360 | Danica Sutherland | ||
Instructor(s) |
CPSC 444 - 2023W
Advanced Methods for Human Computer Interaction
Design and evaluation methodologies and theories; formal models of the user including visual, motor, and information processing; advanced evaluation methods including laboratory experiments and field studies; HCI research frontiers.
Section | Term | Days | Time | Location | Instructor(s) | Webpage | Details |
---|---|---|---|---|---|---|---|
201 | Term 2 | Tue | 3:30 PM - 5:30 PM | CEME 1202 | Karon MacLean | ||
Instructor(s) |
CPSC 445 - 2023W
Algorithms in Bioinformatics
Sequence alignment, phylogenetic tree reconstruction, prediction of RNA and protein structure, gene finding and sequence annotation, gene expression, and biomolecular computing.
Section | Term | Days | Time | Location | Instructor(s) | Webpage | Details |
---|---|---|---|---|---|---|---|
201 | Term 2 | Tue Thu | 3:30 PM - 5:00 PM | DMP 301 | |||
|
CPSC 447 - 2023W
Introduction to Visualization
Design and implementation of static and interactive visualizations. Selection of appropriate visualization methods for given combinations of data type and intended analysis task. Assessment of visual representations according to design and perceptual principles.
Section | Term | Days | Time | Location | Instructor(s) | Webpage | Details |
---|---|---|---|---|---|---|---|
101 | Term 1 | Thu | 2:00 PM - 5:00 PM | CEME 1202 | Tamara Munzner | ||
Instructor(s) |
CPSC 490A - 2023W
Student Directed Seminars - CS PEDAGOGY
Self-directed, collaborative studies, in a group-learning environment, initiated and coordinated by senior undergraduate students with the supervision of a faculty advisor. Course structure, enrolment and delivery methods will comply with the "Handbook for Student Directed Seminars".
Section | Term | Days | Time | Location | Instructor(s) | Webpage | Details |
---|---|---|---|---|---|---|---|
201 | Term 2 | ||||||
|
CPSC 491 - 2023W
Interactive Digital Media Practicum
Design and implementation of interactive digital media systems using modern processes and tools. Projects provided by external clients or vetted entrepreneurial pitches are developed by interdisciplinary teams composed of one CPSC 491 student and multiple Master of Digital Media students.
Section | Term | Days | Time | Location | Instructor(s) | Webpage | Details |
---|---|---|---|---|---|---|---|
201 | Term 2 | ||||||
|
CPSC 501 - 2023W
Theory of Automata, Formal Languages and Computability
Section | Term | Days | Time | Location | Instructor(s) | Webpage | Details |
---|---|---|---|---|---|---|---|
101 | Term 1 | Mon Wed Fri | 11:00 AM - 12:00 PM | PHRM 1201 | Joel Friedman | Course Page | |
Instructor(s) Extended Description This is a one-term introductory course to the theory of computing, covering: regular languages, Turing machines, undecidable problems, and NP-completeness. Specific topics covered varies from year to year. CPSC 501 is the same as CPSC 421, except that the CPSC 501 students have an additional presentation/report. |
CPSC 504 - 2023W
Data Management
Section | Term | Days | Time | Location | Instructor(s) | Webpage | Details |
---|---|---|---|---|---|---|---|
201 | Term 2 | Mon Wed | 12:00 PM - 1:30 PM | ORCH 4018 | Rachel Pottinger | ||
Instructor(s) |
CPSC 508 - 2023W
Operating Systems
Section | Term | Days | Time | Location | Instructor(s) | Webpage | Details |
---|---|---|---|---|---|---|---|
101 | Term 1 | Tue Thu | 9:30 AM - 11:00 AM | SWNG 310 | Reto Achermann | ||
Instructor(s) |
CPSC 509 - 2023W
Programming Language Principles
Section | Term | Days | Time | Location | Instructor(s) | Webpage | Details |
---|---|---|---|---|---|---|---|
201 | Term 2 | Tue Thu | 3:30 PM - 5:00 PM | DMP 101 | Ronald Garcia | ||
Instructor(s) |
CPSC 517 - 2023W
Sparse Matrix Computation
Section | Term | Days | Time | Location | Instructor(s) | Webpage | Details |
---|---|---|---|---|---|---|---|
201 | Term 2 | Tue Thu | 2:00 PM - 3:30 PM | SWNG 210 | Chen Greif | ||
Instructor(s) |
CPSC 521 - 2023W
Parallel Algorithms and Architectures
Section | Term | Days | Time | Location | Instructor(s) | Webpage | Details |
---|---|---|---|---|---|---|---|
101 | Term 1 | Mon Wed Fri | 1:00 PM - 2:00 PM | DMP 101 | Mark Greenstreet | ||
Instructor(s) |
CPSC 522 - 2023W
Artificial Intelligence II
Section | Term | Days | Time | Location | Instructor(s) | Webpage | Details |
---|---|---|---|---|---|---|---|
101 | Term 1 | Tue Thu | 11:00 AM - 12:30 PM | ICCS 246 | David Poole | ||
Instructor(s) |
CPSC 524 - 2023W
Computer Graphics: Modelling
Section | Term | Days | Time | Location | Instructor(s) | Webpage | Details |
---|---|---|---|---|---|---|---|
201 | Term 2 | Mon Wed | 10:00 AM - 11:30 AM | ORCH 4058 | Alla Sheffer | ||
Instructor(s) |
CPSC 532C - 2023W
Topics in Artificial Intelligence - HUMAN-CENTRED AI
Section | Term | Days | Time | Location | Instructor(s) | Webpage | Details |
---|---|---|---|---|---|---|---|
201 | Term 2 | Thu | 9:30 AM - 12:30 PM | ICCS 246 | Cristina Conati | ||
Instructor(s) |