Site Navigation

Computer Science CPSC

Instruction offered by members of the Department of Computer Science in the Faculty of Science

Department Head - K. Barker

Note: Computer Science students should also see courses listed under Software Engineering.

Note: Computer Science 217, 231 and 235 are each introductions to computer science that include a substantial introduction to programming and that are available for credit for Computer Science majors. Students interested in these courses should consult the department and program information for the Department of Computer Science when choosing which course to take.

Note: In several cases, credit is not allowed for Computer Science courses and various courses offered by the Faculty of Engineering. Students who have successfully completed Engineering courses should contact the Department of Computer Science for additional information.

Computer Science 101 E(6 hours)

(formerly Computer Science 001)

Introduction to Unix

An introduction to the Unix operating system, including the text editor "emacs," its programming modes and macros; shell usage (including "sh" and "tcsh"); and some advanced Unix commands.

Note: This course is highly recommended as preparation for Computer Science 217 or 231 or 235.

NOT INCLUDED IN GPA

(Return to Top)

Computer Science 102 Q(12 hours)

(formerly Computer Science 002)

Advanced Unix

Unix signals, processes, and file system; interprocess communication; advanced shell programming; program profiling.

Prerequisites: Computer Science 219 or 233 or 235.

Note: This course is highly recommended as preparation for students entering the second year of a computer science program.

NOT INCLUDED IN GPA

(Return to Top)

Junior Courses

Computer Science 203 H(3-2T-1)

Introduction to Computers

Computer system fundamentals, personal computer applications software, and computer communications both on campus and using the internet. Students will use personal computers to complete assignments in word processing, spreadsheet analysis, database management and other applications.

Note: This course is not available for credit for Computer Science majors.

(Return to Top)

Computer Science 217 H(3-2T-1)

Introduction to Computer Science for Multidisciplinary Studies I

Introduction to problem solving, analysis and design of small-scale computational systems and implementation using a procedural programming language. For students wishing to combine studies in computer science with studies in other disciplines.

Note: Credit for both Computer Science 217 and any of 215, 231, 235 or Computer Engineering 339 will not be allowed.

Note: Computer Science 101 is strongly recommended.

Note: See the statements at the beginning of the Computer Science entry.

(Return to Top)

Computer Science 219 H(4-2T-1)

Introduction to Computer Science for Multidisciplinary Studies II

Continuation of Introduction to Computer Science for Multidisciplinary Studies I. Emphasis on object oriented analysis and design of small-scale computational systems and implementation using an object oriented language. Issues of design, modularization and programming style will be emphasized.

Prerequisites: Computer Science 217.

Note: Credit for both Computer Science 219 and any of 233, 235, Electrical Engineering 497 or Computer Engineering 493 will not be allowed.

(Return to Top)

Computer Science 231 H(3-2T-1)

Introduction to Computer Science for Computer Science Majors I

Introduction to problem solving, the analysis and design of small-scale computational systems, and implementation using a procedural programming language. For computer science majors.

Note: Credit for both Computer Science 231 and any of 215, 217, 235 or Computer Engineering 339 will not be allowed.

Note: Computer Science 101 is strongly recommended.

Note: See the statements at the beginning of the Computer Science entry.

(Return to Top)

Computer Science 233 H(3-2T-1)

Introduction to Computer Science for Computer Science Majors II

Continuation of Introduction to Computer Science for Computer Science Majors I. Emphasis on object-oriented analysis and design of small-scale computational systems and implementation using an object oriented language. Issues of design, modularization, and programming style will be emphasized.

Prerequisites: Computer Science 231.

Note: Credit for both Computer Science 233 and any of 219, 235, Electrical Engineering 497 or Computer Engineering 493 will not be allowed.

(Return to Top)

Computer Science 235 H(3-2T-2)

Advanced Introduction to Computer Science

An accelerated introduction to problem solving, the analysis and design of small-scale computational systems and implementation using both procedural and object oriented programming languages. Issues of design, modularization, and programming style will be emphasized.

Prerequisites: Consent of the Department.

Note: Credit for both Computer Science 235 and any of 215, 217, 219, 231, 233, Computer Engineering 339 or 493 will not be allowed.

Note: Computer Science 101 is strongly recommended.

Note: See the statements at the beginning of the Computer Science entry.

Note: Limited to highly qualified students.

(Return to Top)

Computer Science 265 H(3-2T-1)

Computer Architecture and Low-Level Programming

Organization and operation of the functional units in a stored program computer, internal data representation and programming at the architectural level establishing the link between high level language programming and machine operation.

Prerequisites: Computer Science 219 or 231 or 235.

