Office of the Registrar
Faculty of Science (2019/2020)
12.4 Computer Science

Computer Science courses are designated by COMP.

12.4.1 First Year Courses

1000

Computer Science – An Introduction

takes a breadth-first overview approach to the discussion of important aspects of computer science including fundamentals in algorithms, binary data representation, Boolean logic, systems software, networking concepts, introductory programming, databases, and selected Computer Science subfields.

CR: the former COMP 2742, Engineering 4424, Mathematics 2320. Students cannot receive credit for COMP 1002 if completed with, or subsequent to, Mathematics 2320.

LH: 3

1001

Introduction to Programming

is an introduction to fundamental programming techniques, primitive data types, and to simple algorithms and their design concepts.

CR: the former COMP 1710

LH: 3

1002

Introduction to Logic for Computer Scientists

introduces methods of reasoning and logic tools that underlie computer science. In particular, this course covers propositional and predicate logic, sets and other discrete structures, as well as modular arithmetic and basic counting, with emphasis on their applications in computer science.

CR: the former COMP 2742, Engineering 4424, Mathematics 2320. Students cannot receive credit for COMP 1002 if completed with, or subsequent to, Mathematics 2320.

LH: 3

1003

Foundations of Computing Systems

provides an in-depth introduction to foundational topics in computer science: algorithms and data structures, theory of computing, machine architecture and their historical context.

CO: COMP 1002 or Mathematics 2320

LH: 3

PR: COMP 1001

1400

Computing in the 20th Century and Beyond

will give an overview of the development of computing technologies over the last 75 years as well as both the perception of these technologies by, and their impact on, society. The course will be organized chronologically by decade, and within each decade will examine the dominant computing developments, their image in various print and pictorial media, and their social impact. The aim is to give students of all disciplines an appreciation of the abilities and limitations of computer technology and how such technologies interact with society.

1401

Computing at the Movies

will both examine and counter common misconceptions about computing and the computing profession. This will be done by contrasting depictions of various aspects of computing in various movies and documentaries produced over the last 60 years with the reality of these aspects as given in selected readings and course lecture notes.

1510

An Introduction to Programming for Scientific Computing

introduces students to basic programming in the context of numerical methods with the goal of providing the foundation necessary to handle larger scientific programming projects. Numerical methods to solve selected problems from Physics, Chemistry, and Mathematics will be covered.

CR: the former COMP 2602 and the former Mathematics 2120

LH: 2

PR: Mathematics 1000

1600

Basic Computing and Information Technology

offers an overview of information technology. It provides students with an understanding of basic concepts and necessary skills required to use spreadsheet, database and presentation software to manage, analyze, and present data.

CR: the former Business 2700, the former COMP 2650 and the former COMP 2801

LH: 3

AR = Attendance requirement; CH = Credit hours are 3 unless otherwise noted; CO = Co-requisite(s); CR = Credit can be retained for only one course from the set(s) consisting of the course being described and the course(s) listed; LC = Lecture hours per week are 3 unless otherwise noted; LH = Laboratory hours per week; OR = Other requirements of the course such as tutorials, practical sessions, or seminars; PR = Prerequisite(s); UL = Usage limitation(s).
12.4.2 Second Year Courses

2000

Collaborative and Emergent Behaviour

is a survey of computation as a means of understanding, modelling, and describing artificial and natural systems. The emergence of complex behaviour from the interaction of simple rules governing individual components is illustrated and discussed, as well as the role of communication between system components. Selected systems to be studied will be drawn from different topic areas which may include the worldwide web, the mind (cognitive science), formal logic, autonomous robotics, chaos and fractals, and bioinformatics. Each topic will incorporate an associated laboratory experience.

LH: 3 hours bi-weekly

2001

Object-Oriented Programming and Human-Computer Interaction

advances from Introduction to Programming and studies object-oriented programming. Additional topics include event-driven programming, program correctness and simple refactoring, as well as interfaces and human-computer interaction. A brief overview of programming languages is also provided.

CR: the former COMP 2710

LH: 3

PR: COMP 1001, COMP 1003, and Mathematics 1000

2002

Data Structures and Algorithms

covers fundamental data structures, algorithms and algorithm design techniques. A problem-driven course, it focuses on computational problem solving from designing an efficient algorithm to implementing it using appropriate data structures.

