Course Schedules

Spring 2024

AS101: Astronomy I: Our Place in the Cosmos

An introduction to the science of astronomy, the process by which we develop astronomical principles and the application of these techniques to gain a modern understanding of our Solar System. Topics covered include the historical development of astronomy, understanding the night sky, Newton's law of gravitation, light and telescopes, and a detailed study of the Solar System. New data from recent explorations of Mars, Saturn and other celestial objects will be discussed.

3 lecture hours
Credit: 0.50
Exclusion: AS105

Section Campus Days Times Room Instructor
OC1 Online Learning - Dr. Arthur Read

AS102: Astronomy II: Journey Through the Cosmos

A journey beyond our Solar System to develop a modern understanding of other stars, galaxies and the structure, origin and fate of the universe. Includes an introduction to basic concepts of relativity and quantum mechanics, lives of stars, evolution of galaxies, Hubble's law and the Big Bang. Objects such as black holes, supernovae, pulsars, dark matter and wormholes are encountered and studied along the way.

3 lecture hours
Credit: 0.50
Prerequisite: AS101
Exclusion: AS105

Section Campus Days Times Room Instructor
OC1 Online Learning - Dr. Arthur Read

CP102: Information Processing with Microcomputer Systems

An introduction to the concepts of microcomputer hardware and software applications in a hands-on environment. Examples are based on the needs of students in the arts and sciences and are intended to give background knowledge and experience in the use of the microcomputer as a tool for many different applications. Topics include the history of technological innovation in microcomputer systems, design and operation, input/output devices, storage media and techniques, communications, operating systems, word processors, spreadsheets, statistics packages, computer-aided design and drawing, database management and system utilities.

3 lecture hours, 1 lab hour
Credit: 0.50
Exclusion: BU115, BU155, MB115; registration in BA or BSc programs in Computer Science or Physics; CS100 (University of Waterloo)

Section Campus Days Times Room Instructor
OC1 Online Learning - Mr. Muhammad Malik

CP104: Introduction to Programming

An introductory course designed to familiarize the student with modern software development techniques. Emphasis is on problem-solving and structured program design methodologies. Programming projects are implemented in a widely used high-level language.

3 lecture hours, 2.5 lab hours
Credit: 0.50

Section Campus Days Times Room Instructor
D Waterloo MW 01:00 PM - 02:20 PM SB106 Mr. Muhammad Malik
L1 Waterloo W 02:30 PM - 04:50 PM BA113 Ms Sumeet Kaur Sehra
Lab Int College, Brantford F 01:30 PM - 04:50 PM OM207-3 Dr. Zia Ud Din
OC1 Online Learning - Mr. Muhammad Malik
WLIC Int College, Brantford W 06:30 PM - 10:20 PM OM207-3 Dr. Zia Ud Din

CP164: Data Structures I

Introduction to the study of data structures and their applications. Recursion, searching, sorting. Queues, stacks, heaps. Introduction to the analysis of algorithms, big “O” notation.

3 lecture hours, 2.5 lab hours
Credit: 0.50
Prerequisite: CP104
Exclusion: CP114

Section Campus Days Times Room Instructor
A Waterloo MW 08:30 AM - 09:50 AM LH3094 Mr. David Brown
L1 Waterloo W 10:30 AM - 12:50 PM BA113 Ms Xuyang Ma
OC1 Online Learning - Mr. David Brown

CP212: Windows Application Programming

This course is designed for students who have a basic understanding of spreadsheets, word processors, and databases as well as introductory programming experience. The course introduces methods to automate repetitive tasks and create user-friendly applications in spreadsheets, word processors, and databases using the powerful macro language, Visual Basic for Applications (VBA). Topics include: a review of programming constructs such as data types, looping, conditional statements, and arrays; the design of graphical interfaces with the typical "look and feel" of Windows software; the design of dialog boxes with controls and eventhandling code that responds to user input; automating tasks; consolidating data; providing userfriendly reports.

3 lecture hours, 1 lab hour
Credit: 0.50
Prerequisite: CP102 and previous programming experience, or CP104

Section Campus Days Times Room Instructor
D Waterloo MW 10:00 AM - 11:20 AM SB106 Dr. Li Wei
L1 Waterloo R 09:30 AM - 10:20 AM BA113 Dr. Heider Ali
L2 Waterloo R 11:30 AM - 12:20 PM BA113 Dr. Heider Ali

CP213: Introduction to Object-Oriented Programming

Fundamentals of object-oriented programming, classes, subclasses, inheritance, references, overloading, event-driven and concurrent programming, using modern application programming interface. The language Java will be used.

3 lecture hours, 1 lab hours
Credit: 0.50
Prerequisite: CP164 (or CP114)

Section Campus Days Times Room Instructor
OC1 Online Learning - Dr. Zia Ud Din

CP214: Discrete Structures for Computer Science

Finite and discrete algebraic structures relating to computers: sets, functions, relations. Machine-oriented logic. Topics include: propositional and predicate calculus, Boolean algebra, combinatorial counting (including Pigeonhole principle, permutations and combinations), recurrence equations, applications of recurrence equations in sorting algorithms, relations (including equivalence relations, partial orders), algorithms to generate permutations and combinations, induction and recursive programs, correctness proofs for both recursive and iterative program constructions, countable and uncountable sets, Cantor’s theorem, introduction to graph theory and graph algorithms.

3 lecture/discussion hours
Credit: 0.50
Prerequisite: CP164

Section Campus Days Times Room Instructor
OC1 Online Learning - Dr. Zia Ud Din

CP216: Introduction to Microprocessors

A comprehensive study of a current commercial microprocessor, its architecture and assembly language. Emphasis on (1) the relationship between architecture, assembly language and system operation, and (2) the relationship between assembly language, high level languages and operating systems.

3 lecture hours, 1 lab hour
Credit: 0.50
Prerequisite: CP220/PC220 (or CP120/PC120) and CP164 (or CP114)

Section Campus Days Times Room Instructor
A Waterloo - Virtual Ms. Nakhat Fatima
L1 Waterloo - Virtual Ms. Nakhat Fatima
L2 Waterloo - Virtual Ms. Nakhat Fatima
L3 Waterloo - Virtual Ms. Nakhat Fatima

CP264: Data Structures II

A continuation of the study of data structures and their applications using C. Linked lists, binary search trees, balanced search trees. Hashing, collision-avoidance strategies. A continuation of basic algorithm analysis.

3 lecture hours, 1 lab hour
Credit: 0.50
Prerequisite: CP164
Exclusion: CP114

Section Campus Days Times Room Instructor
OC1 Online Learning - Dr. Hongbing Fan

CP312: Algorithm Design and Analysis I

Analysis of the best, average, and worse case behaviors of algorithms. Algorithmic strategies: brute force algorithms, greedy algorithms, divide-and-conquer, branch and bound, backtracking. Fundamental computing algorithms: O (n log n) sorting, hash table, binary trees, depth- and breadth-first search of graphs.

3 lecture hours
Credit: 0.50
Prerequisite: CP264 (or CP114 and CP213) and MA238

Section Campus Days Times Room Instructor
C Waterloo TR 04:00 PM - 05:20 PM SB106 Ms. Nakhat Fatima
OC1 Online Learning - Dr. Evgueni Zima

CP317: Software Engineering

Discussion of software development activities, including software process models, analysis, design, implementation, testing, project management and advanced topics. Both traditional and object-oriented methods are considered.

3 lecture hours
Credit: 0.50
Prerequisite: CP213, CP217 or CP264
Exclusion: CP417

Section Campus Days Times Room Instructor
C Waterloo MW 01:00 PM - 02:20 PM LH1010 Mr. Emad Mohammed

CP373: Ethics and Professional Practice in Computer Science

Introduction to ethics, computer reliability and safety, privacy, computer crime, intellectual property, impact of computers on work and society. Assessment includes written assignments and oral presentations.

3 lecture hours
Credit: 0.50
Prerequisite: Registration in Year 3 or Year 4 BA or BSc in Computing or Physics
Exclusion: CP400L

Section Campus Days Times Room Instructor
B Waterloo TR 02:30 PM - 03:50 PM LH1010 Ms. Nakhat Fatima

CP386: Operating Systems

Topics include operating system services, file systems, CPU scheduling, memory management, virtual memory, disk scheduling, deadlocks, concurrent processes, protection and distributed systems.

3 lecture hours
Credit: 0.50
Prerequisite: CP216, CP217 or CP264
Exclusion: CP466

Section Campus Days Times Room Instructor
C Waterloo MW 11:30 AM - 12:50 PM SB106 Ms. Azam Asilian Bidgoli

CP423: Text Retrieval and Search Engines

Recent years have seen a dramatic growth of natural language text data, including web pages, news articles, scientific literature, emails, enterprise documents, and social media such as blog articles, forum posts, product reviews, and tweets. Text data are unique in that they are usually generated directly by humans rather than a computer system or sensors, and are thus especially valuable for discovering knowledge about people’s opinions and preferences, in addition to many other kinds of knowledge that we encode in text. This course will cover search engine technologies, which play an important role in any data mining applications involving text data for two reasons. First, while the raw data may be large for any particular problem, it is often a relatively small subset of the data that are relevant, and a search engine is an essential tool for quickly discovering a small subset of relevant text data in a large text collection. Second, search engines are needed to help analysts interpret any patterns discovered in the data by allowing them to examine the relevant original text data to make sense of any discovered pattern. You will learn the basic concepts, principles, and the major techniques in text retrieval, which is the underlying science of search engines.

3 lecture hours
Credit: 0.50
Prerequisite: CP317
Corequisite: CP476

Section Campus Days Times Room Instructor
B Waterloo MW 01:00 PM - 02:20 PM P115 Mr. Haytham Qushtom

CP468: Artificial Intelligence

Examination of current concepts and techniques in artificial intelligence and machine learning. Topics include knowledge representation, automated reasoning, machine learning and knowledge-based systems. Extensive use of case studies and current applications.

3 lecture hours
Credit: 0.50
Prerequisite: CP213

Section Campus Days Times Room Instructor
A Waterloo MW 02:30 PM - 03:50 PM LH1009 Mr. Emad Mohammed

CP476: Internet Computing

The architecture of the Internet. Client-server programming, technologies of the web (URLs, HTML, HTTP, applets, etc.) Introduction to building web applications and server-side programming.

3 lecture hours
Credit: 0.50
Prerequisite: CP363, CP372

Section Campus Days Times Room Instructor
B Waterloo TR 11:30 AM - 12:50 PM SB106 Mr. Shaun Gao

CP610: Data Analysis

Data analysis is a burgeoning field that allows organizations to discover patterns in data to help explain current behaviours or predict future outcomes. In this course, students learn the theories, techniques and practices involved in modern data analysis in order to effectively collect, process, interpret and use data in decision making. The course utilizes case studies from fields such as finance and statistics to expose students to topics including data collection, storage, processing, representation, and reporting, and also further develop their decision-making skills using decision trees and artificial intelligence.

3 lecture hours
Credit: 0.50

Section Campus Days Times Room Instructor
OC1 Online Learning - Dr. Yang Liu

CP614: Applied Cryptography

Algorithms and issues in applied cryptography. Topics include block ciphers, stream ciphers, public-key cryptography, AES, elliptic curve cryptosystems, blockchain, digital signatures, zero knowledge proofs. Also, current issues in information security such as privacy enhancing technologies and post quantum cryptography.


Credit: 0.50
Exclusion: CP682B, CP460

Section Campus Days Times Room Instructor
A Waterloo T 04:00 PM - 06:50 PM SB203 Mr. Shaun Gao

CP631: Parallel Programming

Parallel computers, or supercomputers or high-performance clusters are ubiquitous today in science and engineering. Parallel programming requires inventing new algorithms and programming techniques. This course covers the paradigms of parallel programming, with an emphasis on problem solving and actual applications. The parallel programming concepts and algorithms are illustrated via implementations in OpenMP and MPI (Message Passing Interface), as well as serial farming.

3 lecture hours
Credit: 0.50
Exclusion: CP431

Section Campus Days Times Room Instructor
OC1 Online Learning - Dr. Pawel Pomorski

CP670: Android Application Programming

As the worldwide smartphone market continues to grow, so does the demand for mobile applications. This course provides students with the skills for creating and deploying applications for mobile devices using Android, the most widely used operating system. With an emphasis on the Model-View-Controller paradigm this course provides students with the foundational knowledge that underlies many popular programming languages. The course cumulates with the development of an original Android application. Knowledge of Java is required.

3 lecture hours
Credit: 0.50
Exclusion: CP470

Section Campus Days Times Room Instructor
OC1 Online Learning - Dr. Abdul Mawlood-Yunis

CP685: Cyber Attack and Defense