Note: Credit for both Computer Science 265 and either 355 or Computer Engineering 369 will not be allowed.

(Return to Top)

Senior Courses

Computer Science 301 H(3-2T-1)

Large-Scale Software Development

An accelerated introduction to developing large-scale, quality software. Analysis, design, implementation and testing. Process, management and teamwork. Covers both individual and team skills.

Prerequisites: Computer Science 331 and Consent of the Department.

Corequisites: One of Philosophy 249, 329, 349, Business and Environment 561, or Engineering 513.

Note: Credit for both Computer Science 301 and any of Computer Science 333 or 451, Software Engineering 301, 311, 403 or 411, or Management Information Systems 333 will not be allowed.

Note: Limited to highly qualified students.

(Return to Top)

Computer Science 313 H(3-2T)

Introduction to Computability

An introduction to abstract models of sequential computation, including finite automata, regular expressions, context-free grammars, and Turing machines. Formal languages, including regular, context-free, and recursive languages, methods for classifying languages according to these types, and relationships among these classes.

Prerequisites: Mathematics, 271 or 273, one of Philosophy 279 or 377, and one of Computer Science 219, 233 or 235.

(Return to Top)

Computer Science 325 H(3-2T-1)

Hardware/ Software Interface

Boolean algebra. Combinational circuits. Sequential logic. Computer organization. Data exchange. Interrupts and asynchronous programming. Real time programming. DMA. I/O Ports. Software implementation of protocols.

Prerequisites: One of Computer Science 265 or 355 and one of Philosophy 279 or 377.

Note: Credit for both Computer Science 325 and any of 455 or Computer Engineering 415 will not be allowed. .

(Return to Top)

Computer Science 331 H(3-2T-1)

Information Structures I

Algorithms: searching, sorting, graph navigation. Data structures: arrays, lists, stacks, queues, graphs, trees, hash tables; time and space efficiency of associated algorithms.

Prerequisites: One of Computer Science 219, 233 or 235 or Computer Engineering 339.

Corequisites: Mathematics 271 or 273.

(Return to Top)

Computer Science 335 H(3-2T-1)

Information Structures II

A continuation of Computer Science 331. Collision resolution in hash tables, search algorithms, advanced tree structures, strings. Advanced algorithmic tools for storing and manipulating information.

Prerequisites: Computer Science 331.

(Return to Top)

Computer Science 349 H(3-2T-1)

Programming Paradigms

Examination of the basic principles of the major programming language paradigms. Focus on declarative paradigms as functional and logic programming. Data types, control expressions, loops, types of references, lazy evaluation, different interpretation principles, information hiding.

Prerequisites: Computer Science 331 and one of Philosophy 279 or 377.

Note: The prerequisite of Philosophy 279 or 377 is waived for Engineering students in the Software Engineering program.

(Return to Top)

Computer Science 401 H(3-2T)

Computer Structure I

Technology of memories, processors and peripherals. Architecture of computer systems. Discussion and comparison of several modern machines.

Prerequisites: Computer Science 325 or both 321 and 455.

Corequisites: Computer Science 457.

(Return to Top)

Computer Science 409 H(3-0)

History of Computation

The history of computation from the earliest times to the modern era.

Prerequisites: Computer Science 313.

(Return to Top)

Computer Science 411 H(3-2T)

Compiler Construction I

Introduction to compilers, interpreters, and the tools for parsing and translation. Lexical analysis, context free grammars and software tools for their recognition. Attribute grammars and their applications in translation and compiling.

Prerequisites: Computer Science 331.

Note: Computer Science 313 is strongly recommended.

(Return to Top)

Computer Science 413 H(3-2T)

Design and Analysis of Algorithms I

Techniques for the analysis of algorithms, including counting, summation, recurrences, and asymptotic relations; techniques for the design of efficient algorithms, including greedy methods, divide and conquer, and dynamic programming; examples of their application; an introduction to tractable and intractable problems.

Prerequisites: Computer Science 313, 331, and one of Mathematics 249, 251, 261 or 281.

Note: One of Mathematics 253, 263 or 283 is highly recommended but not mandatory.

(Return to Top)

Computer Science 425 H(3-2T)

Logic Design and Embedded Systems

I/O device design and programming. Design of logic systems. Logic design using hardware description language. Interface protocols and implementation in hardware and firmware.

Prerequisites: Computer Science 325.

Note: Credit for both Computer Science 425 and either 421 or 525 will not be allowed.

(Return to Top)

Computer Science 429 H(3-2T)

Applied Cryptography

