CS Courses
CS 100: INTRODUCTION TO COMPUTING THROUGH APPLICATIONS
Using personal computers as effective problem solving tools for the present and the future. Effective use of spreadsheets to process, manipulate, and visualize numeric and textual information. Introduction to the Internet, World Wide Web, HTML, and XML. Algorithms underlying the functional components of web search engines and their influence on data access. Using wikis to publish, reshape, and organize data collaboratively.

Prereq: Not open to Mathematics, Biomedical, Chemical, Civil, Computer & Electrical, Environmental, Geological, Management, Mechanical,Mechatronics, Nanotechnology & Systems Design Eng students.

Antireq: All second,third or fourth year CS courses or equivalents
CS 105: INTRODUCTION TO COMPUTER PROGRAMMING 1
An introduction to the fundamentals of computer programming through media computation. Students will learn to write interactive graphical programs. Fundamental language concepts such as variables, conditionals, loops, functions, and arrays. Programming concepts such as coding style, modular design, testing, and debugging. Media concepts such as 2D graphics drawing, input, animation, and image processing.
 Prereq: Not open to Mathematics students.
 Antireq: BME 121, CS 115, 135, 137, 145, CHE 121, CIVE 121, ECE 150, MTE 121/GENE 121, NE 111, MSE 121, PHYS 236, SYDE 121
CS 106: INTRODUCTION TO COMPUTER PROGRAMMING 2
A continuation of the introduction to computer programming begun in CS105. The use of programming, in conjunction with libraries, as a means of solving practical problems in art, design, and data processing. Basic text processing, manipulation of images and sound, handling and visualization of tabular and hierarchical data. Introductions to user interfaces, physical simulation, and objectoriented programming.
 Prereq: CS 105; Not open to Mathematics students.
 Antireq: BME 121, CS 115, 135, 137, 145, CHE 121, CIVE 121, ECE 150, MTE 121/GENE 121, NE 111, MSE 121, SYDE 121
CS 114: PRINCIPLES OF COMPUTING FOR SCIENCE
Introduction to basic imperative programming principles; programming concepts including functions, flow control, lists, arrays; numerical accuracy and efficiency; data analysis and generalpurpose algorithms. Introduction to objectoriented programming concepts.
 Prereq: Not open to Faculty of Math students.
 Antireq: CS 116, 135, 136, 137, 138, 145, 146, BME 121, CHE 120, CIVE 121, ECE 150, GENE 121/MTE 121, ME 101, MSE 121, NE 111, PHYS 236, SYDE 121
CS 115: INTRODUCTION TO COMPUTER SCIENCE 1
An introduction to the fundamentals of computer science through the application of elementary programming patterns in the functional style of programming. Function definition and application. Tracing via substitution. Design, testing, and documentation. Recursive data definitions. Lists and trees. Functional and data abstraction.
 Antireq: BME 121, CS 135, 137, 138, 145, CHE 121, CIVE 121, ECE 150, GENE 121/MTE 121, ME 101, NE 111, MSE 121, PHYS 139, SYDE 121
CS 116: INTRODUCTION TO COMPUTER SCIENCE 2
This course builds on the techniques and patterns learned in CS115 while making the transition to use of an imperative language. Generative and structural recursion. Mutation (assignment) and its role in an imperative language. Primitive types and basic I/O. Sequencing, selection, looping. Function definition and use. File and console I/O. Issues in computer science.
 Prereq: CS 115 or 135 or 145.
 Antireq: CS 114, 136, 137, 138, 146, PHYS 236, 239, MSE 240, NE 111
CS 135: DESIGNING FUNCTIONAL PROGRAMS
An introduction to the fundamentals of computer science through the application of elementary programming patterns in the functional style of programming. Syntax and semantics of a functional programming language. Tracing via substitution. Design, testing, and documentation. Linear and nonlinear data structures. Recursive data definitions. Abstraction and encapsulation. Generative and structural recursion. Historical context.
 Antireq: AE 121, BME 121, CS 115, 137, 138, 145, CIVE 121, ECE 150, ME 101, MSE 121, PHYS 236, SYDE 121
CS 136: ELEMENTARY ALGORITHM DESIGN AND DATA ABSTRACTION
This course builds on the techniques and patterns learned in CS135 while making the transition to use an imperative language. It introduces the design and analysis of algorithms, the management of information, and the programming mechanisms and methodologies required in implementations. Topics discussed include iterative and recursive sorting algorithms; lists, stacks, queues, trees, and their application; abstract data types and their implementations.
 Prereq: One of CS 145, at least 90% in CS 115, at least 70% in CS 116, at least 60% in CS 135. Coreq: CS 136L.
 Antireq: CS 137, 138, 146, PHYS 239
