C O M P U T E R S C I E N C E
Notes
- The phrase "Computer Science students" refers to students enrolled in any honours plan offered through the David R. Cheriton School of Computer Science. Software EngineeringComputing and Financial Managementand Bachelor of Computer Science (Data Science) students are considered Computer Science students. Students enrolled in the BMath (Data Science) plan are not considered Computer Science students. Due to course restrictions on upper-year coursesstudents pursuing a Computer Science Minor may need to enrol as Computer Science students for part of their undergraduate studies and should contact a computer science (CS) advisor for more information.
- A CS course may not be taken for credit if it is the prerequisite of another CS course that has already been passed.
CS 100s
Course ID: 004360
Introduction to Computing Through Applications
Using personal computers as effective problem solving tools for the present and the future. Effective use of spreadsheets to processmanipulateand visualize numeric and textual information. Introduction to the InternetWorld Wide WebHTMLand XML. Algorithms underlying the functional components of web search engines and their influence on data access. Using wikis to publishreshapeand organize data collaboratively. [Offered: F,W,S]
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
Course ID: 015054
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 variablesconditionalsloopsfunctionsand arrays. Programming concepts such as coding modular designtestingand debugging. Media concepts such as 2D graphics drawinginputanimationand image processing.
Prereq: Not open to Mathematics students.
Antireq: BME 121CS 115135137145CHE 121CIVE 121ECE 150MTE 121/GENE 121NE 111MSCI 121PHYS 236SYDE 121
Course ID: 015055
Introduction to Computer Programming 2
A continuation of the introduction to computer programming begun in CS 105. The use of programmingin conjunction with librariesas a means of solving practical problems in artdesignand data processing. Basic text processingmanipulation of images and soundhandling and visualization of tabular and hierarchical data. Introductions to user interfacesphysical simulationand object-oriented programming.
Prereq: CS 105; Not open to Mathematics students.
Antireq: BME 121CS 115135137145CHE 121CIVE 121ECE 150MTE 121/GENE 121NE 111MSCI 121SYDE 121
Course ID: 016252
Principles of Computing for Science
Introduction to basic imperative programming principles; programming concepts including functionsflow controllistsarrays; numerical accuracy and efficiency; data analysis and general-purpose algorithms. Introduction to object-oriented programming concepts.
Prereq: Not open to Faculty of Math students.
Antireq: CS 116135136137138145146BME 121CHE 120CIVE 121ECE 150GENE 121/MTE 121ME 101MSCI 121NE 111PHYS 236SYDE 121
Course ID: 012765
Introduction to Computer Science 1
An introduction to the fundamentals of computer science through the application of elementary programming patterns in the functional of programming. Function definition and application. Tracing via substitution. Designtestingand documentation. Recursive data definitions. Lists and trees. Functional and data abstraction.
Antireq: BME 121CS 135137138145CHE 121CIVE 121ECE 150GENE 121/MTE 121ME 101NE 111MSCI 121PHYS 139SYDE 121
Course ID: 012766
Introduction to Computer Science 2
This course builds on the techniques and patterns learned in CS 115 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. Sequencingselectionlooping. Function definition and use. File and console I/O. Issues in computer science.
Prereq: CS 115 or 135 or 145.
Antireq: CS 114136137138146PHYS 236239MSCI 240NE 111
Course ID: 012040
Designing Functional Programs
An introduction to the fundamentals of computer science through the application of elementary programming patterns in the functional of programming. Syntax and semantics of a functional programming language. Tracing via substitution. Designtestingand documentation. Linear and nonlinear data structures. Recursive data definitions. Abstraction and encapsulation. Generative and structural recursion. Historical context.
Antireq: AE 121BME 121CS 115137138145CIVE 121ECE 150ME 101MSCI 121PHYS 236SYDE 121
Course ID: 012041
Elementary Algorithm Design and Data Abstraction
This course builds on the techniques and patterns learned in CS 135 while making the transition to use an imperative language. It introduces the design and analysis of algorithmsthe management of informationand the programming mechanisms and methodologies required in implementations. Topics discussed include iterative and recursive sorting algorithms; listsstacksqueuestreesand their application; abstract data types and their implementations. Offered: F,W,S
Prereq: At least 90% in CS 115 or at least 70% in CS 116 or at least 60% in CS 135 or CS 145.
Coreq: CS 136L.
Antireq: CS 137138146PHYS 239
Course ID: 016330
Tools and Techniques for Software Development
This course introduces students to tools and techniques useful in the software development lifecycle. Students learn to navigate and leverage commands and utilities in the Linux Command Line Shell. Students gain experience in version control softwarewriting scripts to automate tasksand creating effective test cases to identify bugs. Tracing and debugging strategies are discussed. Students also gain experience in using built-in support for version controltestingdebuggingbuild automationetc. in integrated development environments (IDEs).
[Note: Course will be graded on a CR/NCR basis.]
Prereq: At least 90% in CS 115 or at least 70% in CS 116 or at least 60% in
CS 135 or CS 145.
Coreq: CS 136 or CS 146
Course ID: 012886
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. [Offered: F]
Prereq: Software Engineering students only
Course ID: 012887
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 typesincluding sequencesstacksqueuesand trees; implementation using linked structures and arrays; vectors and strings; memory models; automatic vs. dynamic memory management.
[Note: Lab is not scheduled and students are expected to find time in open hours to complete their work. Offered: W]
Prereq: CS 137
Course ID: 013657
Elementary Algorithm Design and Data Abstraction (Advanced Level)
CS 146 is an advanced-level version of CS 136.
[Note: This course may be substituted for CS 136 in any degree plan or for prerequisite purposes. Students who receive a good grade in CS 135 may contact the instructor of CS 146 to seek admission without the formal prerequisites. Offered: W]
Prereq: CS 145 with a grade of at least 75%.
Coreq: CS 136L.
Antireq: CS 116136137138.
CS 200s
Course ID: 004372
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 viewwith 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. [Offered: W,S]
Prereq: Not open to Computer Science students
Course ID: 004374
Introduction to Computers and Computer Systems
Basic computer architectureorganizationsystem servicesand software. Typology of processorsmemoryI/O devicesand their performance.
[Note: Lab is not scheduled and students are expected to find time in open hours to complete their work. Offered: W,S]
Prereq: One of CS 116136138146 or (CS 114 with at least 60%; CS 115 or CS 135); Not open to Computer Science students.
Antireq: BME 292/393CS 241/241E251/251ESYDE 192
Course ID: 015400
Algorithmic Problem Solving
The study of the steps required to solve real-world problems on a computerincluding problem specificationchoice of algorithmic paradigmanalysisand implementation. Topics include exhaustive searchdivide and conquergreedyand dynamic programming approaches.
[Note: Lab is not scheduled and students are expected to find time in open hours to complete their work.]
Prereq: One of CS 116136138146 or CS 114 with at least 60%; CS 115 or CS 135. Not open to Computer Science students.
Antireq: BME 122CS 341ECE 250MSCI 240MTE 140SYDE 223
Course ID: 004375
Data Types and Structures
Top-down design of data structures. Using representation-independent data types. Introduction to commonly used data typesincluding listssetsmappingsand trees. Selection of data representation.
[Note: Lab is not scheduled and students are expected to find time in open hours to complete their work.]
Prereq: One of CS 116136138146 or CS 114 with at least 60%; CS 115 or CS 135. Not open to Computer Science students.
Antireq: BME 122CS 240/240EECE 250MSCI 240MTE 140SYDE 223
Course ID: 004377
Data Structures and Data Management
Introduction to widely used and effective methods of data organizationfocusing on data structurestheir algorithmsand the performance of these algorithms. Specific topics include priority queuessortingdictionariesdata structures for text processing.
[Note: Enrolment is restricted; see Note 1 above. Lab is not scheduled and students are expected to find time in open hours to complete their work. Offered: F,W,S]
Prereq: (CS 245/245E or SE 212)(one of CS 241/241E246/246E247)(one of STAT 206230240); Computer Science and BMath (Data Science) students only.
Antireq: BME 122CS 234CS 240EECE 250MTE 140SYDE 223
Course ID: 015405
Data Structures and Data Management (Enriched)
Enriched version of CS 240.
[Note: CS 240E may be substituted for CS 240 wherever the latter is a requirement. Enrolment is restricted. Lab is not scheduled and students are expected to find time in open hours to complete their work. Offered: As permitted by demand and available resources.]
Prereq: A grade of 85% or higher in one of CS 136138 or 146; Computer Science and BMATH (Data Science) Students only.
Coreq: One of STAT 206230240.
Antireq: CS 234CS 240ECE 250
Course ID: 004378
Foundations of Sequential Programs
The relationship between high-level languages and the computer architecture that underlies their implementationincluding basic machine architectureassemblersspecification and translation of programming languageslinkers and loadersblock-structured languagesparameter passing mechanismsand comparison of programming languages.
[Note: Enrolment is restricted. Lab is not scheduled and students are expected to find time in open hours to complete their work. CS 251 is a recommended corequisite. Offered: F,W,S]
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); Computer Science and BMath (Data Science) students only.
Antireq: CS 230CS 241EECE 351
Course ID: 015406
Foundations of Sequential Programs (Enriched)
Enriched version of CS 241.
[Note: CS 241E may be substituted for CS 241 wherever the latter is a requirement. Enrolment is restricted. Lab is not scheduled and students are expected to find time in open hours to complete their work. CS 251 is a recommended corequisite. Offered: As permitted by demand and available resources.]
Prereq: (CS 136L and a grade of 85% or higher in one of CS 136 or CS 146)or a grade of 85% or higher in CS 138; Computer Science and BMath (Data Science) students only.
Antireq: CS 230ECE 351
Course ID: 011405
Logic and Computation
Logic as a tool for representationreasoningand computation. Propositional and predicate logic. Formalizing the notions of correct and incorrect reasoningdefining what is computableand exploring the limits of computation. Godel's Incompleteness Theorem. Applications of logic to computer science.
Prereq: (One of CS 136138146)MATH 135; Honours Mathematics students only.
Antireq: CS 245EPMATH 330ECE 208SE 212
Course ID: 015407
Logic and Computation (Enriched)
Enriched version of CS 245.
[Note: CS 245E may be substituted for CS 245 wherever the latter is a requirement. Enrolment is restricted. Offered: As permitted by demand and available resources.]
Prereq: A grade of 85% or higher in one of CS 136 or 146; Honours Mathematics students only.
Antireq: CS 245ECE 208PMATH 330and SE 212
Course ID: 004380
Object-Oriented Software Development
Introduction to object-oriented programming and to tools and techniques for software development. Designingcodingdebuggingtestingand documenting medium-sized 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.
[Note: Enrolment is restricted; see Note 1 above. Lab is not scheduled and students are expected to find time in open hours to complete their work. Offered: F,W,S]
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 246ECS 247MSCI 342SYDE 322
Course ID: 015408
Object-Oriented Software Development (Enriched)
Enriched version of CS 246.
[Note: CS 246E may be substituted for CS 246 wherever the latter is a requirement. Enrolment is restricted. Lab is not scheduled and students are expected to find time in open hours to complete their work. Offered: As permitted by demand and available resources.]
Prereq: CS 136La grade of 85% in either CS 136 or CS 146; Honours Mathematics students only.
Antireq: CS 246SYDE 322
Course ID: 013805
Software Engineering Principles
Systematic methods for designingcodingtestingand documenting medium-sized programs. Major topics include abstractionmodularitysoftware modelingobject-oriented programming and designgeneric programmingtesting and debugging.
[Note: Lab is not scheduled and students are expected to find time in open hours to complete their work. Offered: S]
Prereq: CS 241/CS 241E; Software Engineering students only.
Antireq: CS 246/246EMSCI 342SYDE 322
Course ID: 004382
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.
[Note: Students enrolled in Digital Hardware Specialization should enrol in ECE 222. Enrolment is restricted; see Note 1 above. Lab is not scheduled and students are expected to find time in open hours to complete their work. Offered: F,W,S]
Prereq: One of CS 136138146; Computer Science and BMath (Data Science) students only.
Antireq: CS 251EBME 292/393ECE 222ME 262MTE 262SYDE 192
Course ID: 015893
Computer Organization and Design (Enriched)
Enriched version of CS 251.
[Note: Students enrolled in Digital Hardware Specialization should enrol in ECE 222. See note 1. CS 251E may be substituted for CS 251 wherever the latter is a requirement. Enrolment is restricted. Lab is not scheduled and students are expected to find time in open hours to complete their work. Offered: As permitted by demand and available resources.]
Prereq: A grade of 85% or higher in one of CS 136 or 146; Computer Science and BMath (Data Science) students only.
Antireq: BME 292/393CS 251ECE 222ME 262MTE 262SYDE 192
CS 300s
Course ID: 004385
Management Information Systems
An introduction to information systems and their strategic role in business. Topics include types of information systemsorganizational requirementssystems development strategiesdecision support systemsdata and information managementand information systems managementcontroland implementation.
Prereq: One of CS 106116136138146or (CS 114 with at least 60%; CS 115 or CS 135); Level at least 2B; Not open to Computer Science students.
Antireq: AFM 241BUS 415W486WCS 480/490MSCI 441
Course ID: 013658
Computational Methods in Business and Finance
An introduction to numerical methods for business and finance. Floating-point arithmeticinterpolation. Methods for portfolio optimization and contingent-claims valuation. Solution of nonlinear equations. Monte Carlo methodslattice methodssimulation of hedging strategies.
Prereq: (One of CS 116136138146) or (CS 114 with at least 60%; CS 115 or CS 135)); MATH 136 or 146MATH 237 or 247STAT 231 or 241; Not open to Computer Science students.
Antireq: AMATH 242/ CS 371CS 370MTE 204
Course ID: 004390
Computer Applications in Business: Databases
A user-oriented approach to the management of large collections of data. Methods used for the storageselectionand presentation of data. Common database management systems.
[Note: Lab is not scheduled and students are expected to find time in open hours to complete their work.]
Prereq: One of CS 230231234246/246E330; or (AFM 341 and (CS 116 or CS 136 or CS 146)); Not open to Computer Science students.
Antireq: CS 348448MSCI 346
Course ID: 004392
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 algorithmsrecurrencesgreedy algorithmsdynamic programminggraph search and backtrackproblems without algorithmsNP-completeness and its implications.
[Note: Enrolment is restricted; see Note 1 above. Lab is not scheduled and students are expected to find time in open hours to complete their work.]
Prereq: CS 240/240E and (MATH 239 or 249); Computer Science and BMath (Data Science) students only.
Antireq: CS 231ECE 406
Course ID: 011417
Concurrent and Parallel Programming
An introduction to concurrent and parallel programmingwith an emphasis on language constructs. Major topics include exceptionscoroutinesatomic operationscritical sectionsmutual exclusionsemaphoreshigh-level concurrencydeadlockinterprocess communicationprocess structuringshared memor,y and distributed architectures. Students will learn how to structureimplementand debug concurrent programs.
[Note: Enrolment is restricted; see Note 1 above. Lab is not scheduled and students are expected to find time in open hours to complete their work.]
Prereq: CS 350 or SE 350; Computer Science students only
Course ID: 016287
Application Development
Introduction to full-stack application design and development. Students will work in project teams to design and build completeworking applications and services using standard tools. Topics include best-practices in designdevelopmenttestingand deployment.
Prereq: CS 246/246E; Computer Science students only
Course ID: 004417
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 userthe database designerand the database administrator. It teaches the use of a database management system (DBMS) by treating it as a black boxfocusing only on its functionality and its interfaces. Topics include introduction to database systemsrelational database systemsdatabase design methodologySQL and interfacesdatabase application developmentconcept of transactionsODBCJDBCdatabase tuningdatabase administrationand current topics (distributed databasesdata warehousesdata mining).
[Note: Lab is not scheduled and students are expected to find time in open hours to complete their work.]
Prereq: Computer Science and BMath (Data Science) students only.
Coreq: CS 240/240E.
Antireq: CS 338ECE 356456MSCI 346
Course ID: 011727
User Interfaces
An introduction to contemporary user interface implementation conceptsincluding event abstractiongraphical componentslayoutfeedbacktestingaccessibilityand architectures to develop user interfaces. One or more types of interface toolkit paradigms are considered.
[Note: Lab is not scheduled and students are expected to find time in open hours to complete their work.]
Prereq: CS 241/CS 241E and (one of MATH 115136146); Computer Science students only
Course ID: 011416
Operating Systems
An introduction to the fundamentals of operating system functiondesignand implementation. Topics include concurrencysynchronizationprocessesthreadsschedulingmemory managementfile systemsdevice managementand security.
[Note: Enrolment is restricted; see Note 1 above. Lab is not scheduled and students are expected to find time in open hours to complete their work.]
Prereq: CS 240/240E241/241E246/246E(CS 251/251E or ECE 222); Computer Science students only.
Antireq: ECE 254350MTE 241SE 350
Course ID: 004398
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.
[Note: Enrolment is restricted; see Note 1 above.]
Prereq: CS 240/240E241/CS 241E and (MATH 239 or 249); Computer Science students only.
Antireq: CS 365
Course ID: 011347
Models of Computation
Finite automata and regular expressions. Pushdown automata and context-free grammars. Turing machines and undecidability. Time and space complexity. Diagonalization and hierarchies. CS 365 covers the material in CS 360 at an accelerated pace plus additional topics in computational complexity.
[Note: CS 365 may be substituted for CS 360 in any degree plan or for prerequisite purposes; enrolment is restricted; see Note 1 above.]
Prereq: CS 240/240E241/CS 241E and (MATH 239 or 249); Computer Science students only.
Antireq: CS 360
Course ID: 004400
Numerical Computation
Principles and practices of basic numerical computation as a key aspect of scientific computation. Visualization of results. Approximation by splinesfast Fourier transformssolution of linear and nonlinear equationsdifferential equationsfloating point number systemserrorstability. Presented in the context of specific applications to image processinganalysis of datascientific modeling.
[Note: Lab is not scheduled and students are expected to find time in open hours to complete their work.]
Prereq: (One of MATH 118119128138148)(one of MATH 106114115136146)(one of CS 231234241/241E246/246E).
Antireq: AMATH 242/CS 371CHE 121CIVE 121CS 335ECE 204MTE 204
Course ID: 011363
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 computationsolution of linear systemsinterpolationdiscrete Fourier transformsand numerical integration. Applications are used as motivation.
[Note: This course may be substituted for CS 370 in any degree plan or for prerequisite purposes; lab is not scheduled and students are expected to find time in open hours to complete their work.]
Prereq: (One of CS 116136138146)MATH 235 or 245237 or 247.
Antireq: CS 335370ECE 204MTE 204
(Cross-listed with AMATH 242)
Course ID: 015143
Computational Digital Art Studio
An upper-level 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
(Cross-listed with FINE 383)
CS 400s
Course ID: 004404
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; Not open to Computer Science students.
Antireq: CS 446/ECE 452SE 464
Course ID: 015547
Data-Intensive Distributed Analytics
Introduces non-CS major students to infrastructure for data-intensive analyticswith a focus on abstractionsframeworksand algorithms that allow developers to distribute computation across many machines. Topics include core concepts (partitioningreplicationlocalityconsistency)computational models (MapReducedataflowsstream processingbulk-synchronous parallel)and applications.
Prereq: (CS 231 or 234 or 341) and (CS 251/251E or 330); Not open to Computer Science students.
Antireq: CS 451
Course ID: 004407
Networks and Distributed Computer Systems
An introduction to networksprotocolsand distributed systems. Layered modelsresource managementnamingaddressing and routingreliable communicationsecurityand higher-level services.
[Note: Lab is not scheduled and students are expected to find time in open hours to complete their work.]
Prereq: One of CS 230241/241E246/246E251/251E; Not open to Computer Science students.
Antireq: CS 454456ECE 428454
Course ID: 004410
Principles of Programming Languages
An exposure to important concepts and issues in contemporary programming languages. Data typesabstractionand polymorphism. Program structure. Lambda calculus and functional programminglogic programmingobject-oriented programming. Semantics of programming languages. Critical comparison of language features and programming methodologies using examples drawn from a variety of programming languages including LispPrologMLAdaSmalltalkIconAPLand Lucid. Programming assignments involve the use of some of these languages.
[Note: Lab is not scheduled and students are expected to find time in open hours to complete their work.]
Prereq: CS 240/240E; Computer Science students only
Course ID: 004412
Compiler Construction
Phases of compilation. Lexical analysis and a review of parsing. Compiler-compilers and translator writing systems. LEX and YACC. Scope rulesblock structureand symbol tables. Runtime stack management. Parameter passage mechanisms. Stack storage organization and templates. Heap storage management. Intermediate code. Code generation. Macros.
[Note: This course involves project work.]
Prereq: CS 350 or SE 350; Computer Science students only
Course ID: 004413
Software Requirements Specification and Analysis
Introduces students to the requirements definition phase of software development. Modelsnotationsand processes for software requirements identificationrepresentationanalysisand validation. Cost estimation from early documents and specifications.
[Note: Lab is not scheduled and students are expected to find time in open hours to complete their work.]
Prereq: CS 350; Computer Science students only.
Antireq: SE 463
(Cross-listed with ECE 451)
Course ID: 004414
Software Design and Architectures
Introduces students to the designimplementationand evolution phases of software development. Software design processesmethodsand notation. Implementation of designs. Evolution of designs and implementations. Management of design activities.
[Note: Lab is not scheduled and students are expected to find time in open hours to complete their work.]
Prereq: CS 350; Computer Science students only.
Antireq: CS 430SE 464
(Cross-listed with ECE 452)
Course ID: 004416
Software TestingQuality Assuranceand Maintenance
Introduces students to systematic testing of software systems. Software verificationreviewsmetricsquality assuranceand prediction of software reliability and availability. Related management issues.
[Note: Lab is not scheduled and students are expected to find time in open hours to complete their work.
Prereq: CS 350; Computer Science students only.
Antireq: SE 465
(Cross-listed with ECE 453)
Course ID: 012300
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 layoutdisk-based data structures)indexingquery processing algorithmsquery optimizationtransactional concurrency controllogging and recovery.
[Note: Lab is not scheduled and students are expected to find time in open hours to complete their work.]
Prereq: CS 348 and (CS 350 or SE 350); Computer Science students only
Course ID: 013910
Human-Computer Interaction
An introduction to the fundamental theoriesmethodsand research in the design and evaluation of novel computational artifacts designed to meet real-world human needs.
[Note: Lab is not scheduled and students are expected to find time in open hours to complete their work.]
Prereq: CS 240/240E241CS/241E; Level at least 3B; Computer Science students only.
Antireq: SYDE 348/548
Course ID: 004418
Computer Architecture
The course is intended to provide the student with an appreciation of modern computer design and its relation to system architecturecompiler technologyand operating system functionality. The course places an emphasis on design based on the measurement of performance and its dependency on parallelismefficiencylatencyand resource utilization.
[Note: Lab is not scheduled and students are expected to find time in open hours to complete their work.]
Prereq: (CS 245/245E or SE 212) and (CS 350 or SE 350); Computer Science students only.
Antireq: ECE 320ECE 429
Course ID: 015315
Data-Intensive Distributed Computing
Introduces students to infrastructure for data-intensive computingwith a focus on abstractionsframeworksand algorithms that allow developers to distribute computations across many machines. Topics include core concepts (partitioningreplicationlocalityconsistency)computational models (MapReducedataflowsstream processingbulk-synchronous parallel)and applications.
Prereq: CS 341348 and (CS 350 or SE 350); Computer Science and BMath (Data Science) students only
Course ID: 004419
Real-time Programming
Intended to give students experience with tools and techniques of real-time programmingthis course includes not only issues of microcomputer architecture and a real-time programming language and operating systembut also hands-on experience programming a microcomputer for applications such as process controldata acquisition and communication.
[Note: This course involves project work.]
Prereq: CS 350 or SE 350; Computer Science students only
Course ID: 004420
Distributed Systems
An introduction to distributed systemsemphasizing the multiple levels of software in such systems. Specific topics include fundamentals of data communicationsnetwork architecture and protocolslocal-area networksconcurrency control in distributed systemsrecovery in distributed systemsand clock synchronization.
[Note: Lab is not scheduled and students are expected to find time in open hours to complete their work.]
Prereq: CS 350 or SE 350; Computer Science students only.
Antireq: ECE 454
Course ID: 010167
Computer Networks
An introduction to network architectures and protocolsplacing emphasis on protocols used in the Internet. Specific topics include application layer protocolsnetwork programmingtransport protocolsroutingmulticastdata link layer issuesmultimedia networkingnetwork securityand network management.
Prereq: CS 350 or SE 350; Computer Science students only.
Antireq: CS 436ECE 358428
Course ID: 004422
System Performance Evaluation
Basic techniques of system performance evaluation. Specific topics include: performance modelingdiscrete event simulationverification and validation of simulation modelsanalysis of simulation outputanalysis of single server queue and queueing networksmodeling of computer systemsnetworksand other queueing or non-queueing systems.
[Note: Lab is not scheduled and students are expected to find time in open hours to complete their work.]
Prereq: (CS 246/246E or 247) and (one of STAT 206231241); Computer Science students only
Course ID: 012980
Computer Security and Privacy
Security and privacy issues in various aspects of computing. Specific topics include comparing security and privacyprogram securitywriting secure programscontrols against program threatsoperating system securityformal security modelsnetwork securityInternet application security and privacyprivacy-enhancing technologiesdatabase security and privacyinferencedata miningsecurity policiesphysical securityeconomics of securityand legal and ethical issues.
[Note: Lab is not scheduled and students are expected to find time in open hours to complete their work.]
Prereq: CS 350 or SE 350. Computer Science students only.
Antireq: ECE 458
Course ID: 004424
Formal Languages and Parsing
Languages and their representations. Grammars --Chomsky hierarchy. Regular sets and sequential machines. Context-free grammars -- normal formsbasic 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; Computer Science students only
Course ID: 004426
Algorithm Design and Analysis
Algorithmic approaches and methods of assessment that reflect a broad spectrum of criteriaincluding randomized algorithmsamortized analysislower boundsapproximation algorithmsand on-line algorithms. Particular examples will be chosen from different areas of active research and application.
Prereq: CS 341; Computer Science students only
Course ID: 011497
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; error-correction and fault-tolerance; quantum key distribution.
Prereq: MATH 235 or 245 with grade at least 80%; Level at least 3A
(Cross-listed with PHYS 467CO 481)
Course ID: 011444
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: symmetricpositive definitebandgeneral sparse structuresordering methods. Iterative methods: JacobiGauss-SeidelSORconjugate 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.
[Note: Lab is not scheduled and students are expected to find time in open hours to complete their work.]
Prereq: AMATH 242/CS 371 or CS 370.
Antireq: CS 372472
Course ID: 003352
Numeric Computation for Financial Modeling
The interaction of financial modelsnumerical methodsand computing environments. Basic computational aspects of option pricing and hedging. Numerical methods for stochastic differential equationsstrong and weak convergence. Generating correlated random numbers. Time-stepping methods. Finite difference methods for the Black-Scholes equation. Discretizationstabilityconvergence. Methods for portfolio optimizationeffect of data errors on portfolio weights.
[Note: Lab is not scheduled and students are expected to find time in open hours to complete their work. Students who receive a good grade in CS 335 may contact the instructor of CS 476 to seek admission without the formal prerequisites.]
Prereq: (AMATH 242/CS 371 or CS 370) and (STAT 206 with at least 60% or STAT 231 or STAT 241)
Course ID: 016167
Neural Networks
An introduction to neural network methodswith 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 topicsincluding adversarial inputs and biologically plausible learning methods.
Prereq: One of CS 335CS 370CS 371/AMATH 242; and STAT 206 with at least 60% or STAT 230 or STAT 240
Course ID: 015515
Introduction to Machine Learning
Introduction to modeling and algorithmic techniques for machines to learn concepts from data. Generalization: underfittingoverfittingcross-validation. Tasks: classificationregressionclustering. Optimization-based learning: loss minimization. regularization. Statistical learning: maximum likelihoodBayesian learning. Algorithms: nearest neighbour(generalized) linear regressionmixtures of GaussiansGaussian processeskernel methodssupport vector machinesdeep learningsequence learningensemble techniques. Large scale learning: distributed learning and stream learning. Applications: Natural language processingcomputer visiondata mininghuman computer interactioninformation retrieval.
[Note: Lab is not scheduled and students are expected to find time in open hours to complete their work.]
Prereq: CS 341 and (STAT 206 or 231 or 241); Computer Science and BMath (Data Science) students only.
Course ID: 004434
Computational Techniques in Biological Sequence Analysis
Computer science principles and algorithms in biological sequence analysis. Topics include algorithms for sequence comparisonfor large-scale database search in biological databasesfor sequence assemblyfor evolutionary tree reconstructionfor identifying important features in DNA and RNA sequencesand 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)
Course ID: 013912
Computational Vision
Introduction to image and vision understanding by computer. Camera-system geometryimage formation and lightingand image acquisition. Basic visual processes for recognition of edgesregionslinesand surfaces. Processing of stereo imagesand motion in image sequences. Object recognition. Applications of computer-vision systems.
[Note: Lab is not scheduled and students are expected to find time in open hours to complete their work.]
Prereq: (One of AMATH 242/CS 371CS 370MATH 235MATH 245) and (One of STAT 206STAT 230 or 240); Computer Science students only
Course ID: 013911
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: VC-dimensionmargins of a classifiersparsity and description lengthother types of regularization. Performance guarantees: generalization boundsdata dependent error boundsand computational complexity of learning algorithms. Common paradigms: neural networkskernel methods and support-vector machinesboostingnearest neighbor classifiers. Applications to data mining.
Prereq: CS 341 and (STAT 206 or 230 or 240); Computer Science and BMath (Data Science) students only
Course ID: 004435
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. Multi-agent systems. Natural language processing.
[Note: Lab is not scheduled and students are expected to find time in open hours to complete their work.]
Prereq: CS 341; Computer Science and BMath (Data Science) students only.
Coreq: STAT 206 or 231 or 241.
Course ID: 004436
Introduction to Symbolic Computation
An introduction to the use of computers for symbolic mathematical computationinvolving traditional mathematical computations such as solving linear equations (exactly)analytic differentiation and integration of functionsand analytic solution of differential equations.
[Note: Lab is not scheduled and students are expected to find time in open hours to complete their work.]
Prereq: CS 231 or 234 or 240/240E; Honours Mathematics only
Course ID: 004437
Introduction to Computer Graphics
Software and hardware for interactive computer graphics. Implementation of device drivers3-D transformationsclippingperspectiveand input routines. Data structureshidden surface removalcolour shading techniquesand some additional topics will be covered.
[Note: This course involves project work.]
Prereq: CS 341 and (CS 350 or SE 350) and (CS 370 or 371); Computer Science students only
Course ID: 004433
Information Systems Management
The integration of business and technical considerations in the designimplementation and management of information systems. Topics include: IS planning and development; businessmanagementexecutiveand strategic information systemsincluding case studies of selected large- scale systems; decision support systems; end-user training and development; systems securitydisaster planning and recovery. Practical examples of information systems in industry.
Prereq: CS 350 or SE 350; Computer Science students only.
Antireq: BUS
415W486W
Course ID: 004438
The Social Implications of Computing
This course is designed to consider the problems encountered by individualsorganizations and society as computer technology is adoptedwith a view towards assessing possible courses of action.
Prereq: CS 240/240E; Computer Science students only
Course ID: 015545
Team Project 1
Students work in teams on substantial open-ended computer science problems as part of the CS 493/494 course sequence. Lectures describe project management fundamentals and ethical and legal issues in computing. Students form teamsselect projects, define project goalsperform risk assessmentestablish a project planand develop a prototype. Possible project topics can include development of software systemsanalysis of extensions to existing systems across the fieldand experimental computer science.
Prereq: CS 341350; Computer Science students only. Not open to Software Engineering students.
Course ID: 015546
Team Project 2
Continuing from CS 493student teams continue development of their projectupdate project plansexplore design alternativesperform testingand analyze experimental results. Teams prepare and deliver technical presentations and demonstrations of their projectsand analyze ethical and legal aspects of their work.
Prereq: CS 493; Computer Science students only. Not open to Software Engineering students.
Course ID: 012560
Honours Thesis
The student will undertake new analysissynthesismeasurementor experimentation to produce a document that demonstrates a depth of understanding of a topic that goes beyond what is obtained in a standard undergraduate education.
[Note: Offered for CR/NCR only. CS 499R is recommended. A detailed thesis proposal and names of a supervisor and reader are required.]
Department Consent Required
Prereq: Computer Science students only