Primitives for applied cryptographic applications, including hash functions, pseudorandom number generation, provably secure cryptography, authentication protocols, public-key infrastructure, and other topics of current interest; systems and protocols for providing security services that may include secure remote login, secure email, virtual private networks, and web security.

Prerequisites: Pure Mathematics 329.

Corequisites: Computer Science 441.

Note: Credit for both Computer Science 429 and 557 will not be allowed.

(Return to Top)

Computer Science 433 H(3-2T)

Artificial Intelligence

An examination of the objectives, key techniques and achievements of work on artificial intelligence in Computer Science.

Prerequisites: Computer Science 313 and one of 349 or 449.

(Return to Top)

Computer Science 441 H(3-2T)

Computer Communications

Principles and practice in modern telecommunications, computer communications and networks. Layered communication protocols and current physical, data link, network and internet protocol layers. Circuit switching, packet switching, and an introduction to broadband multimedia networking.

Prerequisites: Computer Science 331 and one of 325, 455 or Computer Engineering 369.

(Return to Top)

Computer Science 453 H(3-2T-1)

Introduction to Computer Graphics

Introduction to computer graphics. Principles of raster image generation. Example of a graphics API. Graphics primitives. Coordinate systems, affine transformations and viewing of graphical objects. Introduction to rendering including shading models and ray tracing. Introduction to modelling including polygon meshes, subdivision, and parametric curves and surfaces.

Prerequisites: Computer Science 331, Mathematics 211 or 221, and one of Mathematics 253, 263, 283 or Applied Mathematics 219.

Note: Credit for both Computer Science 453 and either 407 or Electrical Engineering 555 will not be allowed.

(Return to Top)

Computer Science 457 H(3-2T-1)

Principles of Operating Systems

An introduction to operating systems principles. Performance measurement; concurrent programs; the management of information, memory and processor resources.

Prerequisites: Computer Science 331 and one of 325 or 455.

Note: Computer Science 325 and 455 is waived as a prerequisite for students concurrently enrolled in Computer Engineering 415, 417, or Software Engineering for Engineers 413.

(Return to Top)

Computer Science 461 H(3-2T-1)

Information Structures III

File architecture and manipulation techniques for various file types. Physical characteristics of current mass storage devices. Advanced data structures and algorithms for implementing various sequential and hierarchical file structures. File organization and design for various applications, file systems and other storage management techniques including web site design.

Prerequisites: Computer Science 331 and one of 265 or 355.

(Return to Top)

Computer Science 471 H(3-2T-1)

Data Base Management Systems

Conceptual, internal and external data bases. Relational data base systems and SQL. The normal forms, data base design, and the entity-relationship approach.

Prerequisites: Computer Science 331.

Note: Credit for both Computer Science 471 and Management Information Systems 331 will not be allowed.

(Return to Top)

Computer Science 481 H(3-2T)

Human-Computer Interaction I

Fundamental theory and practice of the design, implementation, and evaluation of human-computer interfaces. Topics include: principles of design; methods for evaluating interfaces with or without user involvement; techniques for prototyping and implementing graphical user interfaces.

Prerequisites: One of Computer Science 301, 333, Software Engineering 301 or 311.

(Return to Top)

Computer Science 491 H(3-2T)

Techniques for Numerical Computation

Elementary techniques for the numerical solution of mathematical problems on a computer, including methods for solving linear and non-linear equations, numerical integration, and interpolation.

Prerequisites: Computer Science 331, and one of Mathematics 249, 251, 261, 281, or Applied Mathematics 217.

Note: Not open to students with credit in Applied Mathematics 491 or 493.

(Return to Top)

Computer Science 501 H(3-2T)

Advanced Programming Techniques

Theory and application of advanced programming methods and tools. Recent issues as well as those of an enduring nature will be discussed.

Corequisites: Computer Science 457.

(Return to Top)

Computer Science 502 F(1-5)

Research Project

A substantial research project under the guidance of a faculty member. A report must be written and presented on completion of the course.
502.01. Research Project in Computer Science
502.02. Research Project in Algorithms and Complexity Theory
502.03. Research Project in Computer Graphics
502.04. Research Project in Information Security
502.05. Research Project in Scientific Computation
502.06. Research Project in Software Engineering

Prerequisites: Consent of the Department.

Note: Credit for both Computer Science 502 and any of 503, Software Engineering for Engineers 599 or 591 will not be allowed.

Note: Students intending to complete a research project in a specific area of computer science should register in the version of Computer Science 502 corresponding to that area, if such a course is available. Other students should register in Computer Science 502.01.

Note: Permission to register in Computer Science 502 is generally given only to students with a minimum GPA of 3.30 over the last 15 FCE.