CS 137: PROGRAMMING PRINCIPLES
Review of fundamental programming concepts and their application. Procedures and parameter passing. Arrays and structures. Recursion. Sorting. Pointers and simple dynamic structures. Space and time analysis of designs. Design methodologies.
 Prereq: Software Engineering students only
CS 138: INTRODUCTION TO DATA ABSTRACTION AND IMPLEMENTATION
Software abstractions via elementary data structures and their implementation; encapsulation and modularity; class and interface definitions; object instantiation; recursion; elementary abstract data types, including sequences, stacks, queues, and trees; implementation using linked structures and arrays; vectors and strings; memory models; automatic vs. dynamic memory management.
 Prereq: CS 137
CS 145: DESIGNING FUNCTIONAL PROGRAMS (ADVANCED LEVEL)
CS145 is an advancedlevel version of CS135.
 Antireq: CS 115, 135, 137, 138
CS 146: ELEMENTARY ALGORITHM DESIGN AND DATA ABSTRACTION (ADVANCED LEVEL)
CS146 is an advancedlevel version of CS136.
 Prereq: CS 145 with a grade of at least 75%.
 Coreq: CS 136L.
 Antireq: CS 116, 136, 137, 138.
CS 200: CONCEPTS FOR ADVANCED COMPUTER USAGE
Important concepts underlying major personal computer application categories; methodologies for learning and evaluating software; operating system and hardware design from the user’s point of view, with implications for maintaining a personal computer. Students are encouraged to use their own personal computer for assignments. Social media and the effect of technology on society are explored throughout the course.
 Prereq: Not open to Honours Computer Science, Honours Data Science (BCS, BMath), BCFM, BSE students
CS 230: INTRODUCTION TO COMPUTERS AND COMPUTER SYSTEMS
Basic computer architecture, organization, system services, and software. Typology of processors, memory, I/O devices, and their performance.
 Prereq: One of CS 116, 136, 138, 146 or (CS 114 with at least 60%; CS 115 or CS 135); Not open to Honours Computer Science, Honours Data Science (BCS, BMATH), BCFM, BSE students.
 Antireq: BME 292/393, CS 241/241E, 251/251E, SYDE 192
CS 231: ALGORITHMIC PROBLEM SOLVING
The study of the steps required to solve realworld problems on a computer, including problem specification, choice of algorithmic paradigm, analysis, and implementation. Topics include exhaustive search, divide and conquer, greedy, and dynamic programming approaches.
 Prereq: One of CS 116, 136, 138, 146 or (CS 114 with at least 60%; CS 115 or CS 135); Not open to Honours Computer Science, Data Science (BCS, BMath), BCFM, BSE students.
 Antireq: BME 122, CS 341, ECE 250, MSE 240, MTE 140, SYDE 223
CS 234: DATA TYPES AND STRUCTURES
Topdown design of data structures. Using representationindependent data types. Introduction to commonly used data types, including lists, sets, mappings, and trees. Selection of data representation.
 Prereq: One of CS 116, 136, 138, 146 or (CS 114 with at least 60%; CS 115 or CS 135). Not open to Honours Computer Science, Data Science (BCS, BMath), BCFM, BSE students.
 Antireq: BME 122, CS 240/240E, ECE 250, MSE 240, MTE 140, SYDE 223
CS 240: DATA STRUCTURES AND DATA MANAGEMENT
Introduction to widely used and effective methods of data organization, focusing on data structures, their algorithms, and the performance of these algorithms. Specific topics include priority queues, sorting, dictionaries, data structures for text processing.
 Prereq: (CS 245/245E or SE 212), (one of CS 241/241E, 246/246E, 247), (one of STAT 206, 230, 240); Honours Computer Science, Honours Data Science (BCS, BMath), BCFM, BSE students only.
 Antireq: BME 122, CS 234, CS 240E, ECE 250, MTE 140, SYDE 223
CS 241: FOUNDATIONS OF SEQUENTIAL PROGRAMS
The relationship between highlevel languages and the computer architecture that underlies their implementation, including basic machine architecture, assemblers, specification and translation of programming languages, linkers and loaders, blockstructured languages, parameter passing mechanisms, and comparison of programming languages.
 Prereq: CS 138 or (CS 246/246E and CS 136L) or (CS 136L and a grade of 85% or higher in one of CS 136 or 146); Honours Computer Science, Honours Data Science (BCS, BMath), BCFM, BSE students only.
 Antireq: CS 230, CS 241E, ECE 351