CR: the former COMP 2711

LH: 3

PR: COMP 1001, COMP 1002 or Mathematics 2320, and COMP 1003

2003

Computer Architecture

introduces computer architecture at the digital logic implementation level, at the instruction set level, and at the level where programming languages are translated into the underlying machine instructions.

CR: the former COMP 3724

LH: 3

PR: COMP 1001, COMP 1002 or Mathematics 2320, and COMP 1003

2004

Introduction to Operating Systems

introduces fundamental techniques for interfacing between computer software and hardware platforms, including the composition of, and connections within, a multilevel operating system. Students learn how to design substantial parts of an operating system.

CR: the former COMP 3725

PR: COMP 2002, COMP 2003

2005

Software Engineering

introduces students to the different software process models, to project management and the software requirements engineering process, as well as to systems analysis and design as a problem-solving activity.

CR: the former COMP 3716

PR: COMP 2001

2006

Computer Networking

introduces students to the use of programming interfaces for computer networking and to understand how the Internet works on the level of protocols. It focuses on the most commonly used of those protocols that are in the vast majority of modern computer systems.

CH: 1

CO: COMP 2004

CR: the former COMP 3715

PR: COMP 2001, COMP 2002

2007

Introduction to Information Management

introduces the basic knowledge needed for managing large volumes of data. It covers topics in information management and database systems from storage and retrieval to security and privacy of data.

CH: 1

CO: COMP 2004

CR: the former COMP 3754

PR: COMP 2002

2008

Social Issues and Professional Practice

covers ethical and social considerations of computing to provide students with the basis to address these issues by ethical and technical actions. Case studies are used to illustrate ethical and social issues of computing.

CH: 1

CR: the former COMP 2760

PR: COMP 1003

2100

Social Web Analysis

covers the analysis of social network structures, the flow of data within them and the methods to extract useful information about these networks, their participants and the content of their communication. Security and trust issues are also covered.

PR: COMP 1003

2300

Introduction to Multimedia Programming

is an introduction to programming and computer science with an emphasis on the development of multimedia applications. The course introduces the fundamental principles of programming, including object-oriented and event-driven programming. Students will develop an understanding of how to use and create classes and methods and combine them with multimedia libraries to produce animations, handle input from keyboard and mouse, and import sounds and videos to produce multimedia applications which can be directly deployed on the Internet.

CR: the former COMP 1550

LH: 3

PR: COMP 1003

2500

Data Analysis with Scripting Languages

introduces the use of scripting languages to solve common data analysis tasks. The control structures and expressions of the language are first discussed. Script solution to storing/retrieving data sets, searching data sets, and performing numeric and statistical calculation are covered. Plotting and visualization for data sets are also presented.

PR: COMP 1510 or the former COMP 1700 or the former COMP 1710 or COMP 1000 or COMP 1001 (or equivalent)

2510

Programming in C/C++

is a comprehensive treatment of the C/C++ programming languages. It is intended for students with some first programming experience. This course starts with a discussion of fundamentals of C and C++, moves on to the object-oriented aspects of C++, and introduces some advanced topics. It is an essential course for mastering the power of this rich programming language.

CR: Engineering 3891

LH: 3

PR: COMP 1510 or the former COMP 1550 or the former COMP 1700 or the former COMP 1710 or COMP 1000 or COMP 1001 or Engineering 1020 (or equivalent)

2718

Development Tools, Work Flows and Concepts

covers tools, work flows and concepts used in software development in a concentrated introductory set of topics. The essential work flows (with their underlying concepts) used to edit, build, test, combine with existing software and find existing software are introduced. The tools covered include text editors, programming language translators, file management tools, debuggers, scripting tools, source control tools, and building, testing and deployment tools. The architecture and use of an Integrated Development Environment are discussed.

LH: 3

PR: COMP 2001 or COMP 2500 or COMP 2510 or the former COMP 2710

AR = Attendance requirement; CH = Credit hours are 3 unless otherwise noted; CO = Co-requisite(s); CR = Credit can be retained for only one course from the set(s) consisting of the course being described and the course(s) listed; LC = Lecture hours per week are 3 unless otherwise noted; LH = Laboratory hours per week; OR = Other requirements of the course such as tutorials, practical sessions, or seminars; PR = Prerequisite(s); UL = Usage limitation(s).
12.4.3 Third Year Courses

