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 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 2DM3Undergraduate |
Discrete Mathematics with Applications I
|
|
|
More Info.
|
Functions, relations and sets; the language of predicate logic, propositional logic; proof techniques, counting principles; induction and recursion, discrete probabilities, graphs, and their application to computing.
Three lectures, one tutorial (one hour); first term
Prerequisite(s): MATH 1ZC3 or MATH 1B03 or registration in the Honours Computer Science as a Second Degree Program
Antirequisite(s): COMPSCI 1FC3, SFWRENG 2DM3
Last offered 2020-2021.
COMPSCI 2FA3Undergraduate |
Discrete Mathematics with Applications II
|
|
|
More Info.
|
Predicate logic and formal proofs, grammars and automata, modular arithmetic, and their applications to computing.
Three lectures, one tutorial (one hour); second term
Prerequisite(s): COMPSCI 1FC3 or 2DM3
Antirequisite(s): SFWRENG 2FA3
Last offered 2020-2021.
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 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 2S03Undergraduate |
Principles of Programming
|
|
|
More Info.
|
Fundamental concepts of programming: expressions, statements, procedures, control structures, iteration, recursion, exceptions; precise memory model of traditional imperative programming languages; basic data structures: records, arrays, dynamic structures; use of libraries.
Three lectures, one tutorial (one hour); first term
Prerequisite(s): COMPSCI 1MD3 or ENGINEER 1D04 or MATH 1MP3 or IBEHS 1P10
Antirequisite(s): COMPENG 2SH4, 2SC3, SFWRENG 2MP3, 2S03
Last offered 2020-2021.
COMPSCI 2XA3Undergraduate |
Computer Science Practice and Experience: Software Development
|
|
|
More Info.
|
Unix and shell programming, makefiles, version control; assembly basics, translating high-level language into assembly, parameter passing, arrays, recursion; compiling, debugging, profiling, and software optimizations.
Two lectures, one lab (three hours per week), first term
Prerequisite(s): COMPSCI 1MD3 or ENGINEER 1D04 or IBEHS 1P10
Co-requisite(s): COMPSCI 2S03
Antirequisite(s): SFWRENG 2XA3
Last offered 2020-2021.
COMPSCI 2XB3Undergraduate |
Computer Science Practice and Experience: Binding Theory to Practice
|
|
|
More Info.
|
Open-ended design of computational solutions to practical problems that involve both theoretical (algorithmic) analysis and implementation; solving computational problems through an experiential approach.
Two lectures, one lab (three hours), second term
Prerequisite(s): COMPSCI 2S03, COMPSCI 2XA3
Co-requisite(s): COMPSCI 2C03, 2ME3
Antirequisite(s): SFWRENG 2XB3
Last offered 2020-2021.
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 3DB3Undergraduate |
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); first term
Prerequisite(s): COMPSCI 1FC3 or COMPSCI 2DM3
Antirequisite(s): COMPSCI 4DB3, SFWRENG 3DB3, 3H03, 4M03, 4DB3
Last offered 2021-2022.
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 3FP3Undergraduate |
Functional Programming
|
|
|
More Info.
|
Functional programming; lists and algebraic data types, pattern matching, parametric polymorphism, higher-order functions, reasoning about programs; lazy and strict evaluation; programming with monads; domain-specific languages.
Three lectures, one tutorial; one term
Prerequisite(s): COMPSCI 2DM3 or 2LC3, 2FA3 or 2AC3
Antirequisite(s): SFWRENG 3FP3
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 3I03Undergraduate |
Communication Skills
|
|
|
More Info.
|
Oral and written presentation skills; types and structure of technical documents; software documentation for the user; formulating and presenting proposals.
Three hours (lectures, discussion, group project, seminars); first term
Prerequisite(s): Registration in Level II or above of Honours Computer Science or Honours Business Informatics
Antirequisite(s): COMPSCI 2CS3, 2I03, SFWRENG 3I03
Cross-list(s): SFWRENG 3I03
Not open to students with credit or registration in ISCI 1A24 A/B.
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 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 3SD3Undergraduate |
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); first term
Prerequisite(s): COMPSCI 2C03, 2FA3, 2ME3
Antirequisite(s): SFWRENG 3BB4
Last offered 2021-2022.
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 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 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 A : Mechatronics, 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 / Technical Elective |
Syntax Based Tools and Compilers List D : Software Engineering and Society Technical Electives, List E: Software Engineering Technical Electives
|
|
|
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.)