This course focuses on both the principles and practice in computer security. It provides an introduction to fundamental principles of computer systems and network security. It also covers the best practices of computer systems and network security protection and defense. The roadmap for the course includes seven main sections, including security objectives, vulnerabilities, attacks and exploitation, wireless security, web application security, defense and countermeasures, and incident handling and forensic investigation. Specifically, it first covers security objectives such as confidentiality, data integrity, authentication, authorization, access control, availability, and non-repudiation. Also, it covers the fundamental theories of vulnerabilities in software, computer system, network protocols, cryptographic techniques and social engineering. It then covers various security protection and defense mechanisms, including major security protocols and standards, firewalls, intrusion detection, wireless security, and web application security. It also discusses the latest cutting-edge insidious attack vectors, and the patterns of denial-of-service attacks. This course also presents the understanding tools needed to defend against attackers maintaining access and covering their tracks. This course examines and reviews various types of hacking tools as well as ways to harden the system or application against these attacks.

3 lecture hours
Credit: 0.50

Section Campus Days Times Room Instructor
A Waterloo TR 10:00 AM - 11:20 AM P120 Mr. Shaun Gao
B Waterloo TR 01:00 PM - 02:20 PM P115 Mr. Shaun Gao

CP699: Master's Thesis

Students will complete a thesis based on original research and defend it before an examining committee.

3 lecture hours
Credit: 2.00

Section Campus Days Times Room Instructor
A Waterloo -

PC141: Mechanics for the Life Sciences

Algebra-based course, which introduces basic principles of physics. Detailed topics covered: kinematics, motion in two dimensions, force, work and energy, linear momentum and collisions, circular motion and gravitation, rotational motion and equilibrium.

Lecture/Discussion: 3, Lab: 2 (biweekly)
Credit: 0.50
Prerequisite: One of OAC or Grade 12U Biology, Chemistry, or Physics
Exclusion: PC100*, PC110*, PC131, PC151, PC161, SC100

Section Campus Days Times Room Instructor
L1 Waterloo R 02:30 PM - 04:20 PM N2089 Mr. Salim Al-Ajeel
L2 Waterloo T 02:30 PM - 04:20 PM N2089 Mr. Salim Al-Ajeel
L3 Waterloo T 05:00 PM - 06:50 PM N2089 Mr. Salim Al-Ajeel
Y Waterloo MWF 10:00 AM - 11:50 AM 2-106 Mr. Salim Al-Ajeel

PC161: Mechanics for Life Sciences

Identical to PC141 but without the labs.

3 lecture hours
Credit: 0.50
Prerequisite: One of OAC or Grade 12U in Biology, Chemistry, or Physics
Exclusion: PC131, PC141, PC151, BSc degree programs, physics minor

Section Campus Days Times Room Instructor
Y Waterloo MWF 10:00 AM - 11:50 AM 2-106 Mr. Salim Al-Ajeel

PC220: Digital Electronics

Introduction to digital logic: logic gates, combinational circuit analysis using Boolean algebra and Karnaugh maps, number systems and codes, minimization techniques applied to combinational logic systems; flip-flops, multivibrators, counters and shift registers.

3 lecture hours
Credit: 0.50
Prerequisite: Registration status: Year 2
Exclusion: CP120/PC120
Cross-Listed: CP220

Section Campus Days Times Room Instructor

PC310C: Physics for Medicine & Biology

A detailed examination of a field or topic of interest not covered by the regular program.

3 lecture hours
Credit: 0.50
Prerequisite: Permission of the department.

Section Campus Days Times Room Instructor
A Waterloo TR 11:30 AM - 12:50 PM P115 Mr. Salim Al-Ajeel

Fall 2024

AS101: Astronomy I: Our Place in the Cosmos

An introduction to the science of astronomy, the process by which we develop astronomical principles and the application of these techniques to gain a modern understanding of our Solar System. Topics covered include the historical development of astronomy, understanding the night sky, Newton's law of gravitation, light and telescopes, and a detailed study of the Solar System. New data from recent explorations of Mars, Saturn and other celestial objects will be discussed.

3 lecture hours
Credit: 0.50
Exclusion: AS105

Section Campus Days Times Room Instructor
A Waterloo MW 04:00 PM - 05:20 PM BA201 Mr. T. Stephen Sathiaraj
OC1 Online Learning - Mr. Ismael Moumen

CP102: Information Processing with Microcomputer Systems

An introduction to the concepts of microcomputer hardware and software applications in a hands-on environment. Examples are based on the needs of students in the arts and sciences and are intended to give background knowledge and experience in the use of the microcomputer as a tool for many different applications. Topics include the history of technological innovation in microcomputer systems, design and operation, input/output devices, storage media and techniques, communications, operating systems, word processors, spreadsheets, statistics packages, computer-aided design and drawing, database management and system utilities.

3 lecture hours, 1 lab hour
Credit: 0.50
Exclusion: BU115, BU155, MB115; registration in BA or BSc programs in Computer Science or Physics; CS100 (University of Waterloo)

Section Campus Days Times Room Instructor
OC1 Online Learning - Mr. Qutaiba Albluwi
OC2 Online Learning - Mr. Qutaiba Albluwi

CP103: Principles of Programming

This course is designed for students with little or no programming experience. Introduce non-Computer Science students to basic computer programming techniques. Emphasis is on problem-solving and structured program design methodologies. Programming projects are implemented in a widely used high-level language. Students will learn elementary computer science concepts with emphasis on procedural programming. Topics include control loops, functions, input and output, installing and using packages, basic debugging skill, introduction to GUI programming. You are required to have a personal computer capable of running the Python programming language and the IDLE (Integrated Development Environment). Windows, Mac, and Linux are all appropriate operating systems for this on desktop or laptop machines. Chromebooks are not appropriate.


Credit: 0.50

Section Campus Days Times Room Instructor
A Waterloo MWF 08:30 AM - 09:20 AM BA112 Mr. Muhammad Malik
L1 Waterloo F 01:30 PM - 03:50 PM LH3066 Dr. Heider Ali

CP104: Introduction to Programming

An introductory course designed to familiarize the student with modern software development techniques. Emphasis is on problem-solving and structured program design methodologies. Programming projects are implemented in a widely used high-level language.

3 lecture hours, 2.5 lab hours
Credit: 0.50

Section Campus Days Times Room Instructor
1A Brantford R 01:00 PM - 03:20 PM Zoom Ms Xuyang Ma
A Waterloo MWF 08:30 AM - 09:20 AM LH1001 Mr. Sukhjit Sehra
B Waterloo MWF 10:30 AM - 11:20 AM LH1001 Mr. Sukhjit Sehra
BR Brantford MW 02:30 PM - 03:50 PM OD205 Mr. Kaiyu Li
IC1 Int College, Brantford W 06:30 PM - 09:50 PM CB-205 Dr. Zia Ud Din
ICA Int College, Brantford R 01:30 PM - 05:30 PM CB-205 Dr. Zia Ud Din
L1 Waterloo M 02:30 PM - 04:50 PM BA113 Mr. David Brown
L2 Waterloo T 02:30 PM - 04:50 PM BA113 Dr. Heider Ali
L3 Waterloo W 03:30 PM - 05:50 PM BA113 Dr. Heider Ali
L4 Waterloo R 03:30 PM - 05:50 PM BA113 Ms Xuyang Ma
L5 Waterloo F 12:00 PM - 02:20 PM BA113 Ms Xuyang Ma
MC1 Milton TR 10:00 AM - 11:20 AM MAC128 Dr. Saiqa Aleem
ML1 Milton R 02:00 PM - 04:20 PM MAC117 Mr. David Brown
OC1 Online Learning - Dr. Heider Ali

CP164: Data Structures I

Introduction to the study of data structures and their applications. Recursion, searching, sorting. Queues, stacks, heaps. Introduction to the analysis of algorithms, big “O” notation.

3 lecture hours, 2.5 lab hours
Credit: 0.50
Prerequisite: CP104
Exclusion: CP114

Section Campus Days Times Room Instructor
A Waterloo MWF 08:30 AM - 09:20 AM P110A/110B Mr. David Brown
IC1 Int College, Brantford - Ms Zara Hamid
ICA Int College, Brantford - Ms Zara Hamid
L1 Waterloo F 02:30 PM - 04:50 PM BA113 Ms Xuyang Ma
OC1 Online Learning - Dr. Masoomeh Rudafshani

CP202: Website Design

This course provides an in depth understanding of website design and administration, short of server-side programming. Emphasis is on standards, good design practices, accessibility, and tools. By the end of the course students should have the skills to administer a website, deal with security issues, design readable, informative, attractive and accessible web pages that fit current standards, and apply a logical and consistent navigational scheme to an entire website.

3 lecture hours
Credit: 0.50
Prerequisite: CP102 or CP104
Exclusion: Registration in BA or BSc programs in Computing.

Section Campus Days Times Room Instructor
A Waterloo TR 04:00 PM - 05:20 PM BA101 Mr. Haytham Qushtom

CP212: Windows Application Programming

This course is designed for students who have a basic understanding of spreadsheets, word processors, and databases as well as introductory programming experience. The course introduces methods to automate repetitive tasks and create user-friendly applications in spreadsheets, word processors, and databases using the powerful macro language, Visual Basic for Applications (VBA). Topics include: a review of programming constructs such as data types, looping, conditional statements, and arrays; the design of graphical interfaces with the typical "look and feel" of Windows software; the design of dialog boxes with controls and eventhandling code that responds to user input; automating tasks; consolidating data; providing userfriendly reports.

3 lecture hours, 1 lab hour
Credit: 0.50
Prerequisite: CP102 and previous programming experience, or CP104

Section Campus Days Times Room Instructor
A Waterloo TR 05:30 PM - 06:50 PM P110A/110B Dr. Li Wei
L1 Waterloo M 12:30 PM - 01:20 PM BA113 Dr. Heider Ali
L2 Waterloo M 01:30 PM - 02:20 PM BA113 Dr. Heider Ali
L3 Waterloo M 10:30 AM - 11:20 AM BA113 Dr. Heider Ali
L4 Waterloo M 11:30 AM - 12:20 PM BA113 Dr. Heider Ali

CP213: Introduction to Object-Oriented Programming

Fundamentals of object-oriented programming, classes, subclasses, inheritance, references, overloading, event-driven and concurrent programming, using modern application programming interface. The language Java will be used.

3 lecture hours, 1 lab hours
Credit: 0.50
Prerequisite: CP164 (or CP114)

Section Campus Days Times Room Instructor
1A Brantford M 10:00 AM - 10:50 AM
A Waterloo MW 05:30 PM - 06:50 PM LH1001 Ms Zara Hamid
BR1 Brantford WF 10:00 AM - 11:20 AM
L1 Waterloo T 12:30 PM - 01:20 PM N2095 Dr. Heider Ali
L2 Waterloo T 01:30 PM - 02:20 PM N2095 Dr. Masoomeh Rudafshani
L3 Waterloo W 10:30 AM - 11:20 AM BA113 Dr. Heider Ali
L4 Waterloo W 11:30 AM - 12:20 PM BA113 Dr. Heider Ali
OC1 Online Learning - Dr. Zia Ud Din

CP214: Discrete Structures for Computer Science

Finite and discrete algebraic structures relating to computers: sets, functions, relations. Machine-oriented logic. Topics include: propositional and predicate calculus, Boolean algebra, combinatorial counting (including Pigeonhole principle, permutations and combinations), recurrence equations, applications of recurrence equations in sorting algorithms, relations (including equivalence relations, partial orders), algorithms to generate permutations and combinations, induction and recursive programs, correctness proofs for both recursive and iterative program constructions, countable and uncountable sets, Cantor’s theorem, introduction to graph theory and graph algorithms.

3 lecture/discussion hours
Credit: 0.50
Prerequisite: CP164

Section Campus Days Times Room Instructor
A Waterloo MW 11:30 AM - 12:50 PM 1E1 Mr. Manoj Belavadi
B Waterloo MW 07:00 PM - 08:20 PM N1001 Mr. Manoj Belavadi
OC1 Online Learning - Dr. Angèle Foley

CP220: Digital Electronics

Introduction to digital logic: logic gates, combinational circuit analysis using Boolean algebra and Karnaugh maps, number systems and codes, minimization techniques applied to combinational logic systems; flip-flops, multivibrators, counters and shift registers.

3 lecture hours
Credit: 0.50
Prerequisite: Registration status: Year 2
Exclusion: CP120/PC120
Cross-Listed: PC220