3100

Web Programming

studies the Web information system from a programming perspective. It teaches how Web data are transferred across the network, how to design interactive browser contents, and how to provide dynamic pages from the server.

CR: the former COMP 3715

PR: COMP 2006

3200

Algorithmic Techniques for Smart Systems

covers basic algorithmic techniques and data structures that are used to embed basic intelligent behaviors, such as problem solving, reasoning and learning in software systems and agents.

CR: the former COMP 4753

PR: COMP 2001 or the former COMP 2710, COMP 2002 or the former COMP 2711, and Statistics 1510 or Statistics 2550

3201

Introduction to Nature-Inspired Computing

provides an overview of popular nature-inspired computing methods. Methods that are inspired by both biological and non-biological systems are considered. These methods have been applied to solve problems in various areas of computing such as optimization, machine learning, and robotics. Particular examples of nature-inspired computing methods studied include cellular automata, neural networks, evolutionary computing, swarm intelligence, artificial life, and complex networks. Contributions made in the field of nature-inspired computing that have led to advances in the natural sciences are also discussed.

CR: the former COMP 4752

PR: COMP 2002 or the former COMP 2711

3202

Introduction to Machine Learning

introduces concepts and algorithms in machine learning for regression and classification tasks. The course gives the student the basic ideas and intuition behind model selection and evaluation, and selected machine learning methods such as random forests, support vector machines, and hidden Markov models.

PR: COMP 3200; or COMP 2001 or the former COMP 2710, COMP 2002 or the former COMP 2711, and Statistics 2550; and Mathematics 2050

3300

Interactive Technologies

provides exposure to traditional desktop, mobile and games contexts with respect to interaction design theory and practice. The impact of context on design principles is explored. An introduction to each programming context will be provided and a minimal set of software development tools for each context will be introduced. Practical application of interaction design principles will involve design and prototyping of desktop, mobile and games applications.

PR: COMP 2001 or the former COMP 2710

3301

Visual Computing and Applications

provides students with the fundamental knowledge and skills in the fields of computer vision, computer graphics, and visualization. Visual perception is responsible for most of our impressions about the world around us. This course introduces how computers are used to both mimic the human visual system (e.g., recognize shapes) and to create visual content (e.g. synthesize images). Related techniques on image synthesis, processing and analysis are discussed under a unified framework. How visual computing principles were used to create visual effects in movies and commercials is also examined.

PR: COMP 2002 or the former COMP 2711, Mathematics 2000, and Mathematics 2050

3401

Introduction to Data Mining

introduces students to the basic concepts and techniques for data mining and knowledge discovery. Students will develop an understanding of the essential data mining technologies, and be able to design and evaluate methods for simple data mining applications.

PR: COMP 2002 or the former COMP 2711, COMP 2007 or the former COMP 3754, and Statistics 2550

3550

Introduction to Bioinformatics

(same as Biology 3951) deals with the development and application of computational methods to address biological problems. The course will focus on the fundamental concepts, ideas and related biological applications of existing bioinformatics tools. This course will provide hands-on experience in applying bioinformatics software tools and online databases to analyze experimental biological data, and it will also introduce scripting language tools typically used to automate some biological data analysis tasks.

CR: Biology 3951

LH: 3

PR: Biology 2060 or Biochemistry 2201 or the former 2101, and 3 credit hours in Computer Science courses at the 1000-level or above excluding COMP 1400, COMP 1401, COMP 1600 and COMP 2000; or COMP 2500 or the former COMP 2710 or COMP 2001, and 3 credit hours in Biology courses at the 1000-level or above excluding Biology 2040 and Biology 2041; or permission of the course instructor

3700

Industrial Experience

is a course for students who are admitted to CICS. Students are required to register for this non-credit course every semester during their internship. This course is open only to students who have been accepted into the Internship Program and provides an opportunity for qualified students to obtain rewarding job experience of 8, 12 or 16 months of continuous duration, during the course of their studies.

CH: 0

PR: admission to the Co-operative Internship in Computer Science (CICS)

3710

Vocational Languages

is a study of several programming languages of vocational significance. The use of appropriate programming paradigms to solve some significant problems will be illustrated.

PR: COMP 2002 or the former COMP 2711

3718

Programming in the Small