CS 245: LOGIC AND COMPUTATION
Logic as a tool for representation, reasoning, and computation. Propositional and predicate logic. Formalizing the notions of correct and incorrect reasoning, defining what is computable, and exploring the limits of computation. Godel’s Incompleteness Theorem. Applications of logic to computer science.
 Prereq: (One of CS 136, 138, 146), (MATH 135 or MATH 145); Honours Mathematics students only.
 Antireq: CS 245E, PMATH 330, ECE 208, SE 212
CS 246: OBJECTORIENTED SOFTWARE DEVELOPMENT
Introduction to objectoriented programming and to tools and techniques for software development. Designing, coding, debugging, testing, and documenting mediumsized programs: reading specifications and designing software to implement them; selecting appropriate data structures and control structures; writing reusable code; reusing existing code; basic performance issues; debuggers; test suites.
 Prereq: (CS 146 and CS 136L) or (a grade of 60% or higher in CS 138) or (CS 136L and a grade of 60% or higher in CS 136); Honours Mathematics students only.
 Antireq: CS 246E, CS 247, MSE 342, SYDE 322
CS 247: SOFTWARE ENGINEERING PRINCIPLES
Systematic methods for designing, coding, testing, and documenting mediumsized programs. Major topics include abstraction, modularity, software modelling, objectoriented programming and design, generic programming, testing and debugging.
 Prereq: CS 241/CS 241E; Software Engineering students only. Antireq: CS 246/246E, MSE 342, SYDE 322
CS 251: COMPUTER ORGANIZATION AND DESIGN
Overview of computer organization and performance. Basics of digital logic design. Combinational and sequential elements. Data representation and manipulation. Basics of processor design. Pipelining. Memory hierarchies. Multiprocessors.
 Prereq: One of CS 136, 138, 146; Honours Computer Science, Honours Data Science (BCS, BMath), BCFM, BSE students only.
 Antireq: BME 292/393, CS 251E, ECE 222, ME 262, MTE 262, SYDE 192