Note: When demand exceeds capacity, registration in Computer Science 502 is limited to students in Honours programs in Computer Science.

(Return to Top)

Computer Science 503 H(1-5)

Project

A research project conducted under the guidance of a faculty member. A report must be presented on completion of the course.

Prerequisites: Consent of the Department.

Note: Credit for both Computer Science 503 and either 502 or Software Engineering for Engineers 599 will not be allowed.

(Return to Top)

Computer Science 510 F(3-2T)

Compiler Construction II

Theory and implementation of assemblers, compilers, and interpreters. Projects will include the writing of substantial segments of such programs.

Prerequisites: Computer Science 313, 411 and one of 265 or 355.

Note: Includes a research, writing and presentation component.

Note: Lectures may run concurrently with Computer Science 610.

(Return to Top)

Computer Science 511 H(3-1T)

Introduction to Complexity Theory

Time and space complexity; the classes P, LOGSPACE, PSPACE and their nondeterministic counterparts; containments and separations between complexity classes; intractability and the theory of NP-completeness; complexity theories for probabilistic algorithms and for parallel algorithms.

Prerequisites: Computer Science 413.

Note: Lectures may run concurrently with Computer Science 611.

(Return to Top)

Computer Science 513 H(3-1T)

Computability

Computable functions; decidable and undecidable problems; Church's thesis and recursive functions.

Prerequisites: Computer Science 313.

(Return to Top)

Computer Science 517 H(3-2T)

Design and Analysis of Algorithms II

Advanced techniques for the design and analysis of deterministic and probabilistic algorithms; techniques for deriving lower bounds on the complexity of problems.

Prerequisites: Computer Science 413.

(Return to Top)

Computer Science 518 H(3-2T)

Introduction to Computer Algebra

Fundamental problems, classical and modern algorithms, and algorithm design and analysis techniques of use in computer algebra. Integer and polynomial arithmetic. Additional problems in computer algebra, possibly including problems in computational linear algebra, factorization, and concerning systems of polynomial equations will be considered as time permits.

Prerequisites: Computer Science 413 and Mathematics 211 or 221.

Note: Lectures may run concurrently with Computer Science 667.

Note: Computer Science 491 and Pure Mathematics 431 are recommended as preparation for this course.

(Return to Top)

Computer Science 519 H(3-1T)

Introduction to Quantum Computation

Quantum information, quantum algorithms including Shor's quantum factoring algorithm and Grover's quantum searching technique, quantum error correcting codes, quantum cryptography, nonlocality and quantum communication complexity, and quantum computational complexity.

Prerequisites: Computer Science 413 and Mathematics 311.

Note: Lectures may run concurrently with Computer Science 619.

(Return to Top)

Computer Science 521 H(3-2T-1)

(formerly Computer Science 417)

Foundations of Functional Programming

Theoretical foundations of functional programming: the lambda-calculus, beta-reduction, confluence, and reduction strategies. Programming syntax: solving recursive equations with the Y-combinator, let and letrec, types, datatypes, and patterns. Programming in a functional language: recursion patterns, useful combinators, maps, and folds, for datatypes. Example applications: recursive descent parsing, unification, combinatorial algorithms, theorem proving.

Prerequisites: Computer Science 313 and one of Computer Science 349 or 449.

(Return to Top)

Computer Science 523 H(3-2T)

Computer Structure II

Continuation of Computer Science 401.

Prerequisites: Computer Science 401.

(Return to Top)

Computer Science 527 H(3-1T/2)

(formerly Computer Science 599.48)

Computer Viruses and Malware

Study of computer viruses, worms, Trojan horses, and other forms of malicious software. Countermeasures to malicious software. Legal and ethical issues, and some general computer and network security issues.

Prerequisites: Computer Science 313, 457 and consent of the Department.

Note: Lectures may run concurrently with Computer Science 627.

(Return to Top)

Computer Science 528 H(3-1T/2)

(formerly Computer Science 599.63)

Spam and Spyware

Study of spam and other forms of unsolicited bulk electronic communication, and spyware. Legal and ethical issues, and tie-ins to other fields like business and economics. Spam and spyware countermeasures, and related security problems.

Prerequisites: Computer Science 313, 457 and consent of the Department.

Note: Lectures may run concurrently with Computer Science 628.

(Return to Top)

Computer Science 529 H(3-2T)

Information and Network Security

Technical controls designed to provide information and network security. Topics may include firewalls and intrusion detection, database security, access control, computer forensics, honeynets, and other security-related topics of current relevance.

Prerequisites: Computer Science 429 and one of Philosophy 329 or Business and Environment 561.

Corequisites: Computer Science 457.