Section Campus Days Times Room Instructor
1A Brantford T 11:30 AM - 12:50 PM
A Waterloo MW 02:30 PM - 03:50 PM 1E1 Dr. Maher Ahmed
B Waterloo TR 05:30 PM - 06:50 PM LH3094 Dr. Maher Ahmed
L1 Waterloo M 11:30 AM - 12:50 PM N2083 Mr. Shaun Gao
L10 Waterloo R 04:00 PM - 05:20 PM N2083 Mr. Terry Sturtevant
L11 Waterloo W 10:00 AM - 11:20 AM N2083 Mr. Shaun Gao
L12 Waterloo R 02:30 PM - 03:50 PM N2083 Mr. Terry Sturtevant
L13 Waterloo F 11:30 AM - 12:50 PM N2083 Mr. Terry Sturtevant
L14 Waterloo F 01:00 PM - 02:20 PM N2083 Mr. Terry Sturtevant
L15 Waterloo R 11:30 AM - 12:50 PM N2083 Mr. Shaun Gao
L16 Waterloo T 11:30 AM - 12:50 PM N2083 Mr. Shaun Gao
L17 Waterloo R 01:00 PM - 02:20 PM N2083 Mr. Terry Sturtevant
L18 Waterloo T 08:30 AM - 09:50 AM N2083 Mr. Shaun Gao
L2 Waterloo M 01:00 PM - 02:20 PM N2083 Mr. Shaun Gao
L22 Waterloo M 07:00 PM - 08:20 PM N2083 Mr. Terry Sturtevant
L24 Waterloo M 10:00 AM - 11:20 AM N2083 Mr. Terry Sturtevant
L26 Waterloo T 10:00 AM - 11:20 AM N2083 Mr. Shaun Gao
L27 Waterloo R 07:00 PM - 08:20 PM N2083 Mr. Shaun Gao
L28 Waterloo R 10:00 AM - 11:20 AM N2083 Mr. Shaun Gao
L3 Waterloo M 04:00 PM - 05:20 PM N2083 Mr. Terry Sturtevant
L34 Waterloo W 05:30 PM - 06:50 PM N2083 Mr. Shaun Gao
L4 Waterloo T 01:00 PM - 02:20 PM N2083 Mr. Terry Sturtevant
L5 Waterloo T 02:30 PM - 03:50 PM N2083 Mr. Terry Sturtevant
L6 Waterloo W 11:30 AM - 12:50 PM N2083 Mr. Shaun Gao
L7 Waterloo W 01:00 PM - 02:20 PM N2083 Mr. Shaun Gao
L8 Waterloo W 04:00 PM - 05:20 PM N2083 Mr. Shaun Gao
L9 Waterloo T 04:00 PM - 05:20 PM N2083 Mr. Terry Sturtevant

CP264: Data Structures II

A continuation of the study of data structures and their applications using C. Linked lists, binary search trees, balanced search trees. Hashing, collision-avoidance strategies. A continuation of basic algorithm analysis.

3 lecture hours, 1 lab hour
Credit: 0.50
Prerequisite: CP164
Exclusion: CP114

Section Campus Days Times Room Instructor
A Waterloo MWF 08:30 AM - 09:20 AM 2-106 Mr. Haytham Qushtom
L1 Waterloo W 01:30 PM - 02:20 PM BA113 Mr. David Brown
L2 Waterloo W 02:30 PM - 03:20 PM BA113 Dr. Heider Ali
OC1 Online Learning - Mr. Ahmed Ibrahim

CP312: Algorithm Design and Analysis I

Analysis of the best, average, and worse case behaviors of algorithms. Algorithmic strategies: brute force algorithms, greedy algorithms, divide-and-conquer, branch and bound, backtracking. Fundamental computing algorithms: O (n log n) sorting, hash table, binary trees, depth- and breadth-first search of graphs.

3 lecture hours
Credit: 0.50
Prerequisite: CP264 (or CP114 and CP213) and MA238

Section Campus Days Times Room Instructor
A Waterloo MWF 08:30 AM - 09:20 AM LH1009
B Waterloo MWF 09:30 AM - 10:20 AM P110 Dr. Masoomeh Rudafshani
OC1 Online Learning -

CP317: Software Engineering

Discussion of software development activities, including software process models, analysis, design, implementation, testing, project management and advanced topics. Both traditional and object-oriented methods are considered.

3 lecture hours
Credit: 0.50
Prerequisite: CP213, CP217 or CP264
Exclusion: CP417

Section Campus Days Times Room Instructor
A Waterloo MW 02:30 PM - 03:50 PM LH1009 Mr. Emad Mohammed
B Waterloo TR 04:00 PM - 05:20 PM 2-106 Mr. Shaun Gao

CP319: Digital System Design

Logic families and interfacing considerations for logic devices, VHDL; implementation techniques for combinational and sequential logic; introduction to finite state machines and design methodologies for synchronous and asynchronous sequential circuits; hazards, cycles and races; operation and interfacing of memory devices.

3 lecture hours
Credit: 0.50
Prerequisite: CP104, CP220/PC220 (or CP120/PC120)
Corequisite: CP300/PC300 recommended
Cross-Listed: as PC319

Section Campus Days Times Room Instructor
A Waterloo TR 11:30 AM - 12:50 PM BA429 Mr. Ahmed Fahim Mostafa

CP320: Physical Computing: Digital Interaction with the Analog World

Design and construction of computational systems that interact with the physical world for applications such as home or experiment automation. Basics of electrical circuits, reading from analog and digital sensors, controlling analog and digital actuators, single board computers such as Arduino or Raspberry PI, analog components including diodes, transistors and operational amplifiers.

3 lecture hours
Credit: 0.50
Prerequisite: CP164 (or CP114), CP220/PC220 (or CP120/PC120)
Exclusion: CP300°/PC300°
Cross-Listed: PC320

Section Campus Days Times Room Instructor
A Waterloo TR 08:30 AM - 09:50 AM BA211 Mr. Terry Sturtevant
L1 Waterloo TR 10:00 AM - 11:20 AM N2082
L2 Waterloo TR 11:30 AM - 12:50 PM N2082

CP322: Machine Learning

With the rise of data science and big data fields, machine learning has gained further recognition as the key driver behind the successful advance of these fields. However, many recent entrants to the field can only utilize the variety of machine learning algorithms as black boxes. This course aims to empower students to effectively use and understand the primary approaches so as to be able to modify them for specific uses. Our focus is less on theory and more on practice. Students engage in hands-on implementation of some of the fundamental algorithms such as predictive modeling and clustering applied to real, open-ended problems.

3 lecture hours
Credit: 0.50
Prerequisite: CP312

Section Campus Days Times Room Instructor
A Waterloo MW 01:00 PM - 02:20 PM SB106 Dr. Yang Liu
B Waterloo MW 04:00 PM - 05:20 PM BA111 Dr. Jisahu Zhao

CP340: E-commerce

This course deals with the development of the Internet and its impacts on business transactions. The course explains key concepts and trends associated with e-commerce and online business. Topics include the role of the Internet, electronic marketplace, online marketing, web analytics, privacy and security issues and electronic payments.

3 lecture hours
Credit: 0.50
Prerequisite: CP213

Section Campus Days Times Room Instructor
A Waterloo MWF 01:30 PM - 02:20 PM N1001 Mr. Yasser Ebrahim

CP363: Database I

Introduction to database systems. Topics include data models, query languages, database design, recovery and concurrency, integrity and security.

3 lecture hours
Credit: 0.50
Prerequisite: CP164 (or CP114)

Section Campus Days Times Room Instructor
A Waterloo MWF 11:30 AM - 12:20 PM N1002 Dr. Ilias Kotsireas
B Waterloo MWF 09:30 AM - 10:20 AM 2-106 Mr. David Brown

CP372: Computer Networks

Introduction to computer communication networks. The OSI reference model. Protocols for error and flow control. Medium access protocols. Routing and congestion control. Internet architecture and protocols. Unix network programming.

3 lecture hours
Credit: 0.50
Prerequisite: CP213, CP386

Section Campus Days Times Room Instructor
A Waterloo MWF 10:30 AM - 11:20 AM BA101 Ms. Lilatul Ferdouse
B Waterloo MWF 08:30 AM - 09:20 AM BA111 Dr. Masoomeh Rudafshani

CP386: Operating Systems

Topics include operating system services, file systems, CPU scheduling, memory management, virtual memory, disk scheduling, deadlocks, concurrent processes, protection and distributed systems.

3 lecture hours
Credit: 0.50
Prerequisite: CP216, CP217 or CP264
Exclusion: CP466

Section Campus Days Times Room Instructor
A Waterloo TR 05:30 PM - 06:50 PM SB106 Ms. Azam Asilian Bidgoli
B Waterloo MW 04:00 PM - 05:20 PM BA110 Mr. Sukhjit Sehra

CP411: Computer Graphics

The principles, algorithms, and techniques of computer graphics. Topics include introduction to graphics hardware, output primitives, two- and three-dimensional geometric transformations, three-dimensional object representation and viewing, illumination models and surface-rendering methods. Graphics software tools will be introduced in this course.

3 lecture hours
Credit: 0.50
Prerequisite: CP264 (or CP114 and CP217) and MA122

Section Campus Days Times Room Instructor
A Waterloo TR 08:30 AM - 09:50 AM N1002 Dr. Hongbing Fan

CP414: Foundations of Computing