demonstrates the tools and techniques used in the construction of small software systems. The software tools and techniques to be covered include analysis and design of software components, software construction tools (e.g. linkers, builders, debuggers), software library use and design, and system integration.

PR: COMP 2002 or the former COMP 2711

3719

Theory of Computation and Algorithms

is an introduction to formal algorithmic problem solving. Various algorithm design techniques that sometimes yield efficient solutions are studied. Deterministic and nondeterministic machines (finite state automata, pushdown automata and Turing machines) are discussed and used to efficiently solve problems such as the String Matching Problem, the parsing of Context-free Languages, and to introduce the theory of NP-completeness. In addition, Turing machines are used to prove the unsolvability of certain problems. Tractable, intractable and undecidable problems are contrasted. Basic issues related to parallelization are discussed as well.

CR: the former COMP 3711 and the former COMP 3740

PR: COMP 2002 or the former COMP 2711; and Mathematics 2320 or COMP 1002

3731

Introduction to Scientific Computing

main objectives are the development of algorithms for the numerical solution of mathematical problems and the study of the numerical stability of these algorithms. The efficiency of these algorithms with respect to speed and storage requirements is considered as well. Emphasis is also placed on the study of the sensitivity of selected problems to perturbations in the data. There is also a brief introduction to the development of numerical algorithms that take advantage of advanced computer architectures, such as pipeline processors, array processors and parallel processors.

CR: Mathematics 3132

PR: COMP 1001 or the former COMP 2710, Mathematics 2000, Mathematics 2050

3753

Computational Aspects of Linear Programming

is an introduction to the Linear Programming Problem (LPP). The emphasis is placed upon developing the most recent and numerically reliable algorithms for the solution of the Linear Programming Problem. The numerical stability of these algorithms will be examined as well. Geometric understanding of the LPP. Simplex method for the LPP. Sparse matrix LPP. Duality and postoptimality analysis. Extensions to the simplex algorithm. Principles of interior algorithms for the LPP.

PR: COMP 1001 or the former COMP 2710, Mathematics 2050

AR = Attendance requirement; CH = Credit hours are 3 unless otherwise noted; CO = Co-requisite(s); CR = Credit can be retained for only one course from the set(s) consisting of the course being described and the course(s) listed; LC = Lecture hours per week are 3 unless otherwise noted; LH = Laboratory hours per week; OR = Other requirements of the course such as tutorials, practical sessions, or seminars; PR = Prerequisite(s); UL = Usage limitation(s).
12.4.4 Fourth Year Courses

4300

Introduction to Game Programming

is an introductory course for students interested in learning the fundamentals of game programming. Topics include vector math for games, fundamentals of rendering, introduction to animation and artificial intelligence, collision detection, game physics and user-interfaces. Students are required to write a fully functional game during the course.

PR: COMP 2001 or the former COMP 2710, Mathematics 2050, and 6 credit hours in Computer Science courses at the 3000 level or above (COMP 3301 and COMP 3731 are recommended)

4301

Computer Vision

(same as Engineering 8814) studies how to develop methods that enable a machine to “understand” or analyze images. The course introduces the fundamental problems in computer vision and the state-of-the-art approaches that address them. Topics include feature detection and matching, geometric and multi-view vision, structure from X, segmentation, object tracking and visual recognition.

CR: Engineering 8814

LH: six 3-hour sessions per semester

PR: COMP 3301 or Engineering 7854 or permission of the instructor

4302

3D Computer Graphics

introduces the students to the state-of-the-art concepts and developments in the field of 3D computer graphics. The underlying algorithms, as well as the basic techniques to develop interactive 3D graphics systems including games and simulators, are presented. Topics of the course include 3D geometrical transformations, 3D projections, 3D modeling and rendering, 3D graphics languages and systems. Advanced photorealistic rendering and image-based rendering techniques may also be covered.

CR: the former COMP 4751

PR: COMP 3301

4303

Artificial Intelligence in Computer Games

provides an introduction to specific state-of-the-art algorithmic techniques and data structures that are used to efficiently implement human-like abilities (e.g., awareness, memory, rational decision-making (under uncertainty), movement, co-operation in groups) in computer game agents.

PR: COMP 3200

4304

Data Visualization

covers interactive representation of data using a modern programming library. Topics include an introduction to the software platform and the principles for data selection, analysis, design and creation of dynamic visualizations. Students produce interactive web-based objects, addressing problems in the presentation and understanding of large data collections. The techniques discussed are applicable to different sources and types of data.