(Return to Top)

Computer Science 531 H(3-2T)

Systems Modelling and Simulation

An introduction to the modelling and simulation of stochastic systems; programming language issues; model and tool design; input data modelling; simulation experiments; and the interpretation of simulation results.

Prerequisites: Computer Science 457.

(Return to Top)

Computer Science 535 H(3-2T)

Introduction to Image Analysis and Computer Vision

Standard methods used in the analysis of digital images. Image acquisition and display: visual perception; digital representation. Sampling and enhancement. Feature extraction and classification methods. Object recognition.

Prerequisites: One of Mathematics 311, 331, 353, Applied Mathematics 307, 311, or Pure Mathematics 331, or consent of the Department.

Note: Lectures may run concurrently with Computer Science 635.

(Return to Top)

Computer Science 550 F(2-1T-3)

Systems Administration

Topics and practices in systems administration and management. Required and optional administration duties and responsibilities. Moral and ethical conundrums, and legal responsibilities, in systems operation. Configuration and installation of operating systems and network and systems services.

Prerequisites: Computer Science 457 and consent of the Department.

(Return to Top)

Computer Science 559 H(3-2T)

Introduction to Distributed Systems

Essential issues in modern distributed systems. Network topologies, communication schemes and distributed system structures. Distributed file systems and distributed coordination problems. Open systems architectures and dejure/default standard methodologies will be discussed, and reliability and system performance issues will also be introduced.

Prerequisites: Computer Science 457.

(Return to Top)

Computer Science 561 H(3-2T)

Introduction to Distributed Algorithms

Basic problems in distributed systems such as symmetry breaking, consensus, resource allocation, and synchronization. The impact of system characteristics, such as models of communication, timing and failure, and of solution requirements, such as correctness and complexity criteria and algorithmic constraints, on the computability and complexity of these problems. Techniques for solving problems under different models will be emphasized.

Prerequisites: Computer Science 413.

Note: Lectures may run concurrently with Computer Science 661.

(Return to Top)

Computer Science 565 H(3-1T)

Emergent Computing

An insight into a new mindset for programming as an emergent and evolutionary process of "breeding," rather than constructing. Programs can evolve to perform specific tasks in a bottom-up fashion rather than being manually coded. Topics will include: decentralized agent-based programming, massive parallelism and interaction, evolution, swarm intelligence.

Prerequisites: Computer Science 433 or 533.

Note: Offered in even-odd dated academic years.

(Return to Top)

Computer Science 567 H(3-1T)

Foundations of Multi-Agent Systems

Modelling of agents and properties of multi-agent systems. Communication issues, including interaction and coordination concepts, forming and maintaining organizations, and competitive agent environments. Example systems; the implementation of a multi-agent system will be performed as the assignment.

Prerequisites: Computer Science 457 and one of 433 or 533.

Note: Offered in odd-even dated academic years.

Note: Lectures may run concurrently with Computer Science 609.

(Return to Top)

Computer Science 571 H(3-2T)

Design and Implementation of Database Systems

Implementation and design of modern database systems including query modification/optimization, recovery, concurrency, integrity, and distribution.

Prerequisites: Computer Science 461 and 471.

(Return to Top)

Computer Science 581 H(3-2)

Human-Computer Interaction II

Interaction Design. Advanced topics and applications in human computer interaction, with emphasis on developing skills for designing highly interactive human-computer interfaces.

Prerequisites: Computer Science 481 and consent of the Department.

(Return to Top)

Computer Science 585 H(3-2)

Games Programming

Standard techniques for the implementation of computer games. Standard multimedia programming environments and high performance multimedia. Special purpose rendering engines. Interactive control and feedback; modelling.

Prerequisites: Computer Science 453 and consent of the Department.

(Return to Top)

Computer Science 587 H(3-2T)

Fundamentals of Computer Animation

Principles of traditional animation, key framing, parametric and track animation, free form deformation, inverse kinematics, dynamics, spring mass systems, particle systems, numerical integration, Lagrangian constraints, space time constraints, collisions, human animation, behavioural animation, metamorphosis, implicit animation techniques, animating liquids, gases and cloth, motion capture.

Prerequisites: Computer Science 453.

Note: Lectures may run concurrently with Computer Science 687.

(Return to Top)

Computer Science 589 H(3-2T)

Modelling for Computer Graphics

Parametric Modelling. B-splines and NURBS. Subdivision schemes. Surface subdivision. Multiresolution. Wavelets. Implicit modelling. Blends. Polygonization. Blobtree. Precise contact modelling. Solid modelling. CSG. Procedural modelling. Special topics, e.g. Differential geometry. Graph based modelling. Topology.

