Note: In order to find a course in the new 4 digit numbering system using an old 3 digit number, please refer to the conversion list below. Before registering for courses with the new 4 digit numbering system, please ensure that you have not previously taken the course in its 3 digit form.
Click here for conversion list of former 3-digit course numbers.
|
Computer Science
1025A/B -
Computer Science Fundamentals I
|
The nature of Computer Science as a discipline; the design and analysis of algorithms and their implementation as modular, reliable, well-documented programs written in an object-oriented language (Java). Intended for students with significant programming experience in at least one high-level block-structured or object-oriented language.
Prerequisite(s):
Corequisite(s):
Pre-or Corequisite(s):
Extra Information:
back to top |
|
Computer Science
1026A/B -
Computer Science Fundamentals I
|
The nature of Computer Science as a discipline; the design and analysis of algorithms and their implementation as modular, reliable, well-documented programs written in an object-oriented language (Java). Intended for students with little or no background in programming.
Prerequisite(s):
Corequisite(s):
Pre-or Corequisite(s):
Extra Information:
back to top |
|
Computer Science
1027A/B -
Computer Science Fundamentals II
|
A continuation for both Computer Science 1025A/B and Computer Science 1026A/B. Data organization and manipulation; abstract data types and their implementations in an object-oriented setting (Java); lists, stacks, queues, trees; pointers; recursion; file handling and storage.
Corequisite(s):
Pre-or Corequisite(s):
Extra Information:
back to top |
|
Computer Science
1032A/B -
Information Systems and Design
|
Techniques used for determining technological needs of businesses; building and managing systems to meet those needs; development roles of individuals and organizations; planning and management of concepts, personnel and processes; related software tools (spreadsheets, databases). Intended primarily for Management and Organizational Studies students.
Prerequisite(s):
Corequisite(s):
Pre-or Corequisite(s):
Extra Information:
back to top |
|
Computer Science
1033A/B -
Multimedia and Communication
|
This course explores the use of different types of media (e.g., text, images, sound, animation) to convey ideas and facilitate interaction. Topics include the design and use of a range of software tools for media creation and editing, covering image, sound, animation and video. This knowledge will be applied to authoring web sites.
Antirequisite(s):
All Computer Science courses numbered 2100 or higher, and all former Computer Science courses numbered 200 to 499.
Prerequisite(s):
Corequisite(s):
Pre-or Corequisite(s):
Extra Information:
back to top |
|
Computer Science
1037A/B -
Computer Science Fundamentals II
|
A continuation for Engineering Sceince 1036A/B and the former Computer Science 036a/b. Data organization and manipulation; abstract data types and their implementations in an object-oriented setting (C++); lists, stacks, queues, trees; pointers; recursion; file handling and storage. Intended for students in the Faculty of Engineering.
Corequisite(s):
Pre-or Corequisite(s):
Extra Information:
back to top |
|
Computer Science
2080A/B -
Computational Tools for Modeling Social Phenomena
|
A hands-on introduction to tools for the simulation of social phenomena from the early work of Herbert Simon to more recent work on agent-based social simulations, with particular emphasis on the way knowledge about social phenomena is represented in the simulations.
Antirequisite(s):
Prerequisite(s):
Registration in a Social Science module, or permission of the Department.
Corequisite(s):
Pre-or Corequisite(s):
Extra Information:
back to top |
|
Computer Science
2208A/B -
Fundamentals of Computer Organization
|
Computer architecture; data representations; hardware; memory management; instruction sets; exposure to an assembly language for a RISC machine; assembly and linking.
Antirequisite(s):
Corequisite(s):
Pre-or Corequisite(s):
Extra Information:
back to top |
|
Computer Science
2209A/B -
Applied Logic for Computer Science
|
Propositional and predicate logic; representing static and dynamic properties of real-world systems; logic as a tool for representation, reasoning and calculation; logic and programming.
Antirequisite(s):
Prerequisite(s):
Computer Science 1027A/B or 1037A/B, in each case with at least 65%, and one full course or equivalent chosen from the following, with at least 60% in each: Applied Mathematics 1413, Calculus 1000A/B, 1100A/B, 1201A/B, 1301A/B, 1501A/B, Linear Algebra 1600A/B, or permission of the Department.
Corequisite(s):
Pre-or Corequisite(s):
Extra Information:
back to top |
|
Computer Science
2210A/B -
Data Structures and Algorithms
|
Lists, stacks, queues, priority queues, trees, graphs, and their associated algorithms; file structures; sorting, searching, and hashing techniques; time and space complexity.
Corequisite(s):
Pre-or Corequisite(s):
Extra Information:
back to top |
|
Computer Science
2211A/B -
Software Tools and Systems Programming.
|
An introduction to software tools and systems programming. Topics include: understanding how programs execute (compilation, linking and loading); an introduction to a complex operating system (UNIX); scripting languages; the C programming language; system calls; memory management; libraries; multi-component program organization and builds; version control; debuggers and profilers.
Corequisite(s):
Pre-or Corequisite(s):
Extra Information:
back to top |
|
Computer Science
2212A/B/Y -
Introduction to Software Engineering
|
A team project course that provides practical experience in the software engineering field. Introduction to the structure and unique characteristics of large software systems, and concepts and techniques in the design, management and implementation of large software systems.
Corequisite(s):
Pre-or Corequisite(s):
Extra Information:
back to top |
|
Computer Science
3305A/B -
Operating Systems
|
Survey of major operating systems; interprocess communication; multi-tasking; scheduling; memory management; performance and measurement issues; trade-offs in operating system design; concurrency and deadlock.
Antirequisite(s):
Corequisite(s):
Pre-or Corequisite(s):
Extra Information:
back to top |
|
Computer Science
3307A/B/Y -
Object-Oriented Design and Analysis
|
Software design and analysis techniques with particular emphasis on object-oriented design and analysis; a team project will be developed using an object-oriented language such as Java, C++ or Smalltalk.
Corequisite(s):
Pre-or Corequisite(s):
Extra Information:
back to top |
|
Computer Science
3319A/B -
Databases I
|
A comparative study of hierarchical, network and relational databases. A survey of some commercially available database systems. Database standards; security and integrity, database administration; database design; concurrency control.
Corequisite(s):
Pre-or Corequisite(s):
Extra Information:
back to top |
|
Computer Science
3320A/B -
Numerical Computing I
|
Numerical representations and their impact on numerical computing; error analysis. Numerical algorithms; reliability and portability of mathematical software; review of existing packages.
Antirequisite(s):
Corequisite(s):
Pre-or Corequisite(s):
Extra Information:
back to top |
|
Computer Science
3325A/B -
Law in Computer Science
|
An examination of aspects of law and policy that relate to the creation, protection and implementation of software and hardware; attention is directed towards issues of current importance of which every computer scientist should be aware.
Antirequisite(s):
Corequisite(s):
Pre-or Corequisite(s):
Extra Information:
back to top |
|
Computer Science
3331A/B -
Foundations of Computer Science I
|
Languages as sets of strings over an alphabet; operations on languages; finite automata, regular expressions; language hierarchy; Turing machines; models of computation.
Antirequisite(s):
Corequisite(s):
Pre-or Corequisite(s):
Extra Information:
back to top |
|
Computer Science
3333A/B/Y -
Selected Topics
|
Special topics on the frontiers of Computer Science. The topic may vary each year.
Antirequisite(s):
Corequisite(s):
Pre-or Corequisite(s):
Extra Information:
back to top |
|
Computer Science
3334A/B/Y -
Selected Topics
|
Special topics on the frontiers of Computer Science. The topic may vary each year.
Antirequisite(s):
Corequisite(s):
Pre-or Corequisite(s):
Extra Information:
back to top |
|
Computer Science
3335A/B/Y -
Selected Topics
|
Special topics on the frontiers of Computer Science. The topic may vary each year.
Antirequisite(s):
Corequisite(s):
Pre-or Corequisite(s):
Extra Information:
back to top |
|
Computer Science
3336A/B/Y -
Selected Topics
|
Special topics on the frontiers of Computer Science. The topic may vary each year.
Antirequisite(s):
Corequisite(s):
Pre-or Corequisite(s):
Extra Information:
back to top |
|
Computer Science
3340A/B -
Analysis of Algorithms I
|
Upper and lower time and space bounds; levels of intractability; graph algorithms; greedy algorithms; dynamic algorithms; exhaustive search techniques; parallel algorithms.
Antirequisite(s):
Corequisite(s):
Pre-or Corequisite(s):
Extra Information:
back to top |
|
Computer Science
3342A/B -
Organization of Programming Languages
|
Specification and analysis of programming languages; data types and structures; bindings and access structures; run-time behavior of programs; compilation vs. interpretation. Comparative presentation of at least three programming languages addressing the above concepts.
Corequisite(s):
Pre-or Corequisite(s):
Extra Information:
back to top |
|
Computer Science
3346A/B -
Artificial Intelligence I
|
Introduction to Artificial Intelligence; logic programming; heuristic search; knowledge representation; expert systems.
Antirequisite(s):
Corequisite(s):
Pre-or Corequisite(s):
Extra Information:
back to top |
|
Computer Science
3350A/B -
Computer Architecture
|
Topics include: semiconductor technologies, gates and circuits, buses, semiconductor memories, peripheral interfaces, I/O techniques, A/D conversion, standards, RISC.
Corequisite(s):
Pre-or Corequisite(s):
Extra Information:
back to top |
|
Computer Science
3357A/B -
Computer Networks I
|
Common network protocols; inter-networking; gateways; routers; bridges; survey of commercial architectures; standards.
Corequisite(s):
Pre-or Corequisite(s):
Extra Information:
back to top |
|
Computer Science
3374A/B -
Design for Interactive Multimedia Learning
|
Theoretical and practical aspects related to human learning; how to design interactive multimedia technologies to support learning and knowledge construction; examination of various interactive multimedia learning environments; strategic approaches to educational multimedia design, and presentation design. Students design a scaled-down educational multimedia environment. Note: Same course as Media, Information and Technoculture 3606A/B.
Corequisite(s):
Pre-or Corequisite(s):
Extra Information:
back to top |
|
Computer Science
3377A/B -
Software Project Management
|
The software development life cycle; resourcing, scheduling and estimating techniques for software project management; project management organizational concerns, including project economic analysis, human resources, proposal development, risk management, software implementation, and technology-strategic alignment.
Corequisite(s):
Pre-or Corequisite(s):
Extra Information:
back to top |
|
Computer Science
3380F/G/Z -
Project
|
A supervised study involving a research paper, the design of or development of a software project.
Prerequisite(s):
Permission from the department, plus: Computer Science 2212A/B/Y and registration in the Specialization or Major in Computer Science. To be allowed into this course, the student must have found a topic and a willing departmental supervisor before the end of the add period.
Corequisite(s):
Pre-or Corequisite(s):
Extra Information:
back to top |
|
Computer Science
3388A/B -
Computer Graphics I
|
Graphics primitives. The viewing pipeline; clipping and visibility problems. The graphical kernel system; picture generation and user interfaces.
Antirequisite(s):
Corequisite(s):
Pre-or Corequisite(s):
Extra Information:
back to top |
|
Computer Science
4402A/B -
Distributed and Parallel Systems
|
Issues arising in distributed and parallel systems and applications; related architectures such as connection machines, shared memory multiprocessors.
Corequisite(s):
Pre-or Corequisite(s):
Extra Information:
back to top |
|
Computer Science
4411A/B -
Databases II
|
A selection from the following topics: dependency theory; object-oriented databases; distributed databases and related algorithms; database hardware; information retrieval.
Antirequisite(s):
Corequisite(s):
Pre-or Corequisite(s):
Extra Information:
back to top |
|
Computer Science
4412A/B -
Data Mining and its Applications
|
Databases and data warehouses; on-line analytic processing (OLAP); applications of data mining in business intelligence, e-business, and bioinformatics; various inductive learning algorithms; clustering and learning associations; solving real-world problems with data mining.
Antirequisite(s):
Corequisite(s):
Pre-or Corequisite(s):
Extra Information:
back to top |
|
Computer Science
4413A/B -
Cryptography and Security
|
Survey of the principles and practice of cryptography and network security: classical cryptography, public-key cryptography and cryptographic protocols, network and system security.
Antirequisite(s):
Corequisite(s):
Pre-or Corequisite(s):
Extra Information:
back to top |
|
Computer Science
4424A/B -
Foundations of Computer Algebra
|
Introduction to computer algebra, algorithms and data structures for integer and polynomial arithmetic, symbolic differentiation and integration, type systems for computer algebra, mathematical communication, software systems including Maple and MathML.
Antirequisite(s):
The former Computer Science 422a/b.
Prerequisite(s):
Registration in the fourth year of a module in Computer Science or in one of the Mathematical Sciences.
Corequisite(s):
Pre-or Corequisite(s):
Extra Information:
back to top |
|
Computer Science
4432A/B -
Foundations of Computer Science II
|
Formal languages; recursive functions; abstract complexity; automaton models; array machines; systolic systems; cellular automata.
Antirequisite(s):
Corequisite(s):
Pre-or Corequisite(s):
Extra Information:
back to top |
|
Computer Science
4433A/B/Y -
Selected Topics
|
Advanced Computer Science topics, reflecting current research interests within the Department. The particular topics will be available from the Department prior to registration.
Antirequisite(s):
Corequisite(s):
Pre-or Corequisite(s):
Extra Information:
back to top |
|
Computer Science
4434A/B/Y -
Selected Topics
|
Advanced Computer Science topics, reflecting current research interests within the Department. The particular topics will be available from the Department prior to registration.
Antirequisite(s):
Corequisite(s):
Pre-or Corequisite(s):
Extra Information:
back to top |
|
Computer Science
4435A/B/Y -
Selected Topics
|
Advanced Computer Science topics, reflecting current research interests within the Department. The particular topics will be available from the Department prior to registration.
Antirequisite(s):
Corequisite(s):
Pre-or Corequisite(s):
Extra Information:
back to top |
|
Computer Science
4436A/B/Y -
Selected Topics
|
Computer Science topics, reflecting current research interests within the Department. The particular topics will be available from the Department prior to registration.
Antirequisite(s):
Corequisite(s):
Pre-or Corequisite(s):
Extra Information:
back to top |
|
Computer Science
4437A/B/Y -
Selected Topics
|
Advanced Computer Science topics, reflecting current research interests within the Department. The particular topics will be available from the Department prior to registration.
Antirequisite(s):
Corequisite(s):
Pre-or Corequisite(s):
Extra Information:
back to top |
|
Computer Science
4438A/B/Y -
Selected Topics
|
Advanced Computer Science topics, reflecting current research interests within the Department. The particular topics will be available from the Department prior to registration.
Antirequisite(s):
Corequisite(s):
Pre-or Corequisite(s):
Extra Information:
back to top |
|
Computer Science
4442A/B -
Artificial Intelligence II
|
A selection from: first order logic and theorem proving; computational linguistics; computer vision; robotics; knowledge acquisition; machine learning.
Antirequisite(s):
Corequisite(s):
Pre-or Corequisite(s):
Extra Information:
back to top |
|
Computer Science
4444A/B -
Semantics of Programming Languages
|
Operational, denotational, and axiomatic semantics; lambda-calculus.
Antirequisite(s):
Corequisite(s):
Pre-or Corequisite(s):
Extra Information:
back to top |
|
Computer Science
4445A/B -
Analysis of Algorithms II
|
Parallel, distributed, probabilistic, and geometric algorithms; design and analysis; computational geometry; fractals and graphtals.
Antirequisite(s):
Corequisite(s):
Pre-or Corequisite(s):
Extra Information:
back to top |
|
Computer Science
4447A/B -
Compiler Theory
|
Syntax-directed translation; LR(k), LL(k), attribute grammars; code generation; optimization; compiler compilers; code generator generators.
Antirequisite(s):
Corequisite(s):
Pre-or Corequisite(s):
Extra Information:
back to top |
|
Computer Science
4457A/B/Y -
Computer Networks II
|
Network layering, performance, management, modelling and simulation; faults and failures.
Antirequisite(s):
Corequisite(s):
Pre-or Corequisite(s):
Extra Information:
back to top |
|
Computer Science
4460Z -
Bioinformatics Thesis
|
A project or research paper in an area related to bioinformatics, completed under faculty supervision. An oral presentation plus a written submission will be required.
Corequisite(s):
Pre-or Corequisite(s):
Extra Information:
back to top |
|
Computer Science
4461A/B -
Bioinformatics Tools and Applications
|
Introduction to popular bioinformatics software tools and their applications in solving complex biological problems; analysis of the algorithms behind bioinformatics tools.
Corequisite(s):
Pre-or Corequisite(s):
Extra Information:
back to top |
|
Computer Science
4462A/B -
DNA Computing
|
Biomolecular (DNA) computing is a computation paradigm that proposes the use of molecular biology tools to solve mathematical and computational problems. Ways of encoding information in DNA sequences; molecular procedures used for computation; classes of problems solvable by DNA computing; feasibility and advantages of a DNA computer.
Antirequisite(s):
Corequisite(s):
Pre-or Corequisite(s):
Extra Information:
back to top |
|
Computer Science
4463A/B -
Computational Biology
|
Bioinformatics studies biological problems using biological, computational, and mathematical methods. Computational biology studies computational techniques that can solve biological problems efficiently. This course emphasizes the design, analysis and implementation of algorithms for problems motivated from molecular biology research.
Antirequisite(s):
Corequisite(s):
Pre-or Corequisite(s):
Extra Information:
back to top |
|
Computer Science
4470Y -
Software Maintenance and Configuration Management
|
An examination of industrial-style software development issues related to managing and maintaining large-scale software systems; in a group project, students will examine software maintenance and configuration management concepts, tools, techniques, risks and benefits; case studies.
Corequisite(s):
Pre-or Corequisite(s):
Extra Information:
back to top |
|
Computer Science
4471A/B -
Software Design and Architecture
|
Introduction to advanced software design concepts; architectures of complex software systems; domain-independent design patterns; creation of a functional partitioning for a novel domain; recognition of common architectural idioms.
Antirequisite(s):
Corequisite(s):
Pre-or Corequisite(s):
Extra Information:
back to top |
|
Computer Science
4472A/B -
Specification, Testing and Quality Assurance
|
Concepts and state of the art techniques in software specification and quality assessment for software engineering; quality attributes; formal specification and analysis; verification and validation.
Corequisite(s):
Pre-or Corequisite(s):
Extra Information:
back to top |
|
Computer Science
4473A/B -
Requirement Analysis
|
The development of requirements for software-intensive systems through successful requirements analysis techniques and requirements engineering; an in-depth study of methods, tools, notations, and validation techniques for the analysis and specification of software requirements.
Corequisite(s):
Pre-or Corequisite(s):
Extra Information:
back to top |
|
Computer Science
4474A/B -
Human-Computer Interaction
|
Exposure to topics in human-computer interaction, including: frameworks for human-computer interaction; requirements gathering; rapid prototyping; user interface systems and tool kits.
Corequisite(s):
Pre-or Corequisite(s):
Extra Information:
back to top |
|
Computer Science
4480Y -
Game Development Project
|
Industrial-style development issues related to the creation of games of commercial scale and quality, both for entertainment and serious game applications; in a group project, students will examine concepts, theories, tools, technologies, and techniques for code and content generation for modern games.
Antirequisite(s):
Prerequisite(s):
Corequisite(s):
Pre-or Corequisite(s):
Extra Information:
back to top |
|
Computer Science
4481A/B -
Image Compression
|
Dealing with digital pictures (images) requires far more computer memory and transmission time than is needed for plain text. This course provides students with a solid understanding of the fundamentals and the principles of various digital still-image compression schemes.
Antirequisite(s):
Corequisite(s):
Pre-or Corequisite(s):
Extra Information:
back to top |
|
Computer Science
4482A/B -
Game Engine Development
|
Core concepts and techniques of real-time rendering and physical simulation as applied to the development of interactive game and simulation software. Topics from: real-time programming, indoor and outdoor rendering algorithms, character animation, vertex and pixel shaders, shading models, real-time shadows, procedural methods, simulation of classical mechanics, numerical integration, threaded programming.
Antirequisite(s):
The former Computer Science 438a if taken in Winter 2005.
Corequisite(s):
Pre-or Corequisite(s):
Extra Information:
back to top |
|
Computer Science
4483A/B -
Game Design
|
Concepts and issues that arise in the development of games for entertainment and serious game applications, focusing on providing players with more engaging, immersive, and rewarding gameplay experiences. Group project normally required.
Antirequisite(s):
The former Computer Science 437b if taken in Winter 2003, 2004 or 2005.
Corequisite(s):
Pre-or Corequisite(s):
Extra Information:
back to top |
|
Computer Science
4487A/B -
Algorithms for Image Analysis
|
Fundamental concepts in computer and robot vision, medical image analysis, photo/video editing and graphics; problems such as image segmentation, registration, correspondence, matching, object recognition, tracking, stereo, texture synthesis; gradient descent, dynamic programming, graph-based optimization, techniques from computational geometry.
Antirequisite(s):
The former Computer Science 433b if taken in Winter 2004; the former Computer Science 433a if taken in Winter 2005, 2006 or 2007
Corequisite(s):
Pre-or Corequisite(s):
Extra Information:
back to top |
|
Computer Science
4488A/B -
Computer Graphics II
|
Geometric modelling; boundary and solid representations; spline curves and surfaces. Principles of animation, illumination and rendering.
Antirequisite(s):
Corequisite(s):
Pre-or Corequisite(s):
Extra Information:
back to top |
|
Computer Science
4490Z -
Thesis
|
A project or research paper completed with minimal faculty supervision. An oral presentation plus a written submission will be required.
Corequisite(s):
Pre-or Corequisite(s):
Extra Information:
back to top |
|