COMPSCI 1DM3Undergraduate |
Discrete Mathematics for Computer Science
|
|
|
More Info.
|
Sets, functions, relations, trees and graphs; counting principles, modular arithmetic, discrete probabilities; induction and recursion, recurrence relations.
Three lectures, one tutorial (two hours), second term
Prerequisite(s): MATH 1B03 or MATH 1ZC3 or registration in the Honours Computer Science as a Second Degree (B.A.Sc.)
Antirequisite(s): COMPSCI 1FC3, 2DM3, SFWRENG 2DM3, 2E03, 2F03
COMPSCI 1JC3Undergraduate |
Introduction to Computational Thinking
|
|
|
More Info.
|
Exploration of thinking that is inspired, supported, and enabled by computing. Survey of the salient ideas, methods, and technologies in the major areas of computing including basic data types, logic, operating systems, computer networking, web computing, information security, digital media, software development, and problem solving techniques. Introduction to the fundamentals of functional programming.
Three lectures, one tutorial (two hours), first term
Prerequisite(s): One of MATH 1K03, Grade 12 Advanced Functions and Introductory Calculus U, Grade 12 Calculus and Vectors, or registration in Computer Science 1
COMPSCI 1MD3Undergraduate |
Introduction to Programming
|
|
|
More Info.
|
Introduction to fundamental programming concepts: values and types, expressions and evaluation, control flow constructs and exceptions, recursion, input/output and file processing.
Three lectures, one tutorial (one hour); first term
Prerequisite(s): One of MATH 1K03, 1LS3, Grade 12 Advanced Functions and Introductory Calculus U, Grade 12 Calculus and Vectors
Antirequisite(s): ENGINEER 1D04, MATH 1MP3
COMPSCI 1XC3Undergraduate |
Computer Science Practice and Experience: Development Basics
|
|
|
More Info.
|
Acquiring familiarity with professional software development settings via practical experience with interaction with UNIX-like systems, programming in C, with documentation, testing, benchmarking, profiling and debugging; shell interaction and programming, pipes and filters; revision control.
Two lectures, two labs (two hours each); second term
Prerequisite(s): One of COMPSCI 1MD3 or ENGINEER 1D04
Antirequisite(s): COMPENG 2SH4, COMPSCI 1XA3, 2XA3, 2S03, SFWRENG 2MP3, 2S03, 2XA3
COMPSCI 1XD3Undergraduate |
Computer Science Practice and Experience: Introduction to Software Design Using Web Programming
|
|
|
More Info.
|
Introduction to different aspects of design: Identifying user needs, goals and desires and translating them into software, and structuring and communicating the structure of software to improve reliability, readability and adaptability. Topics include web languages and protocols, types and design patterns.
Two lectures, two labs (two hours each); second term
Prerequisite(s): COMPSCI 1JC3 and 1MD3
Antirequisite(s): COMPSCI 1XA3
COMPSCI 2AC3Undergraduate |
Automata and Computability
|
|
|
More Info.
|
Finite state machines, regular languages, regular expressions, applications of regular languages, grammars, context-free languages, models of computation, computability and decidability.
Three lectures, one tutorial (two hours); second term
Prerequisite(s): COMPSCI 2LC3, 2C03
Antirequisite(s): COMPSCI 2FA3, 2MJ3, SFWRENG 2FA3
COMPSCI 2C03Undergraduate |
Data Structures and Algorithms
|
|
|
More Info.
|
Basic data structures: stacks, queues, hash tables, and binary trees; searching and sorting; graph representations and algorithms, including minimum spanning trees, traversals, shortest paths; introduction to algorithmic design strategies; correctness and performance analysis.
Three lectures, one tutorial (one hour); second term
Prerequisite(s): COMPSCI 1DM3 or 2DM3; COMPSCI 1XC3 or 1XD3 or 1MD3
Antirequisite(s): SFWRENG 2C03
Effective 2021-2022, this course will be offered in first term.
COMPSCI 2DB3Undergraduate |
Databases
|
|
|
More Info.
|
Data modelling, integrity constraints, principles and design of relational databases, relational algebra, SQL, query processing, transactions, concurrency control, recovery, security and data storage.
Three lectures, one tutorial (one hour); second term
Prerequisite(s): COMPSCI 2LC3 or COMPSCI 2DM3
Antirequisite(s): COMPSCI 3DB3, 4DB3, SFWRENG 3DB3, 3H03, 4M03, 4DB3
COMPSCI 2GA3Undergraduate |
Computer Architecture
|
|
|
More Info.
|
Introduction to logic gates, computer arithmetic, instruction-set architecture, assembly programming, translation of high-level languages into assembly. Computer system organization: datapath and control, pipelining, memory hierarchies, I/O systems; measures of performance.
Three lectures, one tutorial, (one hour); first term
Prerequisite(s): COMPSCI 1MD3 or ENGINEER 1D04 or IBEHS 1P10
Prerequisite(s) (EFFECTIVE 2021-2022): COMPSCI 1XC3 and 1DM3
Antirequisite(s): COMPENG 3DR4, 4DM4, SFWRENG 2GA3, 3GA3
COMPSCI 2LC3Undergraduate |
Logical Reasoning for Computer Science
|
|
|
More Info.
|
Introduction to logic and proof techniques for practical reasoning: propositional logic, predicate logic, structural induction; rigorous proofs in discrete mathematics and programming.
Three lectures, one tutorial (two hours); first term
Prerequisite(s): COMPSCI 1DM3, COMPSCI 1MD3 or 1XC3 or 1XD3
Antirequisite(s): COMPSCI 2DM3, SFWRENG 2DM3
COMPSCI 2ME3Undergraduate |
Introduction to Software Development
|
|
|
More Info.
|
Classes and inheritance, class invariants, interface specifications; object-oriented design patterns; exception handling; tools for interface documentation, testing, program analysis; requirements documentation; quality attributes; development models.
Three lectures one tutorial (two hours); second term
Prerequisite(s): COMPSCI 2DM3, 2S03
Prerequisite(s) (EFFECTIVE 2021-2022): COMPSCI 1XC3 and 1XD3
Co-requisite(s) (EFFECTIVE 2021-2022): COMPSCI 2LC3
Antirequisite(s): SFWRENG 2AA4, SFWRENG 3K04, MECHTRON 3K04
Effective 2021-2022, this course will be offered in first term.
COMPSCI 2SD3Undergraduate |
Concurrent Systems
|
|
|
More Info.
|
Models of concurrency: process algebras, Petri nets, temporal logics and model checking; concurrency as software structuring principle: processes, threads, synchronization mechanisms, resource management and sharing; deadlock, safety and liveness; design, verification and testing of concurrent systems.
Three lectures, one tutorial (two hours); second term
Prerequisite(s): COMPSCI 2C03, 2LC3 or 2DM3, 2ME3
Co-requisite(s): COMPSCI 2AC3
Antirequisite(s): COMPSCI 3SD3, SFWRENG 3BB4
COMPSCI 2XC3Undergraduate |
Computer Science Practice and Experience: Algorithms and Software Design
|
|
|
More Info.
|
Implementation of computational solutions to practical problems that combine algorithmic design and analysis with software design principles, through an experiential approach in simulated workplace environments. Communication skills: Technical documentation and presentation.
Two lectures, one lab (three hours), second term
Prerequisite(s): COMPSCI 1XC3, 1XD3, 2C03, 2ME3
Antirequisite(s): COMPSCI 2XB3, SFWRENG 2XB3
COMPSCI 3AC3Undergraduate / Technical Elective |
Algorithms and Complexity List E: Software Engineering Technical Electives
|
|
|
More Info.
|
Basic computability models; the Church-Turing thesis, complexity classes; P versus NP; NP-completeness, reduction techniques; algorithmic design strategies; flows, distributed algorithms, advanced techniques such as randomization.
Three lectures, one tutorial (one hour), second term
Prerequisite(s): COMPSCI 2C03 or SFWRENG 2C03, COMPSCI 2AC3 or 2FA3 or SFWRENG 2FA3
COMPSCI 3DM3Undergraduate / Technical Elective |
Introduction to Data Mining List E: Software Engineering Technical Electives
|
|
|
More Info.
|
This course introduces the core techniques in Big Data analytics, also known as knowledge discovery and data mining. Topics covered by this course include: frequent pattern mining, classification and clustering. Assignments and mini programming projects will be used to enhance and evaluate the learning performance of students.
3 lectures, 1 tutorial (1hour)
PREREQUISITE(S):
- One of COMPSCI 2DB3, COMPSCI 3DB3, SFWRENG 3DB3;
- One of COMPSCI 2C03, SFWRENG 2C03 SFWRENG 2MD3, MECHTRON 2MD3;
- One of COMPSCI 2ME3, SFWRENG 2AA4, SFWRENG 3K04, MECHTRON 3K04;
- One of STATS 1L03, STATS 2D03, STATS 3Y03.
COMPSCI 3DP3Undergraduate |
Data Privacy
|
|
|
More Info.
|
Basics of data privacy, de-anonymization, membership and reconstruction attacks, differential privacy, privacy-preserving mechanisms, privacy-utility trade-offs and cost of privacy, adaptive data analysis
Three lectures; one tutorial (one hour); one term
Prerequisite(s): One of COMPSCI 2C03, SFWRENG 2C03, SFWRENG 2MD3, MECHTRON 2MD3; one of STATS 2D03, 3Y03, IBEHS 4C03; one of MATH 1B03, 1ZC3; basic Python programming.
Offered on an irregular basis.
COMPSCI 3EA3Undergraduate / Technical Elective |
Software Specifications and Correctness List E: Software Engineering Technical Electives
|
|
|
More Info.
|
Formal specifications in software and system development; validation; verification; presentation of information; practical
experience in formal specification and tool-supported verification.
Three lectures; one tutorial (one hour); one term
Prerequisite(s): COMPSCI 2LC3 or 2DM3, 2AC3 or 2FA3, 2ME3, 2SD3 or 3SD3
Offered on an irregular basis.
COMPSCI 3GC3Undergraduate |
Computer Graphics
|
|
|
More Info.
|
Mathematical foundations, the graphics pipeline, geometrical transformations, 3D visualization, clipping, illumination and shading models and the impact of graphics on society.
Three lectures, one tutorial (two hours every other week); one term
Prerequisite(s): MATH 1B03 or 1ZC3, and COMPSCI 2C03
Antirequisite(s): SFWRENG 3GC3
Offered on an irregular basis.
COMPSCI 3IS3Undergraduate / Technical Elective |
Information Security List E: Software Engineering Technical Electives
|
|
|
More Info.
|
Basic principles of information security; threats and defences; cryptography; introduction to network security and security management.
Three lectures; one term
Prerequisite(s): COMPSCI 2AC3 or 2FA3 or SFWRENG 2FA3, and COMPSCI 2C03 or SFWRENG 2C03
Offered on an irregular basis.
COMPSCI 3MI3Undergraduate |
Principles Of Programming Languages
|
|
|
More Info.
|
Principles of definition of and reasoning about programming languages and domain-specific languages; use of semantics for interpretation and in program analyses for correctness, security and efficiency.
Three lectures; one tutorial (one hour); first term
Prerequisite(s): COMPSCI 2C03, and COMPSCI 2LC3 or 2DM3, and COMPSCI 2AC3 or 2FA3, and COMPSCI 2ME3
COMPSCI 3N03Undergraduate |
Computer Networks and Security
|
|
|
More Info.
|
Physical networks, TCP/IP protocols, switching methods, network layering and components, network services. Information security, computer and network security threats, defence mechanisms, encryption.
Three lectures, one tutorial (one hour); second term
Prerequisite(s): Credit or registration in COMPSCI 3SH3
Antirequisite(s): COMPSCI 3CN3, 3C03, COMPSCI 4C03, SFWRENG 4C03, COMPENG 4DK4, 4DN4
First offered 2022-2023
COMPSCI 3RA3Undergraduate |
Software Requirements and Security Considerations
|
|
|
More Info.
|
Software requirements gathering. Critical systems requirements gathering. Security requirements. Traceability of requirements. Verification, validation, and documentation techniques. Software requirements quality attributes. Security policies. Measures for data confidentiality. Design principles that enhance security. Access control mechanisms.
Three lectures, one tutorial (one hour); first term
Prerequisite(s): COMPSCI 2AC3 or 2FA3, COMPSCI 2ME3
Antirequisite(s): SFWRENG 3RA3
Cross-list(s): SFWRENG 3RA3
COMPSCI 3SH3Undergraduate |
Computer Science Practice and Experience: Operating Systems
|
|
|
More Info.
|
Processes and threads, synchronization and communication; scheduling, memory management; file systems; resource protection; structure of operating systems.
Two lectures, one tutorial, two labs (one hour each); second term
Prerequisite(s): COMPSCI 2SD3 or 3SD3, COMPSCI 2C03, and COMPSCI 2GA3
Antirequisite(s): SFWRENG 3SH3
Effective 2021-2022, this course will be offered in first term.
COMPSCI 3TB3Undergraduate |
Syntax-Based Tools and Compilers
|
|
|
More Info.
|
Lexical analysis, syntax analysis, type checking; syntax-directed translation, attribute grammars; compiler structure; implications of computer architecture; mapping of programming language concepts; code generation and optimization.
Two lectures, one tutorial, two labs (one hour each); second term
Prerequisite(s): COMPSCI 2C03 or SFWRENG 2C03, and COMPSCI 2GA3 or SFWRENG 2GA3 or 3GA3, and COMPSCI 2AC3 or 2FA3 or SFWRENG 2FA3, and COMPSCI 3MI3 or registration in Level IV or above of a Software Engineering program
First offered 2022-2023.
COMPSCI 4AD3Undergraduate / Technical Elective |
Advanced Databases List D : Software Engineering and Society Technical Electives
|
|
|
More Info.
|
Advanced topics in database systems technology and design. Topics include: query processing; query optimization; data storage; indexing; crash recovery; physical database design; introductory data mining techniques.
Three lectures, one tutorial; one term
Prerequisite(s): COMPSCI 3DB3
Antirequisite(s): SFWRENG 4AD3
Cross-list(s): SFWRENG 4AD3
Offered on an irregular basis.
COMPSCI 4AR3Undergraduate |
Software Architecture
|
|
|
More Info.
|
Software architecture concepts; architectural styles; design patterns, components, libraries, configurations; modelling languages; software re-engineering.
Three lectures; one term
Prerequisite(s): Credit or registration in COMPSCI 3RA3 or 3SR3
Offered on an irregular basis.
COMPSCI 4C03Undergraduate |
Computer Networks and Security
|
|
|
More Info.
|
Physical networks, TCP/IP protocols, switching methods, network layering and components, network services. Information security, computer and network security threats, defence mechanisms, encryption.
Three lectures, one tutorial (one hour); second term
Prerequisite(s): Credit or registration in COMP SCI 3MH3 or COMPSCI 3SH3
Antirequisite(s): COMPSCI 3CN3, 3C03, SFWRENG 4C03, COMPENG 4DN4
Last offered 2022-2023.
COMPSCI 4DC3Undergraduate / Technical Elective |
Distributed Computing List E: Software Engineering Technical Electives
|
|
|
More Info.
|
Models of distributed computation, formal reasoning about distributed systems, time and message complexity, distributed agreement under adversarial attacks, distributed coordination and symmetry breaking, peer-to-peer computing, simulation as a tool for building more advanced functionality, actor-model programming.
Three lectures, one tutorial; one term
Prerequisite(s): One of COMPSCI 2C03 or SFWRENG 2C03 or SFWRENG 2MD3, and one of COMPSCI 2SD3 or 3SD3 or SFWRENG 3BB4 or SFWRENG 3SH3
Offered on an irregular basis.
COMPSCI 4E03Undergraduate |
Performance Analysis of Computer Systems
|
|
|
More Info.
|
Use of queuing models and simulation to predict computer system performance and find bottlenecks in a system. Types of models, distributions. Markov models. Modelling storage and network behaviour, locks, critical sections, concurrency. Introduction to analytical system reliability.
Three lectures, one tutorial (one hour); first term
Prerequisite(s): One of STATS 2D03, 2MA3, 3N03 or 3Y03
Antirequisite(s): SFWRENG 4E03
Cross-list(s): SFWRENG 4E03
COMPSCI 4EN3 A/BUndergraduate |
Software Entrepreneurship
|
|
|
More Info.
|
Issues in starting up a new software enterprise, with the focus on independent startups. This course will cover the technical, financial, legal and operational issues encountered by software startups. Small groups of students will take an idea and turn it into a prototype, a business plan, and a sales pitch. Lectures will cover issues from team formation to appropriate software development processes to patent protection to venture capital.
Three lectures; two terms
Prerequisite(s): Registration in Level III or IV of any Computer Science program
Offered on an irregular basis.
COMPSCI 4F03Undergraduate |
Parallel Computing
|
|
|
More Info.
|
Parallel architectures, design and analysis of parallel algorithms; distributed-memory, shared-memory and GPU computing; communication cost, scalability; MPI, OpenMP and OpenACC; tuning parallel programs for performance.
Three lectures, one tutorial (one hour); one term
Prerequisite(s): COMPSCI 2SD3 or credit or registration in COMPSCI 3SD3. Completion of COMPSCI 3N03 or 4C03 is recommended.
Antirequisite(s): SFWRENG 4F03
Cross-list(s): SFWRENG 4F03
Offered on an irregular basis.
COMPSCI 4FP3Undergraduate |
Functional Programming
|
|
|
More Info.
|
A selection of topics in advanced functional programming (focusing on Haskell and its derivatives). Example topics: Techniques for embedded domain-specific languages, generic and type-level programming, reasoning about programs, and (co)effects.
Three lectures, one tutorial (one hour); one term
Prerequisite(s): COMPSCI 1JC3 or SFWRENG 3FP3, COMPSCI 1XC3 or SFWRENG 2S03 or SFWRENG 2XC3, COMPSCI 2C03 or SFWRENG 2C03, COMPSCI 2LC3 or 2DM3 or SFWRENG 2DM3, COMPSCI 2ME3 or SFWRENG 2AA4
Antirequisite(s): COMPSCI 3FP3
Offered on an irregular basis.
COMPSCI 4HC3Undergraduate |
Human Computer Interfaces
|
|
|
More Info.
|
Design of user interfaces. Principles of good interface design. Task-oriented design. User experience design. Inclusive design. Communicating with graphics. Modes and mode awareness problem. Human cognition (memory, perception, motor systems). Help systems. Interface design tools.
Three lectures, one tutorial (one hour); first term
Prerequisite(s): COMPSCI 2C03
Antirequisite(s): SFWRENG 4D03, 4HC3
Cross-list(s): SFWRENG 4HC3
COMPSCI 4ML3Undergraduate / Technical Elective |
Introduction to Machine Learning List E: Software Engineering Technical Electives
|
|
|
More Info.
|
Regression, Classification and Decision Theory, Bias-Variance Trade-off, Linear Models, Kernel Methods, Probabilistic Models, Neural Networks, Model Aggregation, Unsupervised Learning.
Three lectures, one tutorial; one term
Prerequisite(s): One of COMPSCI 2C03 or SFWRENG 2C03 or SFWRENG 2MD3. One of STATS 1L03, STATS 2D03, STATS 3Y03. One of COMPSCI 4O03 or 4X03 or SFWRENG 3O03 or 4X03 is recommended.
Offered on an irregular basis.
COMPSCI 4O03Undergraduate |
Linear Optimization Algorithms
|
|
|
More Info.
|
Modelling and solutions for engineering and science problems using linear optimization, including networks, transportation, assignment, and scheduling problems. Solution methods include combinatorial algorithms such as simplex methods, primal-dual formulations, branch and bound formulations for mixed integer programming, and heuristics.
Three lectures, one tutorial (one hour); first term
Prerequisite(s): COMPSCI 2C03
Antirequisite(s): SFWRENG 3O03, 4O03
Cross-list(s): SFWRENG 3O03
COMPSCI 4TB3Undergraduate |
Syntax-Based Tools and Compilers
|
|
|
More Info.
|
Lexical analysis, syntax analysis, type checking; syntax-directed translation, attribute grammars; compiler structure; implications of computer architecture; mapping of programming language concepts; code generation and optimization.
Two lectures, one tutorial, two labs (one hour each); second term
Prerequisite(s): COMPSCI 2C03 or SFWRENG 2C03, and COMPSCI 2GA3 or SFWRENG 2GA3 or 3GA3, and COMPSCI 2AC3 or 2FA3 or SFWRENG 2FA3, and COMPSCI 3MI3 or registration in Level IV or above of a Software Engineering program
Last offered 2022-2023.
COMPSCI 4TE3Undergraduate |
Continuous Optimization Algorithms
|
|
|
More Info.
|
Fundamental algorithms and duality concepts of continuous optimization. Motivation, applicability, information requirements and computational cost of the algorithms is discussed. Practical problems will illustrate the power of continuous optimization techniques.
Three lectures, one tutorial (one hour); one term
Prerequisite(s): One of MATH 2A03 or 2ZZ3
Antirequisite(s): SFWRENG 4TE3
Cross-list(s): SFWRENG 4TE3
Offered on an irregular basis.
COMPSCI 4TH3Undergraduate |
Theory of Computation
|
|
|
More Info.
|
Formal languages, models of computation, decidability, reduction techniques, time and space complexity classes.
Three lectures, one tutorial (one hour); one term
Prerequisite(s): COMPSCI 2AC3 or 2FA3, 2C03
Antirequisite(s): SFWRENG 4TH3
Cross-list(s): SFWRENG 4TH3
Offered on an irregular basis.
COMPSCI 4TI3Undergraduate |
Fundamentals of Image Processing
|
|
|
More Info.
|
Discrete-time signals and systems, digital filter design, photons to pixels, linear filtering, edge-detection, non-linear filtering, multi-scale transforms, motion estimation.
Three lectures; one term
Prerequisite(s): Registration in Level III or above of a program offered by the Department of Computing and Software
Offered on an irregular basis.
COMPSCI 4WW3Undergraduate / Technical Elective |
Web Systems and Web Computing List E: Software Engineering Technical Electives
|
|
|
More Info.
|
Network protocols underlying the world wide web; client-side programming: markup, styles, scripts, design, mobile/desktop; server-side programming: databases, dynamic languages; web services; cloud technologies; security.
Three lectures; one term
Prerequisite(s): COMPSCI 2ME3 or SFWRENG 2AA4; completion of COMPSCI 2DB3 or 3DB3, 3IS3, or 3N03 or 4C03 is recommended.
Offered on an irregular basis.
COMPSCI 4X03Undergraduate |
Scientific Computation
|
|
|
More Info.
|
Computer arithmetic, stability, sensitivity. Numerical methods for polynomial manipulation, interpolation, data fitting, integration, differentiation, solving linear and non-linear systems, ordinary differential equations and eigenvalue problems.
Three lectures, one tutorial (one hour); second term
Prerequisite(s): MATH 1AA3 or 1ZB3, and MATH 1B03 or 1ZC3
Antirequisite(s): COMPENG 3SK3, 3SK4, SFWRENG 3X03, 4X03
Cross-list(s): SFWRENG 4X03
COMPSCI 4Z03Undergraduate |
Directed Readings
|
|
|
More Info.
|
Directed readings in an area of computer science of interest to the student and the instructor.
Prerequisite(s): Permission of the Chair of the Department and registration in Level IV of an Honours program in Computer Science
COMPSCI 4ZP6A/BUndergraduate |
Computer Science Capstone Project
|
|
|
More Info.
|
Students, in teams of two to four students, undertake a substantial project in an area of computer science by performing each step of the software life cycle. The lecture component presents an introduction to software management and project management.
Lecture component in term one, weekly tutorials; two terms
Prerequisite(s): Registration in Level IV of an Honours Computer Science program, Honours Business Informatics or Honours Computer Science as a Second Degree (B.A.Sc.)