Prerequisites: Computer Science 453.

Note: Lectures may run concurrently with Computer Science 689.

(Return to Top)

Computer Science 591 H(3-2T)

Rendering

Physical foundations of illuminations techniques. Color. Radiometry and photometry. Reflection models. The rendering equation. Ray tracing. Monte Carlo techniques. Sampling and antialiasing. Texturing. Radiosity. Photon tracing. Volume rendering. Image-based rendering. Real-time shading.

Prerequisites: Computer Science 453.

Note: Lectures may run concurrently with Computer Science 691.

(Return to Top)

Computer Science 594 F(1-5)

Software Engineering Project

A software engineering project conducted under the guidance of a faculty member.

Prerequisites: Consent of the Department.

Note: Includes a research, writing and presentation component.

(Return to Top)

Computer Science 598 F(3-0)

Special Topics in Computer Science

New areas in Computer Science. This full course will be offered only as required. Before registration consult the Head of the Department of Computer Science for topics offered.

Prerequisites: Consent of the Department.

MAY BE REPEATED FOR CREDIT

(Return to Top)

Computer Science 599 H(3-0)

Special Topics in Computer Science

New areas in Computer Science. This course will be offered only as required. Before registration consult the Head of the Department of Computer Science for topics offered.

Prerequisites: Consent of the Department.

MAY BE REPEATED FOR CREDIT

(Return to Top)

Graduate Courses

Note: Registration in all courses requires the approval of the Department of Computer Science. Computer Science students should also see courses listed under Software Engineering.

Computer Science 601 H(3-0)

Special Topics in Computer Science

A study of problems of particular interest to graduate students in Computer Science.

MAY BE REPEATED FOR CREDIT

(Return to Top)

Computer Science 605 H(3-0)

(Medical Science 605)

Information Storage and Processing in Biological Systems

Examination of complex biological systems; concepts and fundamentals of biological solutions to information storage and processing; modelling and computer simulation of biological systems; information storage in biological molecules; genetic networks; hierarchical organization of biological information processing in signal transduction, development, evolution, and ecology; biological control systems.

(Return to Top)

Computer Science 607 H(3-0)

Biological Computation

Examination and modelling of biological networks; focus on the latest developments in biological computing and their theoretical backgrounds, such as: DNA computing; genomic algorithms; artificial chemistries; complex adaptive systems, chaos and fractals; immune system computing; gene regulatory networks; swarm intelligence systems.

(Return to Top)

Computer Science 609 H(3-0)

Foundations of Multi-Agent Systems

Modelling of agents and properties of multi-agent systems. Communication issues, including interaction and coordination concepts, forming and maintaining organizations, and competitive agent environments. Example systems; the implementation of a multi-agent system will be performed as the assignment.

Note: Credit for both Computer Science 609 and Software Engineering 697 will not be allowed for programs offered by the Department of Computer Science.

Note: Lectures may run concurrently with Computer Science 567.

(Return to Top)

Computer Science 610 H(3-0)

Compiler Code Generation and Optimization

Compiler code generation and optimization techniques, including register allocation, instruction selection, dataflow analysis, and code optimization techniques using intermediate representations. Implementation of special language features and tools for automated code generation.

Note: Lectures may run concurrently with the first semester of Computer Science 510.

(Return to Top)

Computer Science 611 H(3-0)

Complexity Theory

Deterministic and non-deterministic time and space complexity; complexity classes and hierarchies; NP-complete problems and intractable problems; axiomatic complexity theory.

Note: Lectures may run concurrently with Computer Science 511.

Note: Computer Science 413 or equivalent is recommended as preparation for this course.

(Return to Top)

Computer Science 613 H(3-0)

Program Specification, Proof and Transformation

Program proving techniques; approaches to partial and total correctness. Operational abstraction and data abstraction. Mechanical transformation of programs. Machine assisted proof.

Note: Computer Science 417 or 521 or equivalent is recommended as preparation for this course.

(Return to Top)

Computer Science 617 H(3-0)

Category Theory for Computer Science

Introduction to category theory with applications in computer science. Functors, natural transformations, adjoints and monads, initial and final algebras. Introduction to 2-categories and fibrations.

Note: Computer Science 417, 513, 521 or equivalent is recommended as preparation for this course.

(Return to Top)

Computer Science 619 H(3-0)

Quantum Computation

Quantum information, quantum algorithms including Shor's quantum factoring algorithm and Grover's quantum searching technique, quantum error correcting codes, quantum cryptography, nonlocality and quantum communication complexity, and quantum computational complexity.

Note: Lectures may run concurrently with Computer Science 519.