CS 330: MANAGEMENT INFORMATION SYSTEMS
An introduction to information systems and their strategic role in business. Topics include types of information systems, organizational requirements, systems development strategies, decision support systems, data and information management, and information systems management, control, and implementation.
 Prereq: One of CS 106, 116, 136, 138, 146, or (CS 114 with at least 60% and (one of CS 115, CS 135, CS 145); Level at least 2B; Not open to Computer Science students.
 Antireq: AFM 241, BUS 415W, 486W, CS 480/490, MSCI 441
CS 335: COMPUTATIONAL METHODS IN BUSINESS AND FINANCE
An introduction to numerical methods for business and finance. Floatingpoint arithmetic, interpolation. Methods for portfolio optimization and contingentclaims valuation. Solution of nonlinear equations. Monte Carlo methods, lattice methods, simulation of hedging strategies.
 Prereq:(One of CS 116, 136, 138, 146)or(CS 114 with at least 60%; CS 115 or CS 135);One of MATH 106 with at least 70%, MATH 136 or 146;MATH 237 or 247;One of STAT 206, 231, 241;Not open to Computer Science students.
 Antireq:AMATH 242/CS 371,CS 370,MTE 204
CS 338: COMPUTER APPLICATIONS IN BUSINESS: DATABASES
A useroriented approach to the management of large collections of data. Methods used for the storage, selection, and presentation of data. Common database management systems.
 Prereq: One of CS 230, 231, 234, 246/246E, 330; or (AFM 341 and (CS 116 or CS 136 or CS 146));
 Antireq: CS 348, 448, MSCI 346; Not open to Honours Computer Science, Honours Data Science (BCS), BCFM, BSE
CS 341: ALGORITHMS
The study of efficient algorithms and effective algorithm design techniques. Program design with emphasis on pragmatic and mathematical aspects of program efficiency. Topics include divide and conquer algorithms, recurrences, greedy algorithms, dynamic programming, graph search and backtrack, problems without algorithms, NPcompleteness and its implications.
 Prereq: CS 240 or 240E; One of CS 245, 245E, SE 212; MATH 239 or MATH 249; One of STAT 206, STAT 230, STAT 240; Honours Computer Science, Honours Data Science (BCS, BMath), BCFM, BSE students only.
 Antireq: CS 231, ECE 406
CS 343: CONCURRENT AND PARALLEL PROGRAMMING
An introduction to concurrent and parallel programming, with an emphasis on language constructs. Major topics include exceptions, coroutines, atomic operations, critical sections, mutual exclusion, semaphores, highlevel concurrency, deadlock, interprocess communication, process structuring, shared memory, and distributed architectures. Students will learn how to structure, implement, and debug concurrent programs.
 Prereq: CS 350 or SE 350; Honours Computer Science, Honours Data Science (BCS), BCFM, BSE students only
CS 346: APPLICATION DEVELOPMENT
Introduction to fullstack application design and development. Students will work in project teams to design and build complete, working applications and services using standard tools. Topics include bestpractices in design, development, testing, and deployment.
 Prereq: CS 246/246E or CS 247. Honours Computer Science, Honours Data Science (BCS), BCFM, BSE students only
CS 348: INTRODUCTION TO DATABASE MANAGEMENT
The main objective of this course is to introduce students to fundamentals of database technology by studying databases from three viewpoints: those of the database user, the database designer, and the database administrator. It teaches the use of a database management system (DBMS) by treating it as a black box, focusing only on its functionality and its interfaces. Topics include introduction to database systems, relational database systems, database design methodology, SQL and interfaces, database application development, concept of transactions, ODBC, JDBC, database tuning, database administration, and current topics (distributed databases, data warehouses, data mining).
 Prereq: Honours Computer Science, Honours Data Science (BCS, BMath), BCFM, BSE students only. Coreq: CS 240/240E.
 Antireq: CS 338, ECE 356, 456, MSCI 346
CS 349: USER INTERFACES
An introduction to contemporary user interface implementation concepts, including event abstraction, graphical components, layout, feedback, testing, accessibility, and architectures to develop user interfaces. One or more types of interface toolkit paradigms are considered.
 Prereq: CS 241/CS 241E and (one of MATH 115, 136, 146); Honours Computer Science, Honours Data Science (BCS), BCFM, BSE students only
CS 350: OPERATING SYSTEMS
An introduction to the fundamentals of operating system function, design, and implementation. Topics include concurrency, synchronization, processes, threads, scheduling, memory management, file systems, device management, and security.
 Prereq: CS 240/240E, 241/241E, 246/246E, (CS 251/251E or ECE 222); Honours Computer Science, Honours Data Science (BCS), BCFM, BSE students only.
 Antireq: ECE 254, 350, MTE 241, SE 350
CS 360: INTRODUCTION TO THE THEORY OF COMPUTING
Models of computers including finite automata and Turing machines. Basics of formal languages with applications to the syntax of programming languages. Alternate characterizations of language classes. Proving unrecognizability. Unsolvable problems and their relevance to the semantics of programming.
 Prereq: CS 240/240E, 241/CS 241E and (MATH 239 or 249); Honours Computer Science, Honours Data Science (BCS), BCFM, BSE students only.
 Antireq: CS 365
CS 365: MODELS OF COMPUTATION
Finite automata and regular expressions. Pushdown automata and contextfree grammars. Turing machines and undecidability. Time and space complexity. Diagonalization and hierarchies. CS365 covers the material in CS360 at an accelerated pace plus additional topics in computational complexity.
 Prereq: CS 240/240E, 241/CS 241E and (MATH 239 or 249); Honours Computer Science, Honours Data Science (BCS), BCFM, BSE students only.
 Antireq: CS 360
CS 370: NUMERICAL COMPUTATION
Principles and practices of basic numerical computation as a key aspect of scientific computation. Visualization of results. Approximation by splines, fast Fourier transforms, solution of linear and nonlinear equations, differential equations, floating point number systems, error, stability. Presented in the context of specific applications to image processing, analysis of data, scientific modelling.
 Prereq: (One of MATH 118, 119, 128, 138, 148), (one of MATH 106, 114, 115, 136, 146), (one of CS 231, 234, 241/241E, 246/246E).
 Antireq: AMATH 242/CS 371, CHE 121, CIVE 121, CS 335, ECE 204, MTE 204
CS 371: INTRODUCTION TO COMPUTATIONAL MATHEMATICS
A rigorous introduction to the field of computational mathematics. The focus is on the interplay between continuous models and their solution via discrete processes. Topics include pitfalls in computation, solution of linear systems, interpolation, discrete Fourier transforms, and numerical integration. Applications are used as motivation.
 Prereq: (One of CS 116, 136, 138, 146), MATH 235 or 245, 237 or 247.
 Antireq: CS 335, 370, ECE 204, MTE 204
CS 383: COMPUTATIONAL DIGITAL ART STUDIO
An upperlevel studio course to create computational projects that function as art works and aesthetic experiences. Students will work in an interdisciplinary environment to combine computer science principles with fine art technical and conceptual skills.
 Prereq: CS 240/CS 240E; FINE 228 or FINE 247
CS 398: TOPICS IN COMPUTER SCIENCE
See the Course Offerings List for topics available.
 Prereq: CS 240/240E and (CS 246/246E or 247); Honours Computer Science, Honours Data Science (BCS), BCFM, BSE students only
CS 399: READINGS IN COMPUTER SCIENCE
Reading course as announced by the School.
 Prereq: CS 240/240E and (CS 246/246E or 247); Honours Computer Science, Honours Data Science (BCS), BCFM, BSE students only
CS 430: APPLICATIONS SOFTWARE ENGINEERING
An investigation into the role and function of software engineering practice in the construction of computer based systems. Topics include: requirements and specification; documentation techniques; analysis and design; implementation; testing and maintenance; management issues.
 Prereq: CS 330; Level at least 3A; Antireq: CS 446/ECE 452, SE 464; Not open to Honours Computer Science, Honours Data Science (BCS), BCFM, BSE
CS 431: DATAINTENSIVE DISTRIBUTED ANALYTICS
Introduces nonCS major students to infrastructure for dataintensive analytics, with a focus on abstractions, frameworks, and algorithms that allow developers to distribute computation across many machines. Topics include core concepts (partitioning, replication, locality, consistency), computational models (MapReduce, dataflows, stream processing, bulksynchronous parallel), and applications.
 Prereq: (CS 231 or 234 or 341) and (CS 251/251E or 330);
 Antireq: CS 451; Not open to Honours Computer Science, Honours Data Science (BCS), BCFM, BSE
CS 436: NETWORKS AND DISTRIBUTED COMPUTER SYSTEMS
An introduction to networks, protocols, and distributed systems. Layered models, resource management, naming, addressing and routing, reliable communication, security, and higherlevel services.
 Prereq: One of CS 230, 241/241E, 246/246E, 251/251E; Not open to Computer Science students.
 Antireq: CS 454, 456, ECE 428, 454
CS 442: PRINCIPLES OF PROGRAMMING LANGUAGES
An exposure to important concepts and issues in contemporary programming languages. Data types, abstraction, and polymorphism. Program structure. Lambda calculus and functional programming, logic programming, objectoriented programming. Semantics of programming languages. Critical comparison of language features and programming methodologies using examples drawn from a variety of programming languages including Lisp, Prolog, ML, Ada, Smalltalk, Icon, APL, and Lucid. Programming assignments involve the use of some of these languages.
 Prereq: CS 240/240E; Honours Computer Science, Honours Data Science (BCS), BCFM, BSE students only
CS 444: COMPILER CONSTRUCTION
Phases of compilation. Lexical analysis and a review of parsing. Compilercompilers and translator writing systems. LEX and YACC. Scope rules, block structure, and symbol tables. Runtime stack management. Parameter passage mechanisms. Stack storage organization and templates. Heap storage management. Intermediate code. Code generation. Macros.
 Prereq: CS 350 or SE 350; Honours Computer Science, Honours Data Science (BCS), BCFM, BSE students only
CS 445: SOFTWARE REQUIREMENTS SPECIFICATION AND ANALYSIS
Introduces students to the requirements definition phase of software development. Models, notations, and processes for software requirements identification, representation, analysis, and validation. Cost estimation from early documents and specifications.
 Prereq: CS 341 or CS 350; Honours Computer Science, Honours Data Science (BCS), BCFM, BSE students only.
 Antireq: SE 463
CS 446: SOFTWARE DESIGN AND ARCHITECTURES
Introduces students to the design, implementation, and evolution phases of software development. Software design processes, methods, and notation. Implementation of designs. Evolution of designs and implementations. Management of design activities.
 Prereq: CS 350; Honours Computer Science, Honours Data Science (BCS), BCFM, BSE students only.
 Antireq: CS 430, SE 464
CS 447: SOFTWARE TESTING, QUALITY ASSURANCE, AND MAINTENANCE
Introduces students to systematic testing of software systems. Software verification, reviews, metrics, quality assurance, and prediction of software reliability and availability. Related management issues.
 Prereq: CS 350; Honours Computer Science, Honours Data Science (BCS), BCFM, BSE students only.
 Antireq: SE 465
CS 448: DATABASE SYSTEMS IMPLEMENTATION
The objective of this course is to introduce students to fundamentals of building a relational database management system. The course focuses on the database engine core technology by studying topics such as storage management (data layout, diskbased data structures), indexing, query processing algorithms, query optimization, transactional concurrency control, logging and recovery.
 Prereq: CS 348 and (CS 350 or SE 350); Honours Computer Science, Honours Data Science (BCS), BCFM, BSE students only
CS 449: HUMANCOMPUTER INTERACTION
An introduction to the fundamental theories, methods, and research in the design and evaluation of novel computational artifacts designed to meet realworld human needs.
 Prereq: CS 240/240E, 241CS/241E; Level at least 3B; Honours Computer Science, Honours Data Science (BCS), BCFM, BSE students only.
 Antireq: SYDE 348/548
CS 450: COMPUTER ARCHITECTURE
The course is intended to provide the student with an appreciation of modern computer design and its relation to system architecture, compiler technology, and operating system functionality. The course places an emphasis on design based on the measurement of performance and its dependency on parallelism, efficiency, latency, and resource utilization.
 Prereq: (CS 245/245E or SE 212) and (CS 350 or SE 350); Honours Computer Science, Honours Data Science (BCS), BCFM, BSE students only.
 Antireq: ECE 320, ECE 429
CS 451: DATAINTENSIVE DISTRIBUTED COMPUTING
Introduces students to infrastructure for dataintensive computing, with a focus on abstractions, frameworks, and algorithms that allow developers to distribute computations across many machines. Topics include core concepts (partitioning, replication, locality, consistency), computational models (MapReduce, dataflows, stream processing, bulksynchronous parallel), and applications.
 Prereq: CS 341, 348 and (CS 350 or SE 350); Honours Computer Science, Honours Data Science (BCS, BMath), BCFM, BSE students only
CS 452: REALTIME PROGRAMMING
Intended to give students experience with tools and techniques of realtime programming, this course includes not only issues of microcomputer architecture and a realtime programming language and operating system, but also handson experience programming a microcomputer for applications such as process control, data acquisition and communication.
 Prereq: CS 350 or SE 350; Honours Computer Science, Honours Data Science (BCS), BCFM, BSE students only
CS 453: SOFTWARE AND SYSTEMS SECURITY
Introduction to security issues in modern software, operating systems, and other computing platforms (e.g., mobile and cloud environments). Causes of security breaches and methods to help detect, isolate, and prevent them. Specific topics include comparing security and privacy, program security, operating system security, mobile security, hardware security, administrating security, and legal and ethical issues.
 Prereq: CS 350 or SE 350; Honours Computer Science, Honours Data Science (BCS), BCFM, BSE students only
CS 454: DISTRIBUTED SYSTEMS
An introduction to distributed systems, emphasizing the multiple levels of software in such systems. Specific topics include fundamentals of data communications, network architecture and protocols, localarea networks, concurrency control in distributed systems, recovery in distributed systems, and clock synchronization.
 Prereq: CS 350 or SE 350; Honours Computer Science, Honours Data Science (BCS), BCFM, BSE students only.
CS 456: COMPUTER NETWORKS
An introduction to network architectures and protocols, placing emphasis on protocols used in the Internet. Specific topics include application layer protocols, network programming, transport protocols, routing, multicast, data link layer issues, multimedia networking, network security, and network management.
 Prereq: CS 350 or SE 350; Computer Science students only.
 Antireq: CS 436, ECE 358, 428
CS 457: SYSTEM PERFORMANCE EVALUATION
Basic techniques of system performance evaluation. Specific topics include performance modelling, discrete event simulation, verification and validation of simulation models, analysis of simulation output, analysis of single server queue and queueing networks, modelling of computer systems, networks, and other queueing or nonqueueing systems.
 Prereq: (CS 246/246E or 247) and (one of STAT 206, 231, 241); Honours Computer Science, Honours Data Science (BCS), BCFM, BSE students only
CS 459: PRIVACY, CRYPTOGRAPHY, NETWORK AND DATA SECURITY
Introduction to privacy and security using cryptography and related techniques in networks, distributed systems, and data science. The course examines how data and metadata can be protected at rest, in transit, and during computation. For atrest protection, specific topics include the basics of cryptography and relevant ethics/policy concepts. For intransit protection, specific topics include network defenses, authentication, and secure and anonymous communication protocols. For duringcomputation protection, specific topics include data inference, differential privacy, homomorphic encryption, multiparty computations, and related protocols.
 Prereq: MATH 135 or MATH 145; CS 350 or SE 350. Honours Computer Science, Honours Data Science (BCS), BCFM, BSE students only.
 Coreq: CS 454 or CS 456
CS 462: FORMAL LANGUAGES AND PARSING
Languages and their representations. Grammars –Chomsky hierarchy. Regular sets and sequential machines. Contextfree grammars – normal forms, basic properties. Pushdown automata and transducers. Operations on languages. Undecidable problems in language theory. Applications to the design of programming languages and compiler construction.
 Prereq: CS 360 or 365; Honours Computer Science, Honours Data Science (BCS), BCFM, BSE students only
CS 466: ALGORITHM DESIGN AND ANALYSIS
Algorithmic approaches and methods of assessment that reflect a broad spectrum of criteria, including randomized algorithms, amortized analysis, lower bounds, approximation algorithms, and online algorithms. Particular examples will be chosen from different areas of active research and application.
 Prereq: CS 341; Honours Computer Science, Honours Data Science (BCS), BCFM, BSE students only
CS 467: INTRODUCTION TO QUANTUM INFORMATION PROCESSING
Basics of computational complexity; basics of quantum information; quantum phenomena; quantum circuits and universality; relationship between quantum and classical complexity classes; simple quantum algorithms; quantum Fourier transform; Shor factoring algorithm; Grover search algorithm; physical realization of quantum computation; errorcorrection and faulttolerance; quantum key distribution.
 Prereq: MATH 235 or 245 with grade at least 80%; Level at least 3A
CS 475: COMPUTATIONAL LINEAR ALGEBRA
Basic concepts and implementation of numerical linear algebra techniques and their use in solving application problems. Special methods for solving linear systems having special features. Direct methods: symmetric, positive definite, band, general sparse structures, ordering methods. Iterative methods: Jacobi, GaussSeidel, SOR, conjugate gradient. Computing and using orthogonal factorizations of matrices. QR and SVD methods for solving least squares problems. Eigenvalue and singular value decompositions. Computation and uses of these decompositions in practice.
 Prereq: AMATH 242/CS 371 or CS 370.
 Antireq: CS 372, 472
CS 476: NUMERIC COMPUTATION FOR FINANCIAL MODELING
The interaction of financial models, numerical methods, and computing environments. Basic computational aspects of option pricing and hedging. Numerical methods for stochastic differential equations, strong and weak convergence. Generating correlated random numbers. Timestepping methods. Finite difference methods for the BlackScholes equation. Discretization, stability, convergence. Methods for portfolio optimization, effect of data errors on portfolio weights.
 Prereq: (AMATH 242/CS 371 or CS 370) and (STAT 206 with at least 60% or STAT 231 or STAT 241)
CS 479: NEURAL NETWORKS
An introduction to neural network methods, with some discussion of their relevance to neuroscience. Simple neuron models and networks of neurons. Training feedforward networks for classification or regression. Learning using the backpropagation of errors. Unsupervised learning methods. Optimal linear decoding. Recurrent neural networks. Convolutional neural networks. Advanced topics, including adversarial inputs and biologically plausible learning methods.
 Prereq: One of CS 335, CS 370, CS 371/AMATH 242; and STAT 206 with at least 60% or STAT 230 or STAT 240
CS 480: INTRODUCTION TO MACHINE LEARNING
Introduction to modelling and algorithmic techniques for machines to learn concepts from data. Generalization: underfitting, overfitting, crossvalidation. Tasks: classification, regression, clustering. Optimizationbased learning: loss minimization. regularization. Statistical learning: maximum likelihood, Bayesian learning. Algorithms: nearest neighbour, (generalized) linear regression, mixtures of Gaussians, Gaussian processes, kernel methods, support vector machines, deep learning, sequence learning, ensemble techniques. Large scale learning: distributed learning and stream learning. Applications: Natural language processing, computer vision, data mining, human computer interaction, information retrieval.
 Prereq: CS 341 and (STAT 206 or 231 or 241); Computer Science and BMath (Data Science) students only.
CS 482: COMPUTATIONAL TECHNIQUES IN BIOLOGICAL SEQUENCE ANALYSIS
Computer science principles and algorithms in biological sequence analysis. Topics include algorithms for sequence comparison, for largescale database search in biological databases, for sequence assembly, for evolutionary tree reconstruction, for identifying important features in DNA and RNA sequences, and underlying computational techniques for understanding strings and trees and for making probabilistic inferences.
 Prereq: CS 341 and (STAT 206 with at least 70% or STAT 231 with at least 60% or STAT 241)
CS 484: COMPUTATIONAL VISION
Introduction to image and vision understanding by computer. Camerasystem geometry, image formation and lighting, and image acquisition. Basic visual processes for recognition of edges, regions, lines, and surfaces. Processing of stereo images, and motion in image sequences. Object recognition. Applications of computervision systems.
 Prereq: (One of AMATH 242/CS 371, CS 370, MATH 235, MATH 245) and (One of STAT 206, STAT 230 or 240); Honours Computer Science, Honours Data Science (BCS, BMath), BCFM, BSE students only
CS 485: STATISTICAL AND COMPUTATIONAL FOUNDATIONS OF MACHINE LEARNING
Extracting meaningful patterns from random samples of large data sets. Statistical analysis of the resulting problems. Common algorithmic paradigms for such tasks. Central concepts: VCdimension, margins of a classifier, sparsity and description length, other types of regularization. Performance guarantees: generalization bounds, data dependent error bounds, and computational complexity of learning algorithms. Common paradigms: neural networks, kernel methods and supportvector machines, boosting, nearest neighbor classifiers. Applications to data mining.
 Prereq: CS 341 and (STAT 206 or 230 or 240); Honours Computer Science, Honours Data Science (BCS, BMath), BCFM, BSE students only
CS 486: INTRODUCTION TO ARTIFICIAL INTELLIGENCE
Goals and methods of artificial intelligence. Methods of general problem solving. Knowledge representation and reasoning. Planning. Reasoning about uncertainty. Machine learning. Multiagent systems. Natural language processing.
 Prereq: CS 341; Computer Science and BMath (Data Science) students only. Coreq: STAT 206 or 231 or 241.
CS 487: INTRODUCTION TO SYMBOLIC COMPUTATION
An introduction to the use of computers for symbolic mathematical computation, involving traditional mathematical computations such as solving linear equations (exactly), analytic differentiation and integration of functions, and analytic solution of differential equations.
 Prereq: CS 231 or 234 or 240/240E; Honours Mathematics only
CS 488: INTRODUCTION TO COMPUTER GRAPHICS
Software and hardware for interactive computer graphics. Implementation of device drivers, 3D transformations, clipping, perspective, and input routines. Data structures, hidden surface removal, colour shading techniques, and some additional topics will be covered.
 Prereq: CS 341 and (CS 350 or SE 350) and (CS 370 or 371); Honours Computer Science, Honours Data Science (BCS), BCFM, BSE students only
CS 489: ADVANCED TOPICS IN COMPUTER SCIENCE
See the Course Offerings List for topics available.
 Prereq: Level at least 3B; Honours Computer Science, Honours Data Science (BCS), BCFM, BSE students only
CS 490: INFORMATION SYSTEMS MANAGEMENT
The integration of business and technical considerations in the design, implementation and management of information systems. Topics include: IS planning and development; business, management, executive, and strategic information systems, including case studies of selected large scale systems; decision support systems; enduser training and development; systems security, disaster planning and recovery. Practical examples of information systems in industry.
 Prereq: CS 350 or SE 350; Honours Computer Science, Honours Data Science (BCS), BCFM, BSE students only.
 Antireq: BUS 415W, 486W
CS 492: THE SOCIAL IMPLICATIONS OF COMPUTING
This course is designed to consider the problems encountered by individuals, organizations and society as computer technology is adopted, with a view towards assessing possible courses of action.
 Prereq: CS 240/240E; Honours Computer Science, Honours Data Science (BCS), BCFM, BSE students only
CS 493: TEAM PROJECT 1
Students work in teams on substantial openended computer science problems as part of the CS493/494 course sequence. Lectures describe project management fundamentals and ethical and legal issues in computing. Students form teams, select projects, define project goals, perform risk assessment, establish a project plan, and develop a prototype. Possible project topics can include development of software systems, analysis of extensions to existing systems across the field, and experimental computer science.
 Prereq: CS 341, 350; Honours Computer Science, Honours Data Science (BCS), BCFM students only.
 Antireq: Not open to Software Engineering
CS 494: TEAM PROJECT 2
Continuing from CS493, student teams continue development of their project, update project plans, explore design alternatives, perform testing, and analyze experimental results. Teams prepare and deliver technical presentations and demonstrations of their projects, and analyze ethical and legal aspects of their work.
 Prereq: CS 493; Honours Computer Science, Honours Data Science (BCS), BCFM students only.
 Antireq: Not open to Software Engineering
CS 497: MULTIDISCIPLINARY STUDIES IN COMPUTER SCIENCE
See the Course Offerings list for topics available.
 Prereq: Level at least 3B; Honours Computer Science, Honours Data Science (BCS), BCFM, BSE students only