Deterministic and nondeterministic finite automata (DFAs and NFAs), regular expressions, context-free grammars, relationship of push-down automata and context-free grammars, definintion of the classes P and NP, NP-completeness (Cook's Theorem), standard NP-complete problems, reduction techniques, Turing machines, the halting problem.

3 lecture hours
Credit: 0.50
Prerequisite: CP312, MA238

Section Campus Days Times Room Instructor
A Waterloo MW 05:30 PM - 06:50 PM SB106 Ms. Azam Asilian Bidgoli

CP421: Data Mining

The course is aimed at an entry level study of information retrieval and data mining techniques. It is about how to find relevant information and subsequently extract meaningful patterns out of it. While the basic theories and mathematical models of information retrieval and data mining are covered, the course is primarily focused on practical algorithms of textual document indexing, relevance ranking, web usage mining, text analytics, as well as their performance evaluations. At the end of the course student are expected to understand the following: 1. The common algorithms and techniques for information retrieval (document indexing and retrieval, query processing, etc). 2. The quantitative evaluation methods for the IR systems and data mining techniques. 3. The popular probabilistic retrieval methods and ranking principles. 4. The techniques and algorithms existing in practical retrieval and data mining systems such as those in web search engines and recommender systems. 5. The challenges and existing techniques for the emerging topics of MapReduce, portfolio retrieval and online advertising.

3 lecture hours
Credit: 0.50
Prerequisite: CP312, CP317

Section Campus Days Times Room Instructor
A Waterloo MW 02:30 PM - 03:50 PM 2-106 Dr. Yang Liu

CP422: Programming for Big Data

The explosion of social media and the computerization of every aspect of social and economic activity resulted in creation of large volumes of mostly unstructured data: web logs, videos, speech recordings, photographs, e-mails, Tweets, and similar data. The key objective of this course is to familiarize the students with key information technologies used in manipulating, storing, and analyzing big data. We look at the basic tools for statistical analysis, R and Python, and some key methods of machine learning. We review MapReduce techniques for parallel processing, Hadoop, an open source framework for running MapReduce on Internet scale problems and HDFS, Hadoop's Distributed File System. We teach Spark which emerged as the most important big data processing framework. We touch on tools that provide SQL-like access to unstructured data like Hive. We analyze so-called NoSQL storage solutions exemplified by Cassandra for their critical features: speed of reads and writes, and ability to scale to extreme volumes. We examine memory resident databases (VoltDB, SciDB) and graph databases (Ne4J). Students gain the ability to initiate and design highly scalable systems that can accept, store, and analyze large volumes of unstructured data in batch mode and/or real time. Most lectures are presented using Java examples. Some lectures use Python and R.


Credit: 0.50
Prerequisite: CP317

Section Campus Days Times Room Instructor
A Waterloo MWF 10:30 AM - 11:20 AM BA111 Mr. Emad Mohammed

CP460: Applied Cryptography

Algorithms and issues in applied cryptography. Topics include history of cryptography, block ciphers, stream ciphers, public-key encryption, digital signatures, and key management. Also, discussions of current issues in information security.

3 lecture hours
Credit: 0.50
Prerequisite: MA121, CP213 or CP264 (or CP104 and a 0.5 MA courseCredit at the 200 level with permission of the department)

Section Campus Days Times Room Instructor
A Waterloo MW 05:30 PM - 06:50 PM LH1010 Mr. or Ms. Abbas Yazdinejad

CP465: Database II

This course covers advanced database management system design principles and techniques. Possible topics include access methods, query processing and optimization, transaction processing, distributed databases, deductive databases, object-relational databases, data warehousing, data mining, Web and semistructured data, search engines, etc.

3 lecture hours
Credit: 0.50
Prerequisite: CP363
Exclusion: CP400H

Section Campus Days Times Room Instructor
A Waterloo MW 11:30 AM - 12:50 PM N1044 Mr. Haytham Qushtom

CP467: Image Processing & Pattern Recognition

Introduction to vision systems for image acquisition and display. Comprehensive coverage of image enhancement, segmentation, feature extraction and classification.

3 lecture hours
Credit: 0.50
Prerequisite: CP213, MA240 or ST230 (or equivalent)

Section Campus Days Times Room Instructor
A Waterloo MW 11:30 AM - 12:50 PM BA110 Dr. Zia Ud Din

CP468: Artificial Intelligence

Examination of current concepts and techniques in artificial intelligence and machine learning. Topics include knowledge representation, automated reasoning, machine learning and knowledge-based systems. Extensive use of case studies and current applications.

3 lecture hours
Credit: 0.50
Prerequisite: CP213

Section Campus Days Times Room Instructor
A Waterloo MW 05:30 PM - 06:50 PM P110A/110B Dr. Ilias Kotsireas

CP470: Android Programming

How to write applications for the Android mobile devices using the Android Development Tools. Developing software with the Model-View-Controller paradigm. Knowledge of Java is required. The course project will be the development of an Android app.

3 lecture hours
Credit: 0.50
Prerequisite: CP213, CP317
Exclusion: CP400Q

Section Campus Days Times Room Instructor
A Waterloo MW 11:30 AM - 12:50 PM BA211 Dr. Abdul Mawlood-Yunis

CP480: Wireless Communication & Networks

This course introduces fundamental concepts of wireless networks. Topics include wireless communication overview, physical layer, wireless concepts and protocols including TCP over wireless; cellular standards, WIFI WIMax, and Bluetooth standards; applications such as personal area networks and sensor networks; other issues such as mobile communication security.

3 lecture hours
Credit: 0.50
Prerequisite: CP213, CP372 or CP364/PC364.
Exclusion: CP400P.

Section Campus Days Times Room Instructor
A Waterloo TR 05:30 PM - 06:50 PM BA210 Mr. Dariush Ebrahimi
L1 Waterloo -
L2 Waterloo -

CP493: Directed Research Project I

An in-depth investigation of a computer science subject under faculty supervision, including the submission of a final report. Irregular course.

3 lecture hours
Credit: 0.50
Prerequisite: Registration status: Year 4 Honours Computing and Computer Electronics, or Computer Science, and permission of the department

Section Campus Days Times Room Instructor
A Waterloo - Dr. Alexei Kaltchenko

CP494: Directed Research Project II

An in-depth investigation of a computer science subject under faculty supervision, including the submission of a formal report. Irregular course.

3 lecture hours
Credit: 0.50
Prerequisite: CP493 and permission of the Department.

Section Campus Days Times Room Instructor
A Waterloo -

CP600: Practical Algorithm Design

The techniques of algorithm design form one of the core practical technologies of computer science. This course focuses on advanced techniques for designing and analysing algorithms, and explores their use in a variety of application areas. Topics include: sorting and search algorithms, graph traversal algorithms, combinatorial search, heuristics methods, and dynamic programming, intractable problems. Students learn the skill of recognizing computational complexities of computing problems and designing solutions for them.

3 lecture hours
Credit: 0.50

Section Campus Days Times Room Instructor
A Waterloo MW 04:00 PM - 05:20 PM 2C17 Mr. Dariush Ebrahimi
B Waterloo TR 02:30 PM - 03:50 PM 2-108 Ms. Nakhat Fatima
BR1 Brantford MW 08:30 AM - 09:50 AM OD110
BR2 Brantford MW 10:00 AM - 11:20 AM OD110
OC1 Online Learning - Dr. Masoomeh Rudafshani

CP610: Data Analysis

Data analysis is a burgeoning field that allows organizations to discover patterns in data to help explain current behaviours or predict future outcomes. In this course, students learn the theories, techniques and practices involved in modern data analysis in order to effectively collect, process, interpret and use data in decision making. The course utilizes case studies from fields such as finance and statistics to expose students to topics including data collection, storage, processing, representation, and reporting, and also further develop their decision-making skills using decision trees and artificial intelligence.

3 lecture hours
Credit: 0.50

Section Campus Days Times Room Instructor
A Waterloo MW 10:00 AM - 11:20 AM 2C4 Dr. Jisahu Zhao
BR1 Brantford MW 11:30 AM - 12:50 PM OD110
BR2 Brantford MW 01:00 PM - 02:20 PM OD110

CP612:


Section Campus Days Times Room Instructor
OC1 Online Learning - Mr. Haytham Qushtom

CP630: Enterprise Computing

Enterprise computing offers integrated solutions to organizations that need help managing a variety of problems including software development, resource management and data analytics. This course extends traditional Computer Science education through a practical skills-based application focused on enterprise computing which integrates IT management and application development. Students examine the principles, techniques and practices in modern enterprise computing with a focus on backend business logic computing and the technical foundation of data analysis. Students will learn to manage all aspects of enterprise computing solutions including security, user experience, optimization, and distributed databases. Practical knowledge is further developed through lab work, case studies and guest-lectures of IT managers.

3 lecture hours
Credit: 0.50

Section Campus Days Times Room Instructor
OC1 Online Learning - Dr. Hongbing Fan

CP640: Machine Learning

Machine learning is the science of getting computers to act without being explicitly programmed. In the past decade, machine learning has given us self-driving cars, practical speech recognition, effective web search, and a vastly improved understanding of the human genome. This course focuses on machine learning, data mining, and statistical pattern recognition. Topics include supervised learning (parametric/non-parametric algorithms, support vector machines, kernels, neural networks) and unsupervised learning (clustering, dimensionality reduction, recommender systems, deep learning). Students work with variety of learning algorithms and evaluate which are most likely to be successful.

3 lecture hours
Credit: 0.50

Section Campus Days Times Room Instructor
BR1 Brantford MW 02:30 PM - 03:50 PM OD110 Mr. or Ms. Abbas Yazdinejad
BR2 Brantford MW 04:00 PM - 05:20 PM OD110
OC1 Online Learning - Ms. Elham Harirpoush

CP670: Android Application Programming

As the worldwide smartphone market continues to grow, so does the demand for mobile applications. This course provides students with the skills for creating and deploying applications for mobile devices using Android, the most widely used operating system. With an emphasis on the Model-View-Controller paradigm this course provides students with the foundational knowledge that underlies many popular programming languages. The course cumulates with the development of an original Android application. Knowledge of Java is required.

3 lecture hours
Credit: 0.50
Exclusion: CP470

Section Campus Days Times Room Instructor
A Waterloo MW 01:00 PM - 02:20 PM N1044 Dr. Abdul Mawlood-Yunis

CP683:


Section Campus Days Times Room Instructor
A Waterloo TR 04:00 PM - 05:20 PM N1057 Mr. or Ms. ANK Zaman
B Waterloo MW 01:00 PM - 02:20 PM 2C4 Mr. or Ms. ANK Zaman

CP699: Master's Thesis

Students will complete a thesis based on original research and defend it before an examining committee.

3 lecture hours
Credit: 2.00

Section Campus Days Times Room Instructor
A Waterloo -

PC111L:


Section Campus Days Times Room Instructor
*0 University of Waterloo -

PC111W:


Section Campus Days Times Room Instructor
*0 University of Waterloo -

PC121W:


Section Campus Days Times Room Instructor
*0 University of Waterloo -

PC131: Mechanics

Calculus-based course, which introduces basic principles of physics. Detailed topics covered: one-dimensional motion, vectors, motion in two and three dimensions, force and motion, kinetic energy and work, potential energy, conservation of energy, collisions and momentum, rotational motion, simple harmonic motion, torque, angular momentum, and gravitation.

Lecture/Discussion: 3, Lab: 2 (biweekly)
Credit: 0.50
Prerequisite: OAC or Grade 12U Physics or Advanced Functions and Introductory Calculus
Corequisite: MA110* or MA103 or MA105
Exclusion: PC100*, PC110*, PC141, PC151, PC161, SC100

Section Campus Days Times Room Instructor
A Waterloo TR 01:00 PM - 02:20 PM N1044 Dr. Alexei Kaltchenko
L1 Waterloo M 08:30 AM - 10:20 AM N2090 Dr. Hasan Shodiev
L2 Waterloo M 02:30 PM - 04:20 PM N2090 Dr. Hasan Shodiev
L3 Waterloo M 04:30 PM - 06:20 PM N2090 Dr. Hasan Shodiev
L4 Waterloo T 02:30 PM - 04:20 PM N2090 Dr. Hasan Shodiev
T1 Waterloo F 09:30 AM - 10:20 AM N1057 Dr. Hasan Shodiev
T2 Waterloo F 10:30 AM - 11:20 AM N1057 Dr. Hasan Shodiev

PC141: Mechanics for the Life Sciences

Algebra-based course, which introduces basic principles of physics. Detailed topics covered: kinematics, motion in two dimensions, force, work and energy, linear momentum and collisions, circular motion and gravitation, rotational motion and equilibrium.

Lecture/Discussion: 3, Lab: 2 (biweekly)
Credit: 0.50
Prerequisite: One of OAC or Grade 12U Biology, Chemistry, or Physics
Exclusion: PC100*, PC110*, PC131, PC151, PC161, SC100

Section Campus Days Times Room Instructor
A Waterloo TR 01:00 PM - 02:20 PM N1001 Dr. Maher Ahmed
L1 Waterloo M 02:30 PM - 04:20 PM N2089 Dr. Hasan Shodiev
L10 Waterloo R 02:30 PM - 04:20 PM N2089 Dr. Hasan Shodiev
L2 Waterloo M 04:30 PM - 06:20 PM N2089 Dr. Hasan Shodiev
L3 Waterloo W 04:30 PM - 06:20 PM N2089 Dr. Hasan Shodiev
L4 Waterloo W 10:30 AM - 12:20 PM N2089 Dr. Hasan Shodiev
L5 Waterloo T 02:30 PM - 04:20 PM N2089 Dr. Hasan Shodiev
L6 Waterloo T 12:30 PM - 02:20 PM N2089 Dr. Hasan Shodiev
L7 Waterloo W 08:30 AM - 10:20 AM N2089 Dr. Hasan Shodiev
L8 Waterloo W 12:30 PM - 02:20 PM N2089 Dr. Hasan Shodiev
L9 Waterloo W 02:30 PM - 04:20 PM N2089 Dr. Hasan Shodiev
T1 Waterloo R 07:00 PM - 07:50 PM BA210 Dr. Hasan Shodiev
T2 Waterloo R 08:00 PM - 08:50 PM BA210 Dr. Hasan Shodiev
T3 Waterloo R 09:00 PM - 09:50 PM BA210 Dr. Hasan Shodiev
T4 Waterloo F 09:30 AM - 10:20 AM BA210 Dr. Hasan Shodiev
T5 Waterloo F 10:30 AM - 11:20 AM BA210 Dr. Hasan Shodiev
T6 Waterloo F 11:30 AM - 12:20 PM BA210 Dr. Hasan Shodiev

PC151: Mechanics

Identical to PC131 but without the labs.

3 lecture/discussion hours
Credit: 0.50
Prerequisite: OAC or Grade 12U Physics or Advanced Functions and Introductory Calculus
Corequisite: MA100 or MA110* or MA103 or MA105
Exclusion: PC131, PC141, PC161, BSc degree programs, physics minor

Section Campus Days Times Room Instructor
A Waterloo TR 01:00 PM - 02:20 PM N1044
T1 Waterloo F 09:30 AM - 10:20 AM N1057
T2 Waterloo F 10:30 AM - 11:20 AM N1057

PC161: Mechanics for Life Sciences

Identical to PC141 but without the labs.

3 lecture hours
Credit: 0.50
Prerequisite: One of OAC or Grade 12U in Biology, Chemistry, or Physics
Exclusion: PC131, PC141, PC151, BSc degree programs, physics minor

Section Campus Days Times Room Instructor
A Waterloo TR 01:00 PM - 02:20 PM N1001 Dr. Maher Ahmed
T1 Waterloo R 07:00 PM - 07:50 PM BA210
T2 Waterloo R 08:00 PM - 08:50 PM BA210
T3 Waterloo R 09:00 PM - 09:50 PM BA210
T4 Waterloo F 09:30 AM - 10:20 AM BA210
T5 Waterloo F 10:30 AM - 11:20 AM BA210
T6 Waterloo F 11:30 AM - 12:20 PM BA210

PC212: Electricity and Magnetism

Introduction to electrostatics and magnetostatics including Gauss' law, electric potential, capacitance, electromagnetic induction. Introductory DC and AC circuit theory. Electromagnetic waves.

3 lecture/discussion hours
Credit: 0.50
Prerequisite: PC131, PC132 (or PC141 and PC142), MA122, and one of MA110* or MA103 or MA105.

Section Campus Days Times Room Instructor
A Waterloo MW 01:00 PM - 02:20 PM BA202 Dr. Li Wei

PC220: Digital Electronics

Introduction to digital logic: logic gates, combinational circuit analysis using Boolean algebra and Karnaugh maps, number systems and codes, minimization techniques applied to combinational logic systems; flip-flops, multivibrators, counters and shift registers.

3 lecture hours
Credit: 0.50
Prerequisite: Registration status: Year 2
Exclusion: CP120/PC120
Cross-Listed: CP220

Section Campus Days Times Room Instructor
1A Brantford T 11:30 AM - 12:50 PM
A Waterloo MW 02:30 PM - 03:50 PM 1E1 Dr. Maher Ahmed
B Waterloo TR 05:30 PM - 06:50 PM LH3094 Dr. Maher Ahmed
L1 Waterloo M 11:30 AM - 12:50 PM N2083
L10 Waterloo R 04:00 PM - 05:20 PM N2083
L11 Waterloo W 10:00 AM - 11:20 AM N2083
L12 Waterloo R 02:30 PM - 03:50 PM N2083
L13 Waterloo F 11:30 AM - 12:50 PM N2083
L14 Waterloo F 01:00 PM - 02:20 PM N2083
L15 Waterloo R 11:30 AM - 12:50 PM N2083
L16 Waterloo T 11:30 AM - 12:50 PM N2083
L17 Waterloo R 01:00 PM - 02:20 PM N2083
L18 Waterloo T 08:30 AM - 09:50 AM N2083
L19 Waterloo M 05:30 PM - 06:50 PM N2083
L2 Waterloo M 01:00 PM - 02:20 PM N2083
L20 Waterloo W 08:30 AM - 09:50 AM N2083
L21 Waterloo R 08:30 AM - 09:50 AM N2083
L22 Waterloo M 07:00 PM - 08:20 PM N2083
L23 Waterloo T 07:00 PM - 08:20 PM N2083
L24 Waterloo M 10:00 AM - 11:20 AM N2083
L25 Waterloo W 07:00 PM - 08:20 PM N2083
L26 Waterloo T 10:00 AM - 11:20 AM N2083
L27 Waterloo R 07:00 PM - 08:20 PM N2083
L28 Waterloo R 10:00 AM - 11:20 AM N2083
L3 Waterloo M 04:00 PM - 05:20 PM N2083
L31 Waterloo M 08:30 AM - 09:50 AM N2083
L34 Waterloo W 05:30 PM - 06:50 PM N2083
L4 Waterloo T 01:00 PM - 02:20 PM N2083
L5 Waterloo T 02:30 PM - 03:50 PM N2083
L6 Waterloo W 11:30 AM - 12:50 PM N2083
L7 Waterloo W 01:00 PM - 02:20 PM N2083
L8 Waterloo W 04:00 PM - 05:20 PM N2083
L9 Waterloo T 04:00 PM - 05:20 PM N2083

PC226W:


Section Campus Days Times Room Instructor
*0 University of Waterloo -
*T University of Waterloo -

PC234: Planetary and Space Science

This is an introductory course in planetary and space science. We will study the basic physics, structure, morphology and evolution of each planet separately, including comets, asteroids, and meteorites, Kuiper belt and Oort cloud. We will address the most recent theories of the Solar System formation and evolution hypotheses as a whole, and we will touch briefly upon all the known theories from the tidal theory to the most recent re-emergence of the nebular hypothesis. We will also examine the corresponding outstanding issues, as well as the solar evolution hypothesis. Finally, we will discuss in a fair amount of detail the most important up to date deep space missions, their findings, and their importance in the understanding of our neighborhood as a whole.

3 lecture hours
Credit: 0.50
Prerequisite: AS101
Exclusion: PC310B

Section Campus Days Times Room Instructor
A Waterloo MWF 10:30 AM - 11:20 AM BA112 Mr. Salim Al-Ajeel

PC234W:


Section Campus Days Times Room Instructor
*0 University of Waterloo -

PC236W:


Section Campus Days Times Room Instructor
*0 University of Waterloo -

PC275W:


Section Campus Days Times Room Instructor
*0 University of Waterloo -

PC319: Digital System Design

Logic families and interfacing considerations for logic devices, VHDL; implementation techniques for combinational and sequential logic; introduction to finite state machines and design methodologies for synchronous and asynchronous sequential circuits; hazards, cycles and races; operation and interfacing of memory devices.

3 lecture hours
Credit: 0.50
Prerequisite: CP104, CP220/PC220 (or CP120/PC120)
Corequisite: CP300/PC300 recommended
Cross-Listed: as CP319

Section Campus Days Times Room Instructor
A Waterloo TR 11:30 AM - 12:50 PM BA429 Mr. Ahmed Fahim Mostafa

PC320: Physical Computing: Digital Interaction with the Analog World

Design and construction of computational systems that interact with the physical world for applications such as home or experiment automation. Basics of electrical circuits, reading from analog and digital sensors, controlling analog and digital actuators, single board computers such as Arduino or Raspberry PI, analog components including diodes, transistors and operational amplifiers.

3 lecture hours
Credit: 0.50
Prerequisite: CP164 (or CP114), CP220/PC220 (or CP120/PC120)
Exclusion: CP300°/PC300°
Cross-Listed: CP320

Section Campus Days Times Room Instructor
A Waterloo TR 08:30 AM - 09:50 AM BA211 Mr. Terry Sturtevant
L1 Waterloo TR 10:00 AM - 11:20 AM N2082 Mr. Terry Sturtevant
L2 Waterloo TR 11:30 AM - 12:50 PM N2082 Mr. Terry Sturtevant

PC321: Quantum Mechanics I

Schroedinger equation, interpretation of the wave function, expectation value, Ehrenfest's theorem, wave packets, stationary states and energy quantization, potential wells and potential barriers, scattering and tunneling, the harmonic oscillator, Schroedinger equation in three dimensions, the hydrogen atom, WKB approximation.

3 lecture hours
Credit: 0.50
Prerequisite: PC242, MA205

Section Campus Days Times Room Instructor
A Waterloo TR 11:30 AM - 12:50 PM N1059 Dr. Alexei Kaltchenko

PC344: Thermodynamics and Statistical Mechanics

An introduction to thermodynamics and its statistical basis at the microscopic level, with applications to problelms originating in a modern laboratory or engineering environment. Topics include thermodynamics of model systems, Maxwell-Boltzmann distribution, quantum statistics and applications.

3 lecture hours
Credit: 0.50
Prerequisite: PC131, PC132, (or PC141 and PC142), MA201.

Section Campus Days Times Room Instructor
A Waterloo MW 02:30 PM - 03:50 PM BA431 Dr. Alexei Kaltchenko

PC358W:


Section Campus Days Times Room Instructor
*0 University of Waterloo -

PC360: Electromagnetic Theory

Maxwell's equations, plane wave theory of waveguides, radiating systems.

3 lecture hours
Credit: 0.50
Prerequisite: PC212, PC237, MA201, MA205

Section Campus Days Times Room Instructor
A Waterloo TR 10:00 AM - 11:20 AM P118 Dr. Li Wei

PC360B:


Section Campus Days Times Room Instructor
*0 University of Waterloo -

PC364W:


Section Campus Days Times Room Instructor
*0 University of Waterloo -

PC454: Solid State Physics

The purpose of this course is to acquaint the student with the fundamentals of solid state physics. This emphasis is on understanding the behavior of electrons in metals and semiconductors. Topics discussed: crystal structure, reciprocal lattice, crystal binding and elastic constants, phonons, free-electron Fermi gas, energy bands, semiconductor crystals and Fermi surfaces.

3 lecture hours
Credit: 0.50
Prerequisite: PC321

Section Campus Days Times Room Instructor
A Waterloo MWF 11:30 AM - 12:20 PM BA431

PC475W:


Section Campus Days Times Room Instructor
*0 University of Waterloo -

PC491: Directed Research Project I

An in-depth investigation of a topic under faculty supervision, including the submission of a formal report.

3 lecture hours
Credit: 0.50
Prerequisite: Registration status: Year 4 Honours Computing and Computer Electronics, Honours Physics or Honours Photonics and permission of the department.

Section Campus Days Times Room Instructor
A Waterloo -

PC492: Directed Research Project II

An in-depth investigation of a topic under faculty supervision, including the submission of a formal report.

3 lecture hours
Credit: 0.50
Prerequisite: PC491 and permission of the Department

Section Campus Days Times Room Instructor
A Waterloo -

PC495F:


Section Campus Days Times Room Instructor

Winter 2025

AS101: Astronomy I: Our Place in the Cosmos

An introduction to the science of astronomy, the process by which we develop astronomical principles and the application of these techniques to gain a modern understanding of our Solar System. Topics covered include the historical development of astronomy, understanding the night sky, Newton's law of gravitation, light and telescopes, and a detailed study of the Solar System. New data from recent explorations of Mars, Saturn and other celestial objects will be discussed.

3 lecture hours
Credit: 0.50
Exclusion: AS105

Section Campus Days Times Room Instructor
B Waterloo TR 05:30 PM - 06:50 PM BA201 Mr. T. Stephen Sathiaraj
OC2 Online Learning - Mr. Ismael Moumen

AS102: Astronomy II: Journey Through the Cosmos

A journey beyond our Solar System to develop a modern understanding of other stars, galaxies and the structure, origin and fate of the universe. Includes an introduction to basic concepts of relativity and quantum mechanics, lives of stars, evolution of galaxies, Hubble's law and the Big Bang. Objects such as black holes, supernovae, pulsars, dark matter and wormholes are encountered and studied along the way.

3 lecture hours
Credit: 0.50
Prerequisite: AS101
Exclusion: AS105

Section Campus Days Times Room Instructor
OC2 Online Learning - Mr. Ismael Moumen

CP102: Information Processing with Microcomputer Systems

An introduction to the concepts of microcomputer hardware and software applications in a hands-on environment. Examples are based on the needs of students in the arts and sciences and are intended to give background knowledge and experience in the use of the microcomputer as a tool for many different applications. Topics include the history of technological innovation in microcomputer systems, design and operation, input/output devices, storage media and techniques, communications, operating systems, word processors, spreadsheets, statistics packages, computer-aided design and drawing, database management and system utilities.

3 lecture hours, 1 lab hour
Credit: 0.50
Exclusion: BU115, BU155, MB115; registration in BA or BSc programs in Computer Science or Physics; CS100 (University of Waterloo)

Section Campus Days Times Room Instructor
OC3 Online Learning - Mr. Qutaiba Albluwi
OC4 Online Learning - Mr. Qutaiba Albluwi

CP103: Principles of Programming

This course is designed for students with little or no programming experience. Introduce non-Computer Science students to basic computer programming techniques. Emphasis is on problem-solving and structured program design methodologies. Programming projects are implemented in a widely used high-level language. Students will learn elementary computer science concepts with emphasis on procedural programming. Topics include control loops, functions, input and output, installing and using packages, basic debugging skill, introduction to GUI programming. You are required to have a personal computer capable of running the Python programming language and the IDLE (Integrated Development Environment). Windows, Mac, and Linux are all appropriate operating systems for this on desktop or laptop machines. Chromebooks are not appropriate.


Credit: 0.50

Section Campus Days Times Room Instructor
B Waterloo MWF 01:30 PM - 02:20 PM N1057 Mr. Muhammad Malik
L1 Waterloo F 04:00 PM - 06:20 PM LH3066 Ms Xuyang Ma

CP104: Introduction to Programming

An introductory course designed to familiarize the student with modern software development techniques. Emphasis is on problem-solving and structured program design methodologies. Programming projects are implemented in a widely used high-level language.

3 lecture hours, 2.5 lab hours
Credit: 0.50

Section Campus Days Times Room Instructor
C Waterloo TR 10:00 AM - 11:20 AM N1002 Mr. Muhammad Malik
IC1 Int College, Brantford - Ms Zara Hamid
IC2 Int College, Brantford -
ICA Int College, Brantford -
ICB Int College, Brantford -
L1 Waterloo W 02:30 PM - 03:50 PM BA113 Ms Xuyang Ma
L2 Waterloo R 11:30 AM - 12:50 PM BA113 Dr. Heider Ali
OC2 Online Learning - Dr. Heider Ali

CP164: Data Structures I

Introduction to the study of data structures and their applications. Recursion, searching, sorting. Queues, stacks, heaps. Introduction to the analysis of algorithms, big “O” notation.

3 lecture hours, 2.5 lab hours
Credit: 0.50
Prerequisite: CP104
Exclusion: CP114

Section Campus Days Times Room Instructor
B Waterloo MWF 08:30 AM - 09:20 AM LH1001 Mr. David Brown
BR1 Brantford WF 11:30 AM - 12:50 PM CB207 Mr. Kaiyu Li
C Waterloo MWF 10:30 AM - 11:20 AM LH1001 Mr. David Brown
IC1 Int College, Brantford - Ms Zara Hamid
ICA Int College, Brantford - Ms Zara Hamid
L1 Waterloo M 02:30 PM - 03:50 PM BA113 Dr. Masoomeh Rudafshani
L2 Waterloo T 10:00 AM - 11:20 AM BA113 Dr. Masoomeh Rudafshani
L3 Waterloo W 04:00 PM - 05:20 PM BA113 Ms Xuyang Ma
L4 Waterloo R 01:00 PM - 02:20 PM BA113 Dr. Heider Ali
L5 Waterloo F 12:00 PM - 01:20 PM BA113 Dr. Masoomeh Rudafshani
MC1 Milton TR 10:00 AM - 11:20 AM MAC128 Dr. Saiqa Aleem
ML1 Milton T 02:00 PM - 04:20 PM MAC117 Mr. David Brown
OC2 Online Learning - Mr. David Brown

CP212: Windows Application Programming

This course is designed for students who have a basic understanding of spreadsheets, word processors, and databases as well as introductory programming experience. The course introduces methods to automate repetitive tasks and create user-friendly applications in spreadsheets, word processors, and databases using the powerful macro language, Visual Basic for Applications (VBA). Topics include: a review of programming constructs such as data types, looping, conditional statements, and arrays; the design of graphical interfaces with the typical "look and feel" of Windows software; the design of dialog boxes with controls and eventhandling code that responds to user input; automating tasks; consolidating data; providing userfriendly reports.

3 lecture hours, 1 lab hour
Credit: 0.50
Prerequisite: CP102 and previous programming experience, or CP104

Section Campus Days Times Room Instructor
B Waterloo TR 10:00 AM - 11:20 AM LH1010 Dr. Heider Ali
L1 Waterloo M 11:30 AM - 12:20 PM BA113 Dr. Heider Ali
L2 Waterloo M 12:30 PM - 01:20 PM BA113 Dr. Heider Ali
L3 Waterloo M 08:30 AM - 09:20 AM BA113 Dr. Heider Ali

CP213: Introduction to Object-Oriented Programming

Fundamentals of object-oriented programming, classes, subclasses, inheritance, references, overloading, event-driven and concurrent programming, using modern application programming interface. The language Java will be used.

3 lecture hours, 1 lab hours
Credit: 0.50
Prerequisite: CP164 (or CP114)

Section Campus Days Times Room Instructor
C Waterloo MW 05:30 PM - 06:50 PM 1E1 Ms Zara Hamid
L1 Waterloo T 02:30 PM - 03:50 PM BA113 Dr. Heider Ali
L2 Waterloo W 10:00 AM - 11:20 AM BA113 Dr. Heider Ali
OC2 Online Learning - Dr. Zia Ud Din

CP214: Discrete Structures for Computer Science

Finite and discrete algebraic structures relating to computers: sets, functions, relations. Machine-oriented logic. Topics include: propositional and predicate calculus, Boolean algebra, combinatorial counting (including Pigeonhole principle, permutations and combinations), recurrence equations, applications of recurrence equations in sorting algorithms, relations (including equivalence relations, partial orders), algorithms to generate permutations and combinations, induction and recursive programs, correctness proofs for both recursive and iterative program constructions, countable and uncountable sets, Cantor’s theorem, introduction to graph theory and graph algorithms.

3 lecture/discussion hours
Credit: 0.50
Prerequisite: CP164

Section Campus Days Times Room Instructor
C Waterloo TR 11:30 AM - 12:50 PM BA201 Dr. Zia Ud Din
OC2 Online Learning - Dr. Zia Ud Din

CP216: Introduction to Microprocessors

A comprehensive study of a current commercial microprocessor, its architecture and assembly language. Emphasis on (1) the relationship between architecture, assembly language and system operation, and (2) the relationship between assembly language, high level languages and operating systems.

3 lecture hours, 1 lab hour
Credit: 0.50
Prerequisite: CP220/PC220 (or CP120/PC120) and CP164 (or CP114)

Section Campus Days Times Room Instructor
1A Brantford W 02:30 PM - 03:20 PM
B Waterloo TR 02:30 PM - 03:50 PM LH1001 Mr. Bernard Chiu
L1 Waterloo M 04:00 PM - 05:20 PM BA113 Dr. Masoomeh Rudafshani
L2 Waterloo M 05:30 PM - 06:50 PM BA113 Dr. Masoomeh Rudafshani
L3 Waterloo T 04:00 PM - 05:20 PM BA113 Mr. Shaun Gao
L4 Waterloo T 05:30 PM - 06:50 PM BA113 Mr. Shaun Gao

CP220: Digital Electronics

Introduction to digital logic: logic gates, combinational circuit analysis using Boolean algebra and Karnaugh maps, number systems and codes, minimization techniques applied to combinational logic systems; flip-flops, multivibrators, counters and shift registers.

3 lecture hours
Credit: 0.50
Prerequisite: Registration status: Year 2
Exclusion: CP120/PC120
Cross-Listed: PC220

Section Campus Days Times Room Instructor
C Waterloo MW 04:00 PM - 05:20 PM BA110 Dr. Maher Ahmed
L1 Waterloo R 10:00 AM - 11:20 AM N2083 Mr. Shaun Gao
L2 Waterloo R 11:30 AM - 12:50 PM N2083 Mr. Shaun Gao
L3 Waterloo T 10:00 AM - 11:20 AM N2083 Mr. Shaun Gao
L4 Waterloo T 11:30 AM - 12:50 PM N2083 Mr. Shaun Gao

CP221: Analog Electronics I

DC and AC circuit theory, complex impedance, resonance, Norton and Thevenin Theorems, semiconductor diodes, bipolar transistors, the use of transistors for the construction of logic gates.

3 lecture hours, 2 lab hours
Credit: 0.50
Prerequisite: CP220/PC220 (recommended PC212)

Section Campus Days Times Room Instructor
A Waterloo MWF 12:30 PM - 01:20 PM BA431 Dr. Maher Ahmed
L1 Waterloo F 02:30 PM - 04:20 PM N2083 Mr. Terry Sturtevant

CP264: Data Structures II

A continuation of the study of data structures and their applications using C. Linked lists, binary search trees, balanced search trees. Hashing, collision-avoidance strategies. A continuation of basic algorithm analysis.

3 lecture hours, 1 lab hour
Credit: 0.50
Prerequisite: CP164
Exclusion: CP114

Section Campus Days Times Room Instructor
B Waterloo MWF 08:30 AM - 09:20 AM 1E1 Dr. Hongbing Fan
C Waterloo MWF 10:30 AM - 11:20 AM N1001 Dr. Hongbing Fan
L1 Waterloo W 11:30 AM - 12:50 PM BA113 Dr. Masoomeh Rudafshani
L2 Waterloo W 01:00 PM - 02:20 PM BA113 Dr. Masoomeh Rudafshani
L3 Waterloo R 02:30 PM - 03:50 PM BA113 Mr. David Brown
L4 Waterloo R 04:00 PM - 05:20 PM BA113 Mr. David Brown
OC2 Online Learning - Ms. Nakhat Fatima

CP312: Algorithm Design and Analysis I

Analysis of the best, average, and worse case behaviors of algorithms. Algorithmic strategies: brute force algorithms, greedy algorithms, divide-and-conquer, branch and bound, backtracking. Fundamental computing algorithms: O (n log n) sorting, hash table, binary trees, depth- and breadth-first search of graphs.

3 lecture hours
Credit: 0.50
Prerequisite: CP264 (or CP114 and CP213) and MA238

Section Campus Days Times Room Instructor
C Waterloo MWF 11:30 AM - 12:20 PM N1002 Dr. Evgueni Zima
OC2 Online Learning - Mr. Yichen Zhang

CP315: Introduction to Scientific Computation

An introduction to scientific computation, with substantial use of scientific software, such as Maple and Matlab. Scientific problems and models from different disciplines are considered. Numerical methods introduced in this course include interpolation, curve fitting, solving (systems of) linear and nonlinear equations, eigenvalue problems, integration and solving ordinary and partial differential equations.

3 lecture hours
Credit: 0.50
Prerequisite: CP104, MA110* (or MA103), MA122, MA205
Exclusion: CP225/PC225
Cross-Listed: as PC315

Section Campus Days Times Room Instructor
A Waterloo MW 05:30 PM - 06:50 PM BA208 Dr. Ilias Kotsireas

CP317: Software Engineering

Discussion of software development activities, including software process models, analysis, design, implementation, testing, project management and advanced topics. Both traditional and object-oriented methods are considered.

3 lecture hours
Credit: 0.50
Prerequisite: CP213, CP217 or CP264
Exclusion: CP417

Section Campus Days Times Room Instructor
C Waterloo MW 04:00 PM - 05:20 PM N1002 Mr. Bernard Chiu
D Waterloo MW 05:30 PM - 06:50 PM 2-106 Mr. Shaun Gao

CP320: Physical Computing: Digital Interaction with the Analog World

Design and construction of computational systems that interact with the physical world for applications such as home or experiment automation. Basics of electrical circuits, reading from analog and digital sensors, controlling analog and digital actuators, single board computers such as Arduino or Raspberry PI, analog components including diodes, transistors and operational amplifiers.

3 lecture hours
Credit: 0.50
Prerequisite: CP164 (or CP114), CP220/PC220 (or CP120/PC120)
Exclusion: CP300°/PC300°
Cross-Listed: PC320

Section Campus Days Times Room Instructor
B Waterloo MWF 11:30 AM - 12:20 PM N1057 Mr. Terry Sturtevant
L1 Waterloo TR 11:30 AM - 12:50 PM N2082 Mr. Terry Sturtevant
L2 Waterloo TR 01:00 PM - 02:20 PM N2082 Mr. Terry Sturtevant

CP321: Data Visualization

This course will provide participants an overview on how to visualize data to present large data sets in a meaningful way. Rigorous policy analysis must be based on evidence, but once you have gathered the evidence, it can be overwhelming to figure out how to present data in a meaningful way. This course offers instruction how to distill and interpret large amounts of information to highlight the key information. Learn to unlock the power of data through effective data visualization. Explains how to select the appropriate data sets for analysis, transform the data sets into usable formats, and verify that the sets are error-free. Review how to choose the right model for the specific type of analysis project, how to analyze the model, and present the results for decision making. Show how to solve numerous business problems by applying various tools and techniques. Data visualization and visual data mining tools, and real-world success stories using visual data mining.

3 lecture hours
Credit: 0.50
Prerequisite: CP213

Section Campus Days Times Room Instructor
A Waterloo MWF 10:30 AM - 11:20 AM BA101 Mr. Muhammad Malik
B Waterloo MWF 08:30 AM - 09:20 AM N1002 Mr. Muhammad Malik

CP322: Machine Learning

With the rise of data science and big data fields, machine learning has gained further recognition as the key driver behind the successful advance of these fields. However, many recent entrants to the field can only utilize the variety of machine learning algorithms as black boxes. This course aims to empower students to effectively use and understand the primary approaches so as to be able to modify them for specific uses. Our focus is less on theory and more on practice. Students engage in hands-on implementation of some of the fundamental algorithms such as predictive modeling and clustering applied to real, open-ended problems.

3 lecture hours
Credit: 0.50
Prerequisite: CP312

Section Campus Days Times Room Instructor
C Waterloo TR 08:30 AM - 09:50 AM SB106 Ms. Azam Asilian Bidgoli
D Waterloo TR 04:00 PM - 05:20 PM BA111 Ms. Azam Asilian Bidgoli

CP351: Quantum Computing

Quantum computing offers the possibility of dramatic advances in computational power compared to the best computers we have today. In addition, novel quantum protocols such as teleportation and quantum cryptography have already been demonstrated. This course provides an introduction to this exciting and cutting-edge field. Topics include an overview of quantum theory, quantum algorithms, teleportation, secure quantum communication, Shor's factoring algorithm, Grover's search protocol, quantum error correction and the latest state-of-the-art experiments. No prior knowledge of quantum mechanics is required.

3 lecture/discussion hours
Credit: 0.50
Prerequisite: MA122 and registration status: Year 3 or Year 4, majoring in physics, computer science, mathematics or chemistry
Cross-Listed: PC351

Section Campus Days Times Room Instructor
A Waterloo TR 01:00 PM - 02:20 PM 2-106 Dr. Shohini Ghose

CP363: Database I

Introduction to database systems. Topics include data models, query languages, database design, recovery and concurrency, integrity and security.

3 lecture hours
Credit: 0.50
Prerequisite: CP164 (or CP114)

Section Campus Days Times Room Instructor
C Waterloo MWF 09:30 AM - 10:20 AM BA101 Mr. Haytham Qushtom
D Waterloo MWF 12:30 PM - 01:20 PM N1002 Mr. Haytham Qushtom

CP367: Introduction to System Programming

Contemporary ideas and techniques in system programming using the C language. Introduction to the Unix operating system and Unix commands. Directories and files, device control, signal handling, process intercommunication, shell programming in Unix. Using and implementing software tools: filters, pipelines, sorts, text patterns and others.

3 lecture hours, 1 lab hour
Credit: 0.50
Prerequisite: CP264
Exclusion: CP217

Section Campus Days Times Room Instructor
A Waterloo MWF 09:30 AM - 10:20 AM BA111 Mr. or Ms. Akshay Chadha
L1 Waterloo M 01:30 PM - 02:20 PM BA113 Dr. Masoomeh Rudafshani
L2 Waterloo F 11:00 AM - 11:50 AM BA113 Mr. Shaun Gao

CP372: Computer Networks

Introduction to computer communication networks. The OSI reference model. Protocols for error and flow control. Medium access protocols. Routing and congestion control. Internet architecture and protocols. Unix network programming.

3 lecture hours
Credit: 0.50
Prerequisite: CP213, CP386

Section Campus Days Times Room Instructor
C Waterloo MWF 10:30 AM - 11:20 AM LH1009 Dr. Masoomeh Rudafshani
D Waterloo MWF 08:30 AM - 09:20 AM BA111 Ms. Lilatul Ferdouse

CP373: Ethics and Professional Practice in Computer Science

Introduction to ethics, computer reliability and safety, privacy, computer crime, intellectual property, impact of computers on work and society. Assessment includes written assignments and oral presentations.

3 lecture hours
Credit: 0.50
Prerequisite: Registration in Year 3 or Year 4 BA or BSc in Computing or Physics
Exclusion: CP400L

Section Campus Days Times Room Instructor
A Waterloo MW 01:00 PM - 02:20 PM LH1009
B Waterloo TR 11:30 AM - 12:50 PM 2-106 Ms. Nakhat Fatima

CP386: Operating Systems

Topics include operating system services, file systems, CPU scheduling, memory management, virtual memory, disk scheduling, deadlocks, concurrent processes, protection and distributed systems.

3 lecture hours
Credit: 0.50
Prerequisite: CP216, CP217 or CP264
Exclusion: CP466

Section Campus Days Times Room Instructor
C Waterloo MW 02:30 PM - 03:50 PM LH1011 Mr. Sukhjit Sehra

CP395K:


Section Campus Days Times Room Instructor
A Waterloo - Mr. Terry Sturtevant

CP395L:


Section Campus Days Times Room Instructor
A Waterloo - Mr. Terry Sturtevant

CP400S: Computer Security

A detailed examination of a field or topic of interest not covered by the regular program.

3 lecture hours
Credit: 0.50
Prerequisite: Permission of the department.

Section Campus Days Times Room Instructor
A Waterloo MW 04:00 PM - 05:20 PM N1057 Mr. Shaun Gao
L1 Waterloo T 08:00 PM - 08:50 PM BA113 Mr. Shaun Gao

CP400U:


Section Campus Days Times Room Instructor
A Waterloo MW 02:30 PM - 03:50 PM BA210 Dr. Alexei Kaltchenko

CP412: Algorithm Design and Analysis II

A continuation of the study of computer algorithms. Amortized analysis, on-line and off-line algorithms, randomized algorithms, dynamic programming.

3 lecture hours
Credit: 0.50
Prerequisite: CP312, MA238

Section Campus Days Times Room Instructor
A Waterloo TR 08:30 AM - 09:50 AM N1057 Mr. Yasser Ebrahim

CP414: Foundations of Computing

Deterministic and nondeterministic finite automata (DFAs and NFAs), regular expressions, context-free grammars, relationship of push-down automata and context-free grammars, definintion of the classes P and NP, NP-completeness (Cook's Theorem), standard NP-complete problems, reduction techniques, Turing machines, the halting problem.

3 lecture hours
Credit: 0.50
Prerequisite: CP312, MA238

Section Campus Days Times Room Instructor
B Waterloo MW 02:30 PM - 03:50 PM SB106 Ms. Lilatul Ferdouse
C Waterloo MWF 09:30 AM - 10:20 AM LH1009 Dr. Evgueni Zima

CP421: Data Mining

The course is aimed at an entry level study of information retrieval and data mining techniques. It is about how to find relevant information and subsequently extract meaningful patterns out of it. While the basic theories and mathematical models of information retrieval and data mining are covered, the course is primarily focused on practical algorithms of textual document indexing, relevance ranking, web usage mining, text analytics, as well as their performance evaluations. At the end of the course student are expected to understand the following: 1. The common algorithms and techniques for information retrieval (document indexing and retrieval, query processing, etc). 2. The quantitative evaluation methods for the IR systems and data mining techniques. 3. The popular probabilistic retrieval methods and ranking principles. 4. The techniques and algorithms existing in practical retrieval and data mining systems such as those in web search engines and recommender systems. 5. The challenges and existing techniques for the emerging topics of MapReduce, portfolio retrieval and online advertising.

3 lecture hours
Credit: 0.50
Prerequisite: CP312, CP317

Section Campus Days Times Room Instructor
B Waterloo MW 10:00 AM - 11:20 AM 2-106 Dr. Yang Liu

CP423: Text Retrieval and Search Engines

Recent years have seen a dramatic growth of natural language text data, including web pages, news articles, scientific literature, emails, enterprise documents, and social media such as blog articles, forum posts, product reviews, and tweets. Text data are unique in that they are usually generated directly by humans rather than a computer system or sensors, and are thus especially valuable for discovering knowledge about people’s opinions and preferences, in addition to many other kinds of knowledge that we encode in text. This course will cover search engine technologies, which play an important role in any data mining applications involving text data for two reasons. First, while the raw data may be large for any particular problem, it is often a relatively small subset of the data that are relevant, and a search engine is an essential tool for quickly discovering a small subset of relevant text data in a large text collection. Second, search engines are needed to help analysts interpret any patterns discovered in the data by allowing them to examine the relevant original text data to make sense of any discovered pattern. You will learn the basic concepts, principles, and the major techniques in text retrieval, which is the underlying science of search engines.

3 lecture hours
Credit: 0.50
Prerequisite: CP317
Corequisite: CP476

Section Campus Days Times Room Instructor
A Waterloo TR 02:30 PM - 03:50 PM BA111 Mr. Emad Mohammed

CP431: Parallel Programming

Parallel computers, or supercomputers or high-performance clusters are ubiquitous today in Science and Engineering. Parallel programming requires inventing new algorithms and programming techniques. This course will cover the fundamental paradigms of parallel programming, with an emphasis on problem solving and actual applications. The parallel programming concepts and algorithms will be illustrated via implementations in OpenMP and MPI (Message Passing Interface), as well as serial farming.

3 lecture hours
Credit: 0.50

Section Campus Days Times Room Instructor
A Waterloo MW 11:30 AM - 12:50 PM BA112 Dr. Ilias Kotsireas

CP465: Database II

This course covers advanced database management system design principles and techniques. Possible topics include access methods, query processing and optimization, transaction processing, distributed databases, deductive databases, object-relational databases, data warehousing, data mining, Web and semistructured data, search engines, etc.

3 lecture hours
Credit: 0.50
Prerequisite: CP363
Exclusion: CP400H

Section Campus Days Times Room Instructor
B Waterloo TR 08:30 AM - 09:50 AM BA202 Mr. Emad Mohammed

CP468: Artificial Intelligence

Examination of current concepts and techniques in artificial intelligence and machine learning. Topics include knowledge representation, automated reasoning, machine learning and knowledge-based systems. Extensive use of case studies and current applications.

3 lecture hours
Credit: 0.50
Prerequisite: CP213

Section Campus Days Times Room Instructor
B Waterloo MW 05:30 PM - 06:50 PM N1002 Mr. Ahmed Ibrahim
C Waterloo TR 08:30 AM - 09:50 AM 2-106 Mr. Ahmed Ibrahim

CP471: Introduction to Compiling

Principles and design techniques for compilers. Compiler organization, compiler writing tools, scanning, parsing, semantic analysis, run-time storage organization, memory management, code generation and optimization. Students implement a substantial portion of a compiler in a project.

3 lecture hours
Credit: 0.50
Prerequisite: CP213 or CP264, CP216

Section Campus Days Times Room Instructor
A Waterloo TR 02:30 PM - 03:50 PM SB105 Ms. Nakhat Fatima

CP472: Programming Languages

Overview of programming languages, virtual machines, history of programming languages, programming language semantics, programming language design, introduction to language translation, declarations and types, abstraction mechanism, functional programming, logic programming, object-oriented programming.

3 lecture hours
Credit: 0.50
Prerequisite: CP213, CP217 or CP264
Exclusion: CP400J

Section Campus Days Times Room Instructor
A Waterloo TR 11:30 AM - 12:50 PM LH1010 Mr. or Ms. Abdullah Sawas

CP476: Internet Computing

The architecture of the Internet. Client-server programming, technologies of the web (URLs, HTML, HTTP, applets, etc.) Introduction to building web applications and server-side programming.

3 lecture hours
Credit: 0.50
Prerequisite: CP363, CP372

Section Campus Days Times Room Instructor
A Waterloo MWF 09:30 AM - 10:20 AM N1002 Mr. Shaun Gao

CP493: Directed Research Project I

An in-depth investigation of a computer science subject under faculty supervision, including the submission of a final report. Irregular course.

3 lecture hours
Credit: 0.50
Prerequisite: Registration status: Year 4 Honours Computing and Computer Electronics, or Computer Science, and permission of the department

Section Campus Days Times Room Instructor
B Waterloo -

CP494: Directed Research Project II

An in-depth investigation of a computer science subject under faculty supervision, including the submission of a formal report. Irregular course.

3 lecture hours
Credit: 0.50
Prerequisite: CP493 and permission of the Department.

Section Campus Days Times Room Instructor
B Waterloo -

CP600: Practical Algorithm Design

The techniques of algorithm design form one of the core practical technologies of computer science. This course focuses on advanced techniques for designing and analysing algorithms, and explores their use in a variety of application areas. Topics include: sorting and search algorithms, graph traversal algorithms, combinatorial search, heuristics methods, and dynamic programming, intractable problems. Students learn the skill of recognizing computational complexities of computing problems and designing solutions for them.

3 lecture hours
Credit: 0.50

Section Campus Days Times Room Instructor
OC2 Online Learning -

CP601: Seminar in Technology Entrepreneurship

This seminar focuses on the fundamentals of technology entrepreneurship. It involves taking a technology idea and finding a high-potential commercial opportunity, gathering resources such as talent and capital, figuring out how to sell and market the idea, and managing rapid growth. It also involves bringing incorporating a new technology idea into an existing business. There will be guest lecturers from the industry.

3 lecture hours
Credit: 0.50

Section Campus Days Times Room Instructor
A Waterloo M 07:00 PM - 09:50 PM N1057 Ms. Christina Sookram
BR1 Brantford MW 11:30 AM - 12:50 PM OD110 Ms. Kathryn Thomas
BR2 Brantford MW 01:00 PM - 02:20 PM OD110 Ms. Kathryn Thomas
OC1 Online Learning - Ms. Christina Sookram

CP612:


Section Campus Days Times Room Instructor
BR1 Brantford MW 02:30 PM - 03:50 PM OD110 Mr. Kaiyu Li
BR2 Brantford MW 04:00 PM - 05:20 PM OD110 Mr. Kaiyu Li

CP614: Applied Cryptography

Algorithms and issues in applied cryptography. Topics include block ciphers, stream ciphers, public-key cryptography, AES, elliptic curve cryptosystems, blockchain, digital signatures, zero knowledge proofs. Also, current issues in information security such as privacy enhancing technologies and post quantum cryptography.


Credit: 0.50
Exclusion: CP682B, CP460

Section Campus Days Times Room Instructor
OC1 Online Learning - Dr. Angèle Foley

CP630: Enterprise Computing

Enterprise computing offers integrated solutions to organizations that need help managing a variety of problems including software development, resource management and data analytics. This course extends traditional Computer Science education through a practical skills-based application focused on enterprise computing which integrates IT management and application development. Students examine the principles, techniques and practices in modern enterprise computing with a focus on backend business logic computing and the technical foundation of data analysis. Students will learn to manage all aspects of enterprise computing solutions including security, user experience, optimization, and distributed databases. Practical knowledge is further developed through lab work, case studies and guest-lectures of IT managers.

3 lecture hours
Credit: 0.50

Section Campus Days Times Room Instructor
A Waterloo MW 02:30 PM - 03:50 PM BA112 Dr. Hongbing Fan

CP631: Parallel Programming

Parallel computers, or supercomputers or high-performance clusters are ubiquitous today in science and engineering. Parallel programming requires inventing new algorithms and programming techniques. This course covers the paradigms of parallel programming, with an emphasis on problem solving and actual applications. The parallel programming concepts and algorithms are illustrated via implementations in OpenMP and MPI (Message Passing Interface), as well as serial farming.

3 lecture hours
Credit: 0.50
Exclusion: CP431

Section Campus Days Times Room Instructor
A Waterloo TR 05:30 PM - 06:50 PM N1057 Dr. Pawel Pomorski

CP640: Machine Learning

Machine learning is the science of getting computers to act without being explicitly programmed. In the past decade, machine learning has given us self-driving cars, practical speech recognition, effective web search, and a vastly improved understanding of the human genome. This course focuses on machine learning, data mining, and statistical pattern recognition. Topics include supervised learning (parametric/non-parametric algorithms, support vector machines, kernels, neural networks) and unsupervised learning (clustering, dimensionality reduction, recommender systems, deep learning). Students work with variety of learning algorithms and evaluate which are most likely to be successful.

3 lecture hours
Credit: 0.50

Section Campus Days Times Room Instructor
A Waterloo MW 04:00 PM - 05:20 PM 2C16 Dr. Yang Liu
BR3 Brantford TR 01:00 PM - 02:20 PM OD110 Mr. Yasser Ebrahim

CP650: User Interface Design and Implementation

The user interface, also called UI or user experience, is the “front end” of a website, computer application, or software program that people interact with. Competitive advantage can be won or lost depending on the design of the user interface. To be effective, modern software application designs must support not only the required functionality but also fully engage users. Throughout this course, students apply proven user interface design practices to gather requirements, reduce user input errors, and provide intuitive navigation pathways through complex applications to ensure usability.

3 lecture hours
Credit: 0.50

Section Campus Days Times Room Instructor
BR1 Brantford MW 08:30 AM - 09:50 AM OD110 Mr. Usama Mir
BR2 Brantford MW 10:00 AM - 11:20 AM OD110 Mr. Usama Mir

CP680: Capstone Project

This course is available only to students in the Co-Operative Education Option and will be completed in the term following their co-op terms. Students will complete a major project that integrates their academic and work experience.

3 lecture hours
Credit: 1.00

Section Campus Days Times Room Instructor
A Waterloo MW 04:00 PM - 05:20 PM 1C17 Mr. or Ms. ANK Zaman

CP683:


Section Campus Days Times Room Instructor
C Waterloo TR 04:00 PM - 05:20 PM BA211 Mr. or Ms. ANK Zaman

CP699: Master's Thesis

Students will complete a thesis based on original research and defend it before an examining committee.

3 lecture hours
Credit: 2.00

Section Campus Days Times Room Instructor
A Waterloo -

PC132: Thermodynamics and Waves

Calculus-based course, which introduces basic principles of physics. Detailed topics covered: elasticity, fluids, waves and sound, physcomperature and heat, the laws of thermodynamics, entropy, and an introduction to electricity.

Lecture/Discussion: 3, Lab: 2 (biweekly)
Credit: 0.50
Prerequisite: PC131, MA110* (co-requisite) or MA103 or MA105.
Exclusion: PC100*, PC110*, PC142

Section Campus Days Times Room Instructor
A Waterloo TR 01:00 PM - 02:20 PM BA202 Mr. Salim Al-Ajeel
L1 Waterloo M 02:30 PM - 04:20 PM N2090 Mr. Terry Sturtevant
L2 Waterloo M 04:30 PM - 06:20 PM N2090 Mr. Terry Sturtevant
L3 Waterloo T 02:30 PM - 04:20 PM N2090 Mr. Terry Sturtevant
L4 Waterloo T 04:30 PM - 06:20 PM N2090 Mr. Terry Sturtevant
T1 Waterloo F 08:30 AM - 09:20 AM BA429 Dr. Hasan Shodiev
T2 Waterloo F 09:30 AM - 10:20 AM BA429 Mr. Terry Sturtevant

PC141: Mechanics for the Life Sciences

Algebra-based course, which introduces basic principles of physics. Detailed topics covered: kinematics, motion in two dimensions, force, work and energy, linear momentum and collisions, circular motion and gravitation, rotational motion and equilibrium.

Lecture/Discussion: 3, Lab: 2 (biweekly)
Credit: 0.50
Prerequisite: One of OAC or Grade 12U Biology, Chemistry, or Physics
Exclusion: PC100*, PC110*, PC131, PC151, PC161, SC100

Section Campus Days Times Room Instructor
B Waterloo MWF 08:30 AM - 09:20 AM BA112 Dr. Li Wei
L1 Waterloo T 09:30 AM - 11:20 AM N2089 Dr. Hasan Shodiev
L2 Waterloo W 04:30 PM - 06:20 PM N2089 Dr. Hasan Shodiev
L3 Waterloo R 01:30 PM - 03:20 PM N2089 Dr. Hasan Shodiev
T1 Waterloo F 09:30 AM - 10:20 AM BA307 Dr. Hasan Shodiev
T2 Waterloo F 10:30 AM - 11:20 AM BA307 Dr. Hasan Shodiev

PC142: Thermodynamics and Waves for the Life Sciences

Algebra-based course, which introduces basic principles of physics. Detailed topics covered: solids and fluids, physcomperature, heat, thermodynamics, vibrations and waves, sound.

Lecture/Discussion: 3, Lab: 2 (biweekly)
Credit: 0.50
Prerequisite: PC141 or PC131
Exclusion: PC100*, PC110*, PC132

Section Campus Days Times Room Instructor
A Waterloo TR 01:00 PM - 02:20 PM BA102 Dr. Alexei Kaltchenko
L1 Waterloo M 02:30 PM - 04:20 PM N2089 Dr. Hasan Shodiev
L2 Waterloo M 04:30 PM - 06:20 PM N2089 Dr. Hasan Shodiev
L3 Waterloo T 02:30 PM - 04:20 PM N2089 Dr. Hasan Shodiev
L4 Waterloo T 04:30 PM - 06:20 PM N2089 Dr. Hasan Shodiev
L5 Waterloo W 02:30 PM - 04:20 PM N2089 Dr. Hasan Shodiev
L6 Waterloo W 06:30 PM - 08:20 PM N2089 Dr. Hasan Shodiev
L7 Waterloo T 06:30 PM - 08:20 PM N2089 Dr. Hasan Shodiev
L8 Waterloo R 04:30 PM - 06:20 PM N2089 Dr. Hasan Shodiev
T1 Waterloo F 10:30 AM - 11:20 AM BA211 Mr. Terry Sturtevant
T2 Waterloo F 11:30 AM - 12:20 PM BA211 Dr. Hasan Shodiev
T3 Waterloo F 12:30 PM - 01:20 PM BA211 Dr. Hasan Shodiev
T4 Waterloo F 01:30 PM - 02:20 PM BA211 Dr. Hasan Shodiev

PC152: Thermodynamics & Waves

Identical to PC132 but without the labs.

3 lecture/discussion hours
Credit: 0.50
Prerequisite: PC151 or PC131
Exclusion: PC132, PC142, PC162, BSc degree programs, physics minor

Section Campus Days Times Room Instructor
A Waterloo TR 01:00 PM - 02:20 PM BA202 Mr. Salim Al-Ajeel
T1 Waterloo F 08:30 AM - 09:20 AM BA429
T2 Waterloo F 09:30 AM - 10:20 AM BA429

PC161: Mechanics for Life Sciences

Identical to PC141 but without the labs.

3 lecture hours
Credit: 0.50
Prerequisite: One of OAC or Grade 12U in Biology, Chemistry, or Physics
Exclusion: PC131, PC141, PC151, BSc degree programs, physics minor

Section Campus Days Times Room Instructor
B Waterloo MWF 08:30 AM - 09:20 AM BA112 Dr. Li Wei
T1 Waterloo F 09:30 AM - 10:20 AM BA307
T2 Waterloo F 10:30 AM - 11:20 AM BA307

PC162: Thermodynamics & Waves

Identical to PC142 but without the labs.

3 lecture/discussion hours
Credit: 0.50
Prerequisite: PC161 (or PC131 or PC141 or PC151)
Exclusion: PC132, PC142, PC152, BSc degree programs, physics minor

Section Campus Days Times Room Instructor
A Waterloo TR 01:00 PM - 02:20 PM BA102 Dr. Alexei Kaltchenko
T1 Waterloo F 10:30 AM - 11:20 AM BA211
T2 Waterloo F 11:30 AM - 12:20 PM BA211
T3 Waterloo F 12:30 PM - 01:20 PM BA211
T4 Waterloo F 01:30 PM - 02:20 PM BA211

PC220: Digital Electronics

Introduction to digital logic: logic gates, combinational circuit analysis using Boolean algebra and Karnaugh maps, number systems and codes, minimization techniques applied to combinational logic systems; flip-flops, multivibrators, counters and shift registers.

3 lecture hours
Credit: 0.50
Prerequisite: Registration status: Year 2
Exclusion: CP120/PC120
Cross-Listed: CP220

Section Campus Days Times Room Instructor
C Waterloo MW 04:00 PM - 05:20 PM BA110 Dr. Maher Ahmed
L1 Waterloo R 10:00 AM - 11:20 AM N2083 Mr. Shaun Gao
L2 Waterloo R 11:30 AM - 12:50 PM N2083 Mr. Shaun Gao
L3 Waterloo T 10:00 AM - 11:20 AM N2083 Mr. Shaun Gao
L4 Waterloo T 11:30 AM - 12:50 PM N2083 Mr. Shaun Gao

PC221: Analog Electronics I

AC circuit theory, complex impedance, resonance, Norton and Thvenin Theorems, semiconductor diodes, bipolar transistors, bias circuits, h-parameters, amplification, feedback.

3 lecture hours, 2 lab hours
Credit: 0.50
Prerequisite: CP220/PC220 (or CP200/PC200 or CP120/PC120), PC212

Section Campus Days Times Room Instructor
A Waterloo MWF 12:30 PM - 01:20 PM BA431 Dr. Maher Ahmed

PC235: Classical Mechanics

This is an intermediate level course in classical mechanics. The major topics covered are Newtonian dynamics, dynamics of particles, non-inertial frames of reference, Lagrangian and Hamiltonian dynamics, oscillations, rigid body motion.

3 lecture hours
Credit: 0.50
Prerequisite: PC131, MA201, MA205.

Section Campus Days Times Room Instructor
A Waterloo MW 10:00 AM - 11:20 AM N1057 Dr. Marek Wartak

PC237: Optics

Nature of light: Huygen's principle, Fermat's principle. Geometrical optics: reflection and refraction at plane and curved surfaces, lenses and lens systems. Wave optics: interference, diffraction, polarization.

3 lecture hours, 2 lab hours
Credit: 0.50
Prerequisite: PC131, PC132 (or PC141, PC142) and one of MA110* or MA103 or MA105.

Section Campus Days Times Room Instructor
A Waterloo MW 01:00 PM - 02:20 PM N1059 Dr. Li Wei
L1 Waterloo R 09:30 AM - 11:20 AM N2088 Mr. Terry Sturtevant
L2 Waterloo R 03:30 PM - 05:20 PM N2088 Mr. Terry Sturtevant

PC242: Modern Physics

Failure of classical physics and early quantum theory, blackbody radiation and Planck's theory, the photoelectric effect and light quanta, wave particle duality, Compton scattering, De Broglie and matter waves, Davisson and Germer experiment, energy quantization, Bohr's theory of hydrogen, topics in atomic theory and the periodic table, X-ray spectra, molecules, phenomenological courseDesc of solids, Fermi statistics, conduction, semiconductors, energy bands. Nuclear physics, radioactivity, and modern particle physics, accelerators. Relativity.

3 lecture hours
Credit: 0.50
Prerequisite: PC131, PC132, (or PC141, PC142), MA205.

Section Campus Days Times Room Instructor
A Waterloo MW 11:30 AM - 12:50 PM BA308 Dr. Marek Wartak

PC275W:


Section Campus Days Times Room Instructor
*0 University of Waterloo -

PC315: Introduction to Scientific Computation

An introduction to scientific computation, with substantial use of scientific software, such as Maple and Matlab. Scientific problems and models from different disciplines are considered. Numerical methods introduced in this course include interpolation, curve fitting, solving (systems of) linear and nonlinear equations, eigenvalue problems, integration and solving ordinary and partial differential equations.

3 lecture hours
Credit: 0.50
Prerequisite: CP104, MA110* (or MA103), MA122, MA205
Exclusion: CP225/PC225
Cross-Listed: as CP315

Section Campus Days Times Room Instructor
A Waterloo MW 05:30 PM - 06:50 PM BA208 Dr. Ilias Kotsireas

PC320: Physical Computing: Digital Interaction with the Analog World

Design and construction of computational systems that interact with the physical world for applications such as home or experiment automation. Basics of electrical circuits, reading from analog and digital sensors, controlling analog and digital actuators, single board computers such as Arduino or Raspberry PI, analog components including diodes, transistors and operational amplifiers.

3 lecture hours
Credit: 0.50
Prerequisite: CP164 (or CP114), CP220/PC220 (or CP120/PC120)
Exclusion: CP300°/PC300°
Cross-Listed: CP320

Section Campus Days Times Room Instructor
B Waterloo MWF 11:30 AM - 12:20 PM N1057 Mr. Terry Sturtevant
L1 Waterloo TR 11:30 AM - 12:50 PM N2082 Mr. Terry Sturtevant
L2 Waterloo TR 01:00 PM - 02:20 PM N2082 Mr. Terry Sturtevant

PC335W:


Section Campus Days Times Room Instructor
*0 University of Waterloo -

PC351: Quantum Computing

Quantum computing offers the possibility of dramatic advances in computational power compared to the best computers we have today. In addition, novel quantum protocols such as teleportation and quantum cryptography have already been demonstrated. This course provides an introduction to this exciting and cutting-edge field. Topics include an overview of quantum theory, quantum algorithms, teleportation, secure quantum communication, Shor's factoring algorithm, Grover's search protocol, quantum error correction and the latest state-of-the-art experiments. No prior knowledge of quantum mechanics is required.

3 lecture/discussion hours
Credit: 0.50
Prerequisite: MA122 and registration status: Year 3 or Year 4, majoring in physics, computer science, mathematics or chemistry
Cross-Listed: CP351

Section Campus Days Times Room Instructor
A Waterloo TR 01:00 PM - 02:20 PM 2-106 Dr. Shohini Ghose

PC400C:


Section Campus Days Times Room Instructor
A Waterloo MW 02:30 PM - 03:50 PM BA210 Dr. Alexei Kaltchenko

PC467W:


Section Campus Days Times Room Instructor
*0 University of Waterloo -

PC490W:


Section Campus Days Times Room Instructor
*0 University of Waterloo -

PC491: Directed Research Project I

An in-depth investigation of a topic under faculty supervision, including the submission of a formal report.

3 lecture hours
Credit: 0.50
Prerequisite: Registration status: Year 4 Honours Computing and Computer Electronics, Honours Physics or Honours Photonics and permission of the department.

Section Campus Days Times Room Instructor
B Waterloo -

PC492: Directed Research Project II

An in-depth investigation of a topic under faculty supervision, including the submission of a formal report.

3 lecture hours
Credit: 0.50
Prerequisite: PC491 and permission of the Department

Section Campus Days Times Room Instructor
A Waterloo -

Spring 2025