(Return to Top)

Computer Science 627 H(3-1T/2)

Computer Viruses and Malware

Study of computer viruses, worms, Trojan horses, and other forms of malicious software. Countermeasures to malicious software. Legal andethical issues, and some general computer and network security issues.

Prerequisites: Computer Science 313 and 457 or equivalents and consent of the Department.

Note: Lectures may run concurrently with Computer Science 527.

(Return to Top)

Computer Science 628 H(3-1T/2)

Spam and Spyware

Study of spam and other forms of unsolicited bulk electronic communication, and spyware. Legal and ethical issues, and tie-ins to other fields like business and economics. Spam and spyware countermeasures, and related security problems.

Prerequisites: Computer Science 313 and 457 or equivalents and consent of the Department.

Note: Lectures may run concurrently with Computer Science 528.

(Return to Top)

Computer Science 635 H(3-0)

Image Analysis and Computer Vision

Standard methods used in the analysis of digital images. Image acquisition and display: visual perception; digital representation. Sampling and enhancement. Feature extraction and classification methods. Object recognition.

Note: Lectures may run concurrently with Computer Science 535.

(Return to Top)

Computer Science 641 H(3-0)

Performance Issues in High Speed Networks

An overview of current research in high speed networks. Topics covered will include the current Internet, the future Internet, wireless networks, optical networks, Asynchronous Transfer Mode (ATM), TCP/IP, network traffic measurement, Web server performance, and mobile computing. Emphasis will be placed on network performance issues for next-generation Internet protocols and applications.

(Return to Top)

Computer Science 653 H(3-0)

Computational Geometry

Geometric searching, hull proximity and intersection data structures and algorithms and their complexity.

Note: Computer Science 415 or 517 or equivalent is recommended as preparation for this course.

(Return to Top)

Computer Science 657 H(3-0)

Modelling And Visualization of Plants

Modelling, simulation and visualization of plants for computer graphics and biological purposes. Modelling of plants as an example of interdisciplinary research including computer science, biology, mathematics and physics. L-systems as a formal basis for model construction. Modelling languages. Information flow in plants. Symmetry, self-similarity and allometry of plants. Descriptive models of plant architecture. Models integrating plant structure and function. Simulation of plant development. Case studies: competition for space, phyllotaxis, tropisms, and biomechanical considerations. Reaction-diffusion models of morphogensis. Genotype-to-phenotype mapping. Modelling of plant ecosystems. Rendering and visualization of the models. A survey of applications and research directions.

Note: Computer Science 453 or 553 or equivalent is recommended as preparation for computer science students taking this course.

(Return to Top)

Computer Science 661 H(3-0)

Algorithms for Distributed Computation

Basic problems in distributed systems such as symmetry breaking, consensus, resource allocation, and synchronization. The impact of system characteristics, such as models of communication, timing and failure, and of solution requirements, such as correctness and complexity criteria and algorithmic constraints, on the computability and complexity of these problems. Techniques for solving problems under different models will be emphasized.

Note: Lectures may run concurrently with Computer Science 561.

Note: Computer Science 413 or equivalent is recommended as preparation for this course.

(Return to Top)

Computer Science 667 H(3-0)

Computer Algebra

Fundamental problems, classical and modern algorithms, and algorithm design and analysis techniques of use in computer algebra. Integer and polynomial arithmetic. Additional problems in computer algebra, possibly including problems in computational linear algebra, factorization, and concerning systems of polynomial equations will be considered as time permits.

Note: Lectures may run concurrently with Computer Science 518.

Note: Computer Science 413, 491 and Pure Mathematics 431, or equivalents, are recommended as preparation for this course.

(Return to Top)

Computer Science 669 H(3-0)

(Pure Mathematics 669)

Cryptography

An introduction to the fundamentals of cryptographic systems, with emphasis on attaining well-defined notions of security. Public-key cryptosystems; examples, semantic security. One-way and trapdoor functions; hard-core predicates of functions; applications to the design of cryptosystems.

Prerequisites: Consent of the Department.

Note: Computer Science 413 and Mathematics 321, or equivalents, are recommended as preparation for this course.

(Return to Top)

Computer Science 671 H(3-0)

Database Management Systems

Foundations of database applications and database systems, plus some advanced topics in data management systems will be introduced.

(Return to Top)

Computer Science 673 H(3-0)

Distributed Database Systems

Introduction to distributed database systems. Topics covered include: architecture, data design, query processing, transaction management, multidatabases, object-oriented databases and advanced system issues.

(Return to Top)

Computer Science 675 H(3-0)

Datawarehouse Systems