CR: the former COMP 4767

PR: COMP 2001 or the former COMP 2710, COMP 2002 or the former COMP 2711

4550

Bioinformatics: Biological Data Analysis

(same as Biology 4606) provides students with the basis to analyse a variety of biological data within an integrated programming environment for data manipulation, calculation and graphical display. Students will learn to extract meaningful information from data generated by high-throughput experimentation. The course will introduce one such integrated programming environment and will explore the computational and statistical foundations of the most commonly used biological data analysis procedures.

CR: Biology 4606

LH: 3

PR: Biology 3951 or COMP 3550, and Statistics 2550 (or equivalent), or permission of the course instructor

4711

Structure of Programming Languages

covers programming language design considerations; syntactic and semantic structure; survey of typical features and operations; analysis of facilities for control and data structuring; language extensibility; execution models; formal specification of programming languages.

PR: COMP 3719, COMP 2003 or the former COMP 3724

4712

Compiler Construction

studies properties of formal grammars and languages; syntax-directed parsing and code generation; top-down and bottom-up parsing methods; LL(k) and LR(k) grammars and parsers; Code optimization; compiler writing tools.

PR: COMP 3719, COMP 2003 or the former COMP 3724

4715 and 4717

Special Topics in Programming Languages

will have topics to be studied announced by the Department.

4718

Survey of Software Engineering

surveys the major topics of software engineering. Areas covered include: requirements capture, system design and design approaches, verification and validation (including formal methods and testing), and management of the software development process.

PR: COMP 2005 or the former COMP 3716

4721

Operating Systems

studies the design and implementation of an operating system’s kernel. The main components used in operating system implementations include: context switches, process management, memory management, interprocess communication, file systems and system calls. The data structures and algorithms used in implementing the above components are studied. The different architectural styles of kernel implementation are also considered. Real-time operating systems are also discussed.

CR: Engineering 8894

PR: COMP 2004 or the former COMP 3725

4723

Introduction to Microprocessors

examines the architecture and instruction sets for several microprocessors. The use of microprocessors as device controllers; comparisons of hardware and programmed techniques; microprocessor interfacing with external devices; methods of I/O; bus structures; modern microprocessor support devices are discussed.

LH: Minimum of three hours per week. Practical experience with basic principles will be obtained through laboratory experience.

PR: COMP 2003 or the former COMP 3724

4726-4729

Special Topics in Computer Systems

will have topics to be studied announced by the Department.

4734

Matrix Computations and Applications

is an introduction to linear algebra; solution to linear systems; scaling, improving and estimating accuracy; the linear least squares problem; the eigenvalue problem; singular value decomposition of a matrix; the generalized eigenvalue problem.

PR: COMP 3731

4736-4739

Special Topics in Numerical Computations

will have topics to be studied announced by the Department.

4740

Design and Analysis of Algorithms

will give an overview of techniques for the design of efficient optimal-solution and heuristic algorithms. It will include an introduction to various advanced data structures for set and string processing that are used to further optimize algorithm efficiency.

PR: COMP 3719

4741

Formal Languages and Computability

is an in-depth study of various types of formal machines and their associated languages. Effective computability and other formalisms, such as lambda calculus will be studied as well.

CR: the former COMP 3740

PR: COMP 3719

4742

Computational Complexity

is an in-depth discussion of computational complexity theory. Topics covered in the course include: models of computation (for both serial and parallel computations); complexity measures; reducibility; complexity classes (NP, PSPACE, NC, LOGSPACE and P); and randomized computations.

PR: COMP 3719

4743

Graph Algorithms and Combinatorial Optimization

discusses classical problems in combinatorial optimization and graph algorithms, including matching, colorability, independent sets, isomorphism, network flows and scheduling. Special families of graphs are discussed and algorithms that would otherwise be NP-hard or complete are shown to be polynomial time when restricted to such families.

PR: COMP 3719

4745-4749

Special Topics in Theoretical Aspects

will have topics to be studied announced by the Department.

4750

Introduction to Natural Language Processing