Design, development and deployment of datawarehouses. Schemas, models, data organization, OLAP, tuning, data mining and architectural models may be discussed.

(Return to Top)

Computer Science 681 H(3-0)

Research Methods in Human-Computer Interaction

Application of the theory and methodology of human-machine studies to real systems; theory and practice.

Note: Computer Science 481 or equivalent is recommended as preparation for this course.

(Return to Top)

Computer Science 683 H(3-0)

Information Visualization

The theory and development of interactive visual representations of abstract data for the purpose of amplifying cognition. Topics covered can include representational issues, perceptual issues, visual literacy, spatial abstraction, and interaction issues.

(Return to Top)

Computer Science 687 H(3-0)

Computer Animation

Principles of traditional animation, key framing, parametric and track animation, free form deformation, inverse kinematics, dynamics, spring mass systems, particle systems, numerical integration, Lagrangian constraints, space time constraints, collisions, human animation, behavioural animation, metamorphosis, implicit animation techniques, animating liquids, gases and cloth, motion capture.

Note: Lectures may run concurrently with Computer Science 587.

(Return to Top)

Computer Science 689 H(3-0)

Modelling for Computer Graphics

Parametric Modelling. B-splines and NURBS. Subdivision schemes. Surface subdivision. Multiresolution. Wavelets. Implicit modelling. Blends. Polygonization. Blobtree. Precise contact modelling. Solid modelling. CSG. Procedural modelling. Special topics, e.g. Differential geometry. Graph based modelling. Topology.

Note: Lectures may run concurrently with Computer Science 589.

(Return to Top)

Computer Science 691 H(3-0)

Rendering

Physical foundations of illuminations techniques. Color. Radiometry and photometry. Reflection models. The rendering equation. Ray tracing. Monte Carlo techniques. Sampling and antialiasing. Texturing. Radiosity. Photon tracing. Volume rendering. Image-based rendering. Real-time shading.

Note: Lectures may run concurrently with Computer Science 591.

(Return to Top)

Computer Science 695 H(3-0)

Geometric Algorithms in Geographical Information Systems and Applied Sciences

Examination of advanced geometric algorithms for representation, analysis, and visualization of Geographical Information Systems. Data structures such as progressive mesh, ROAM, multidimensional Delauney triangulization, quadtree and space partitioning. Basic techniques such as incremental, divide and conquer, sweep-plane, and dimension reduction. Algorithms for surface simplification, culling, quality measurement and error reduction. Applications in computer modelling, graphics, motion planning, visualization, and other areas.

(Return to Top)

Computer Science 699 H(3-0)

Research Methodology in Computer Science

An introduction to and survey of research areas and methods in Computer Science. Professional skills in computer science research such as reviewing, critical evaluation, and the preparation of research proposals.

Note: This course meets for one and one-half hours per week during the Fall and Winter Sessions.

NOT INCLUDED IN GPA

(Return to Top)

Computer Science 701 H(3-0)

Research Topics in Computer Science

In depth course on a focused current research topic in Computer Science. Involves a significant research component and requires substantial background knowledge.

MAY BE REPEATED FOR CREDIT

(Return to Top)

Computer Science 767 H(3-0)

Advanced Topics in Multiagent Systems

An in-depth study of a selected subfield of multiagent systems including state-of-the-art research. This is a project-driven course.

Prerequisites: Computer Science 567 or 609.

(Return to Top)

Computer Science 771 H(3-0)

Current Trends in Database Technology

Advanced topics chosen from Bioinformatics, Data mining, Mobile Databases, Spatial Databases and Web Databases. There is a large project component.

(Return to Top)

Computer Science 781 H(3-0)

Advanced Topics in Human-Computer Interaction

The topics covered will change year by year depending on current advances in human computer interaction.

Prerequisites: Computer Science 481 or equivalent.

Note: Computer Science 581 or 681 or equivalent is highly recommended as preparation for this course.

(Return to Top)

Computer Science 785 H(3-0)

Implicit Modelling

A detailed look at modelling using implicit and iso-surface techniques taking an in depth review of the literature. Algebraic methods will be followed by skeletal models, field function design, modelling techniques, rendering and texture mapping. Polygonisation algorithms, ray tracing implicits, techniques for animation, meta-morphosis, precise contact modelling, deformation and warping. Algorithms and data structures and implementation details will be presented. Students will be expected to make a new contribution in their project and term paper.

(Return to Top)

Computer Science 789 H(3-0)

Advanced Geometric Modelling

Current research topics including spline modelling, Subdivision Surfaces, multiresolution, wavelets, analysis of the subdivision surfaces and reverse subdivision.

(Return to Top)