covers tasks involving human languages, such as speech recognition, text understanding, and keyword-based information retrieval which underlie many modern computing applications and their interfaces. To be truly useful, such natural language processing must be both efficient and robust. This course will give an introduction to the algorithms and data structures used to solve key NLP tasks, including utterance understanding and generation and language acquisition, in both of the major algorithmic paradigms used today (rule-based and statistical). The emphasis will be primarily on text-based processing though speech-based processing will be addressed where possible.

PR: COMP 3719 and Statistics 1510

4754

Database Systems

introduces students to database processing, database management systems and database design considerations. It will cover the theory and methodologies essential for the relational database design, implementation, manipulation, optimization and management.

PR: COMP 2004 or the former COMP 3725, COMP 2007 or the former COMP 3754

4756

Image Processing

will centre on the key analytical and algorithmic tools and concepts of digital image processing. Topics will include Transformations, Enhancement, Encoding, Data Bases, Segmentation and Description.

CR: Engineering 7854

LH: 3

PR: COMP 3719

4759

Computer Networks

looks at how the operation of computer networks requires the following: a) communication between two computers, b) information transfer between two computers not directly connected, and c) services that need computer communication. This course focuses on the standard solutions and services used to fulfill the previous requirements. These include: physical transmission of signals, reliable communication based on unreliable communication channels, the routing of messages between connected computers to reach computers that are not directly connected, e-mail, file transfer, name servers, remote terminal access and the World Wide Web. Particular attention will be placed on the workings of the Internet.

PR: COMP 2006 or the former COMP 3715, and COMP 2004 or the former COMP 3725

4762

Introduction to Computational Molecular Biology

will give an overview of computational problems and algorithms for these problems associated with a variety of analyses of biological molecular data.

PR: COMP 3719

4766

Introduction to Autonomous Robotics

examines the fundamental constraints, technologies, and algorithms of autonomous robotics. The focus of this course will be on computational aspects of autonomous wheeled mobile robots. The following topics will be covered: major paradigms in robotics, methods of locomotion, kinematics, simple control systems, sensor technologies, stereo vision, feature extraction, modelling uncertainty of sensors and positional information, localization, SLAM, obstacle avoidance, and 2-D path planning.

LH: 3

PR: COMP 2002 or the former COMP 2711, Mathematics 2000, Mathematics 2050, and Statistics 1510 or Statistics 2550 or the former Statistics 2510

4768

Software Development for Mobile Devices

focuses on the design and implementation of software in a mobile networking environment. The primary topics to be covered in this course include software engineering, network computing, graphics programming, and human-computer interaction for mobile devices. A modern mobile device with advanced networking and graphic features, including multi-touch interaction and motion sensors will be used as the primary platform for development in this course.

LH: one and one-half hours per week

PR: COMP 2008 or the former COMP 2760, COMP 2006 or the former COMP 3715, and COMP 2005 or the former COMP 3716

4770

Team Project

has as its main objective to develop a working prototype of a software system as a team effort. A group of students will work on a project for a term, experiencing the advantages and difficulties of team projects.

AR: attendance is required

PR: COMP 2003, COMP 2005, COMP 2006, COMP 2007, and 6 credit hours in Computer Science courses at the 3000-level or above; or the former COMP 3715, the former COMP 3716, the former COMP 3724, and the former COMP 3754

4780

Honours Project

introduces computer science honours students to research activities, familiarizes them with a special problem in computer science, and provides independent study on an advanced topic under the direct supervision of a member of the computer science faculty. The topic is decided in consultation with the supervisor. The student is required to produce a written report on the project, to include the literature search on the topic, and to present this work at a departmental seminar prior to the last week of the semester.

PR: admission to the honours program and permission of the Head of Department

4800-4825

Special Topics

will be offered as departmental resources permit.

CO: Special topics courses are not offered on a regular basis, but whenever departmental resources permit. For these reasons, the co-requisites can vary each time the courses are offered.

PR: Special topics courses are not offered on a regular basis, but whenever departmental resources permit. For these reasons, the prerequisites can vary each time the courses are offered.

AR = Attendance requirement; CH = Credit hours are 3 unless otherwise noted; CO = Co-requisite(s); CR = Credit can be retained for only one course from the set(s) consisting of the course being described and the course(s) listed; LC = Lecture hours per week are 3 unless otherwise noted; LH = Laboratory hours per week; OR = Other requirements of the course such as tutorials, practical sessions, or seminars; PR = Prerequisite(s); UL = Usage limitation(s).