
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

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.
Course Hours:
E(6 hours)
Antirequisite(s):
Credit for both Computer Science 101 and 001 will not be allowed.
Notes:
This course is highly recommended as preparation for Computer Science 217 or 231 or 235.
NOT INCLUDED IN GPA

back to top  

Computer Science
102

Advanced Unix


Unix signals, processes, and file system; interprocess communication; advanced shell programming; program profiling.
Course Hours:
Q(12 hours)
Prerequisite(s):
Computer Science 219 or 233 or 235.
Antirequisite(s):
Credit for both Computer Science 102 and 002 will not be allowed.
Notes:
This course is highly recommended as preparation for students entering the second year of a computer science program.
NOT INCLUDED IN GPA

back to top  


Computer Science
203

Introduction to Problem Solving using Application Software


Introduction to computer fundamentals; contemporary topics, such as security and privacy, and the internet and world wide web. Problem solving, analysis and design using application software, including spreadsheets and databases.
Course Hours:
H(32T1)
Notes:
This course is not available for credit for Computer Science majors. This course cannot be used to satisfy the Computer Science requirement in the Natural Sciences program. Basic familiarity with personal computers and commonly used software, including word processors, electronic mail and web browsers, will be assumed.

back to top  

Computer Science
217

Introduction to Computer Science for Multidisciplinary Studies I


Introduction to problem solving, analysis and design of smallscale computational systems and implementation using a procedural programming language. For students wishing to combine studies in computer science with studies in other disciplines.
Course Hours:
H(32T1)
Antirequisite(s):
Credit for both Computer Science 217 and any of 215, 231, 235 or Computer Engineering 339 will not be allowed.
Notes:
Computer Science 101 is strongly recommended as preparation for this course. See the statements at the beginning of the Computer Science entry.

back to top  

Computer Science
219

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 smallscale computational systems and implementation using an object oriented language. Issues of design, modularization and programming style will be emphasized.
Course Hours:
H(42T1)
Prerequisite(s):
Computer Science 217.
Antirequisite(s):
Credit for both Computer Science 219 and any of 233, 235, Electrical Engineering 497 or Computer Engineering 493 will not be allowed.

back to top  

Computer Science
231

Introduction to Computer Science for Computer Science Majors I


Introduction to problem solving, the analysis and design of smallscale computational systems, and implementation using a procedural programming language. For computer science majors.
Course Hours:
H(32T1)
Antirequisite(s):
Credit for both Computer Science 231 and any of 215, 217, 235 or Computer Engineering 339 will not be allowed.
Notes:
Computer Science 101 is strongly recommended as preparation for this course. See the statements at the beginning of the Computer Science entry.

back to top  

Computer Science
233

Introduction to Computer Science for Computer Science Majors II


Continuation of Introduction to Computer Science for Computer Science Majors I. Emphasis on objectoriented analysis and design of smallscale computational systems and implementation using an object oriented language. Issues of design, modularization, and programming style will be emphasized.
Course Hours:
H(32T1)
Prerequisite(s):
Computer Science 231.
Antirequisite(s):
Credit for both Computer Science 233 and any of 219, 235, Electrical Engineering 497 or Computer Engineering 493 will not be allowed.

back to top  

Computer Science
235

Advanced Introduction to Computer Science


An accelerated introduction to problem solving, the analysis and design of smallscale computational systems and implementation using both procedural and object oriented programming languages. Issues of design, modularization, and programming style will be emphasized.
Course Hours:
H(32T2)
Prerequisite(s):
Consent of the Department.
Antirequisite(s):
Credit for both Computer Science 235 and any of 215, 217, 219, 231, 233, Computer Engineering 339 or 493 will not be allowed.
Notes:
Computer Science 101 is strongly recommended as preparation for this course. See the statements at the beginning of the Computer Science entry.

back to top  



Computer Science
313

Introduction to Computability


An introduction to abstract models of sequential computation, including finite automata, regular expressions, contextfree grammars, and Turing machines. Formal languages, including regular, contextfree, and recursive languages, methods for classifying languages according to these types, and relationships among these classes.
Course Hours:
H(32T)
Prerequisite(s):
Mathematics 271 or 273, one of Philosophy 279 or 377, and one of Computer Science 219, 233 or 235.

back to top  

Computer Science
319

Data Structures, Algorithms, and Their Applications


Fundamental data structures, including arrays, lists, stacks, queues, trees, hash tables, and graphs. Algorithms for searching and sorting. Applications of these data structures and algorithms. For students wishing to combine studies in computer science with studies in other disciplines.
Course Hours:
H(32T1)
Prerequisite(s):
One of Computer Science 219, 233, 235 or Computer Engineering 339.
Antirequisite(s):
Credit for both Computer Science 319 and 331 will not be allowed.

back to top  

Computer Science
325

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.
Course Hours:
H(32T1)
Prerequisite(s):
One of Computer Science 265 or 355 and one of Philosophy 279 or 377.
Antirequisite(s):
Credit for both Computer Science 325 and either of 455 or Computer Engineering 415 will not be allowed.

back to top  

Computer Science
329

Explorations in Information Security and Privacy


A broad survey of topics in information security and privacy, with the purpose of cultivating an appropriate mindset for approaching security and privacy issues. Topics will be motivated by recreational puzzles. Legal and ethical considerations will be introduced as necessary.
Course Hours:
H(32T)
Prerequisite(s):
One of Computer Science 217, 231, 235, or Engineering 233.
Notes:
One of Mathematics 211, 213, 249, 251, 273, 281 or Applied Mathematics 217 is recommended as preparation.

back to top  

Computer Science
331

Data Structures, Algorithms, and Their Analysis


Fundamental data structures, including arrays, lists, stacks, queues, trees, hash tables, and graphs. Algorithms for searching and sorting. Introduction to the correctness and analysis of algorithms. For computer science majors interested in algorithm design and analysis, information security, and other mathematicallyintensive areas.
Course Hours:
H(32T1)
Prerequisite(s):
One of Computer Science 219, 233, 235 or Computer Engineering 339, and one of Mathematics 271 or 273.
Antirequisite(s):
Credit for both Computer Science 331 and 319 will not be allowed.

back to top  

Computer Science
335

Intermediate Information Structures


A continuation of Computer Science 319 or 331. Collision resolution in hash tables, search algorithms, advanced tree structures, strings. Advanced algorithmic tools for the storing and manipulation of information.
Course Hours:
H(32T1)
Prerequisite(s):
Computer Science 319 or 331.

back to top  

Computer Science
355

Computer Architecture and LowLevel 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.
Course Hours:
H(32T1)
Prerequisite(s):
One of Computer Science 219, 233, or 235.
Antirequisite(s):
Credit for both Computer Science 355 and Computer Engineering 369 will not be allowed.
Also known as:
(formerly Computer Science 265)

back to top  

Computer Science
401

Computer Structure I


Technology of memories, processors and peripherals. Architecture of computer systems. Discussion and comparison of several modern machines.
Course Hours:
H(32T)
Prerequisite(s):
Computer Science 325 or both 321 and 455.

back to top  

Computer Science
409

History of Computation


The history of computation from the earliest times to the modern era.
Course Hours:
H(30)
Prerequisite(s):
Computer Science 313.

back to top  

Computer Science
411

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.
Course Hours:
H(32T)
Prerequisite(s):
Computer Science 319 or 331.
Notes:
Computer Science 313 is strongly recommended.

back to top  

Computer Science
413

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.
Course Hours:
H(32T)
Prerequisite(s):
Computer Science 331 or 319 or consent of the Department; Computer Science 313, one of Mathematics 211, 213 or 221, and one of Mathematics 249, 251, 261 or 281.
Notes:
One of Mathematics 253, 263 or 283 is highly recommended but not mandatory. Students who have completed Computer Science 319 instead of Computer Science 331 should contact the Department of Computer Science for information about how to be prepared for, and be eligible to take Computer Science 413.

back to top  

Computer Science
418

Introduction to Cryptography


The basics of cryptography, with emphasis on attaining welldefined and practical notations of security. Symmetric and public key cryptosystems; oneway and trapdoor functions; mechanisms for data integrity; digital signatures; key management; applications to the design of cryptographic systems. In addition to written homework, assessment will involve application programming; additional mathematical theory and prooforiented exercises will be available for extra credit.
Course Hours:
H(32T)
Prerequisite(s):
Computer Science 331 or 319 or consent of the Department, and one of Mathematics 271, 273, or Pure Mathematics 315.
Antirequisite(s):
Credit for both Computer Science 418 and any of 429, 557, or Pure Mathematics 329 or 418 will not be allowed.
Notes:
Students who have completed Computer Science 319 instead of 331 should contact the Department of Computer Science for information about how to be prepared for, and eligible to take, Computer Science 418. Lectures may run concurrently with Pure Mathematics 418.

back to top  

Computer Science
425

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.
Course Hours:
H(32T)
Prerequisite(s):
Computer Science 325.
Antirequisite(s):
Credit for both Computer Science 425 and 421 will not be allowed.

back to top  

Computer Science
429

Applied Cryptography


Primitives for applied cryptographic applications, including hash functions, pseudorandom number generation, provably secure cryptography, authentication protocols, publickey 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.
Course Hours:
H(32T)
Prerequisite(s):
Computer Science 319 or 331, and Pure Mathematics 329.
Antirequisite(s):
Credit for Computer Science 429 and any of Computer Science 418, 557, Pure Mathematics 329 or 418 will not be allowed.
Notes:
This course will not be available after 20102011.

back to top  

Computer Science
433

Artificial Intelligence


An examination of the objectives, key techniques and achievements of work on artificial intelligence in Computer Science.
Course Hours:
H(32T)
Prerequisite(s):
Computer Science 313 and one of 349 or 449.

back to top  

Computer Science
441

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.
Course Hours:
H(32T)
Prerequisite(s):
Computer Science 319 or 331, and one of 325, 455 or Computer Engineering 369.

back to top  

Computer Science
449

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.
Course Hours:
H(32T1)
Prerequisite(s):
Computer Science 319 or 331 and either Philosophy 279 or 377.
Notes:
The prerequisite of Philosophy 279 or 377 is waived for Engineering students in the Software Engineering program.
Also known as:
(formerly Computer Science 349)

back to top  

Computer Science
453

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.
Course Hours:
H(32T1)
Prerequisite(s):
Computer Science 319 or 331, one of Mathematics 211, 213 or 221, and one of Mathematics 253, 263, 283 or Applied Mathematics 219.
Antirequisite(s):
Credit for both Computer Science 453 and either Computer Science 407 or Electrical Engineering 555 will not be allowed.

back to top  

Computer Science
457

Principles of Operating Systems


An introduction to operating systems principles. Performance measurement; concurrent programs; the management of information, memory and processor resources.
Course Hours:
H(32T1)
Prerequisite(s):
Computer Science 319 or 331, and one of Computer Science 325, 455, or Computer Engineering 369.
Notes:
Prior or concurrent completion of Computer Engineering 511 is strongly recommended for students in Computer Engineering or Software Engineering programs.

back to top  

Computer Science
461

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.
Course Hours:
H(32T1)
Prerequisite(s):
Computer Science 319 or 331 and either 265 or 355.

back to top  


Computer Science
481

HumanComputer Interaction I


Fundamental theory and practice of the design, implementation, and evaluation of humancomputer interfaces. Topics include: principles of design; methods for evaluating interfaces with or without user involvement; techniques for prototyping and implementing graphical user interfaces.
Course Hours:
H(32T)
Prerequisite(s):
One of Computer Science 301, 333, Software Engineering 301 or 311.

back to top  

Computer Science
491

Techniques for Numerical Computation


Elementary techniques for the numerical solution of mathematical problems on a computer, including methods for solving linear and nonlinear equations, numerical integration, and interpolation.
Course Hours:
H(32T)
Prerequisite(s):
Computer Science 319 or 331, one of Mathematics 211, 213 or 221, and one of Mathematics 249, 251, 261, 281, or Applied Mathematics 217.
Antirequisite(s):
Not open to students with credit in Applied Mathematics 491 or 493.

back to top  

Computer Science
501

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.
Course Hours:
H(32T)
Prerequisite(s):
Computer Science 349 or 449.

back to top  

Computer Science
502

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
Course Hours:
F(15)
Prerequisite(s):
Consent of the Department.
Antirequisite(s):
Credit for both Computer Science 502 and any of 503, Software Engineering for Engineers 599 or 591 will not be allowed.
Notes:
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. 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. When demand exceeds capacity, registration in Computer Science 502 is limited to students in Honours programs in Computer Science.

back to top  

Computer Science
503

Project


A research project conducted under the guidance of a faculty member. A report must be presented on completion of the course.
Course Hours:
H(15)
Prerequisite(s):
Consent of the Department.
Antirequisite(s):
Credit for both Computer Science 503 and either 502 or Software Engineering for Engineers 599 will not be allowed.

back to top  

Computer Science
510

Compiler Construction II


Theory and implementation of assemblers, compilers, and interpreters. Projects will include the writing of substantial segments of such programs.
Course Hours:
F(32T)
Prerequisite(s):
Computer Science 313, 411 and one of 265 or 355.
Notes:
Includes a research, writing and presentation component. Lectures may run concurrently with Computer Science 610.

back to top  

Computer Science
511

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 NPcompleteness; complexity theories for probabilistic algorithms and for parallel algorithms.
Course Hours:
H(31T)
Prerequisite(s):
Computer Science 413.
Notes:
Lectures may run concurrently with Computer Science 611.

back to top  

Computer Science
513

Computability


Computable functions; decidable and undecidable problems; Church's thesis and recursive functions.
Course Hours:
H(31T)
Prerequisite(s):
Computer Science 313.

back to top  

Computer Science
517

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.
Course Hours:
H(32T)
Prerequisite(s):
Computer Science 413.

back to top  

Computer Science
518

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.
Course Hours:
H(32T)
Prerequisite(s):
Computer Science 413 and one of Mathematics 211, 213, or 221.
Notes:
Lectures may run concurrently with Computer Science 667. Computer Science 491 and Pure Mathematics 431 are recommended as preparation for this course.

back to top  

Computer Science
519

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.
Course Hours:
H(31T)
Prerequisite(s):
Computer Science 413 and Mathematics 311 or 313.
Notes:
Lectures may run concurrently with Computer Science 619.

back to top  

Computer Science
521

Foundations of Functional Programming


Theoretical foundations of functional programming: the lambdacalculus, betareduction, confluence, and reduction strategies. Programming syntax: solving recursive equations with the Ycombinator, 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.
Course Hours:
H(32T1)
Prerequisite(s):
Computer Science 313 and one of Computer Science 349 or 449.
Also known as:
(formerly Computer Science 417)

back to top  


Computer Science
525

Principles of Computer Security


Security policies and protection mechanisms for a computing system, including such topics as design principles of protection systems, authentication and authorization, reference monitors, security architecture of popular platforms, formal modeling of protection systems, discretionary access control, safety analysis, information flow control, integrity, rolebased access control. Legal and ethical considerations will be introduced.
Course Hours:
H(32T)
Prerequisite(s):
Computer Science 457 and either Mathematics 271 or 273.
Antirequisite(s):
Credit for both Computer Science 525 and 529 will not be allowed.
Notes:
Computer Science 329 is recommended as preparation for this course. Lectures may run concurrently with Computer Science 625.

back to top  

Computer Science
526

Network Systems Security


Attacks on networked systems, tools and techniques for detection and protection against attacks including firewalls and intrusion detection and protection systems, authentication and identification in distributed systems, cryptographic protocols for IP networks, security protocols for emerging networks and technologies, privacy enhancing communication. Legal and ethical issues will be introduced.
Course Hours:
H(32T)
Prerequisite(s):
Computer Science 441 and either Computer Science 418 or 429.
Antirequisite(s):
Credit for both Computer Science 526 and 529 will not be allowed.
Notes:
Computer Science 329 is recommended as preparation for this course. Lectures may run concurrently with Computer Science 626.

back to top  

Computer Science
527

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.
Course Hours:
H(30)
Prerequisite(s):
Computer Science 313, 457 and consent of the Department.
Notes:
Lectures may run concurrently with Computer Science 627.

back to top  

Computer Science
528

Spam and Spyware


Study of spam and other forms of unsolicited bulk electronic communication, and spyware. Legal and ethical issues, and tieins to other fields like business and economics. Spam and spyware countermeasures, and related security problems.
Course Hours:
H(30)
Prerequisite(s):
Computer Science 313, 457 and consent of the Department.
Notes:
Lectures may run concurrently with Computer Science 628.

back to top  

Computer Science
530

Information Theoretic Security


Information theoretic concepts such as entropy, mutual information and statistical distance, and their applications to cryptography in information theoretic settings. Models and analysis of security and efficiency, and constructions of cryptographic primitives including encryption, authentication, secret sharing, multiparty computation and key agreement, when there are no limits on the adversary's computational resources.
Course Hours:
H(32T)
Prerequisite(s):
One of Computer Science 219, 233 or 235; one of Mathematics 271, 273 or Pure Mathematics 315, and one of Statistics 211 or Mathematics 321.
Notes:
Computer Science 329 is recommended as preparation for this course. Lectures may run concurrently with Computer Science 630.

back to top  

Computer Science
531

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.
Course Hours:
H(32T)
Prerequisite(s):
Computer Science 457 and one of Mathematics 321 or Statistics 211.
Notes:
Mathematics 321 is recommended over Statistics 211 as preparation for this course. Computer Science 441 is also recommended as preparation for this course.

back to top  

Computer Science
535

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.
Course Hours:
H(32T)
Prerequisite(s):
One of Mathematics 311, 313, 331, 353, Applied Mathematics 307, 311, or Pure Mathematics 331, or consent of the Department.
Notes:
Lectures may run concurrently with Computer Science 635.

back to top  

Computer Science
550

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.
Course Hours:
F(21T3)
Prerequisite(s):
Computer Science 457 and consent of the Department.

back to top  

Computer Science
559

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.
Course Hours:
H(32T)
Prerequisite(s):
Computer Science 457.

back to top  

Computer Science
561

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.
Course Hours:
H(32T)
Prerequisite(s):
Computer Science 413.
Notes:
Lectures may run concurrently with Computer Science 661.

back to top  

Computer Science
565

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 bottomup fashion rather than being manually coded. Topics will include: decentralized agentbased programming, massive parallelism and interaction, evolution, swarm intelligence.
Course Hours:
H(31T)
Prerequisite(s):
Computer Science 433 or 533.
Notes:
Offered in evenodd dated academic years.

back to top  

Computer Science
567

Foundations of MultiAgent Systems


Modelling of agents and properties of multiagent systems. Communication issues, including interaction and coordination concepts, forming and maintaining organizations, and competitive agent environments. Example systems; the implementation of a multiagent system will be performed as the assignment.
Course Hours:
H(31T)
Prerequisite(s):
Computer Science 457 and one of 433 or 533.
Notes:
Offered in oddeven dated academic years. Lectures may run concurrently with Computer Science 609.

back to top  

Computer Science
568

Agent Communications


An examination of communication paradigms in multiagent systems. A number of paradigms will be covered including simple protocols, BDI (Believe, Desire, Intension), and social commitments.
Course Hours:
H(30)
Prerequisite(s):
Computer Science 433 and consent of the Department.
Notes:
Lectures may run concurrently with Computer Science 662.
Also known as:
(formerly Computer Science 599.68)

back to top  

Computer Science
571

Design and Implementation of Database Systems


Implementation and design of modern database systems including query modification/optimization, recovery, concurrency, integrity, and distribution.
Course Hours:
H(32T)
Prerequisite(s):
Computer Science 461 and 471.

back to top  

Computer Science
581

HumanComputer Interaction II


Intermediate and advanced topics and applications in humancomputer interaction, to further one's skills for designing highly interactive humancomputer interfaces.
Course Hours:
H(32)
Prerequisite(s):
Computer Science 481 and consent of the Department.

back to top  

Computer Science
583

Introduction to Information Visualization


Principles of information representation, presentation and interaction. Development of mappings from data to visual structures and exploration, navigation, cues, distortion and emphasis techniques.
Course Hours:
H(32T)
Prerequisite(s):
Computer Science 319 or 331.
Notes:
Prior or concurrent completion of Computer Science 453 or 481 is strongly recommended.
Also known as:
(formerly Computer Science 599.28)

back to top  

Computer Science
584

HumanRobot Interaction


Introduction to the design, implementation and evaluation of humanrobot interfaces. Topics include the evaluation of humanrobot interaction (HRI), theoretical, philosophical and ethical issues, exploration of applications and tasks, prototyping HRI tools, and practical implementation and evaluation methods.
Course Hours:
H(32T)
Prerequisite(s):
Computer Science 481.
Also known as:
(formerly Computer Science 599.17)

back to top  

Computer Science
585

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.
Course Hours:
H(32)
Prerequisite(s):
Computer Science 453 and consent of the Department.

back to top  

Computer Science
587

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.
Course Hours:
H(32T)
Prerequisite(s):
Computer Science 453.
Notes:
Lectures may run concurrently with Computer Science 687.

back to top  

Computer Science
589

Modelling for Computer Graphics


Parametric Modelling. Bsplines 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.
Course Hours:
H(32T)
Prerequisite(s):
Computer Science 453.
Notes:
Lectures may run concurrently with Computer Science 689.

back to top  

Computer Science
591

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. Imagebased rendering. Realtime shading.
Course Hours:
H(32T)
Prerequisite(s):
Computer Science 453.
Notes:
Lectures may run concurrently with Computer Science 691.

back to top  

Computer Science
594

Software Engineering Project


A software engineering project conducted under the guidance of a faculty member.
Course Hours:
F(15)
Prerequisite(s):
Consent of the Department.
Notes:
Includes a research, writing and presentation component.

back to top  

Computer Science
598

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.
Course Hours:
F(30)
Prerequisite(s):
Consent of the Department.
MAY BE REPEATED FOR CREDIT

back to top  

Computer Science
599

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.
Course Hours:
H(30)
Prerequisite(s):
Consent of the Department.
MAY BE REPEATED FOR CREDIT

back 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

Special Topics in Computer Science


A study of problems of particular interest to graduate students in Computer Science.
Course Hours:
H(30)
MAY BE REPEATED FOR CREDIT

back to top  

Computer 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.
Course Hours:
H(30)
Also known as:
(Medical Science 605)

back to top  

Computer Science
607

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.
Course Hours:
H(30)

back to top  

Computer Science
609

Foundations of MultiAgent Systems


Modelling of agents and properties of multiagent systems. Communication issues, including interaction and coordination concepts, forming and maintaining organizations, and competitive agent environments. Example systems; the implementation of a multiagent system will be performed as the assignment.
Course Hours:
H(30)
Antirequisite(s):
Credit for both Computer Science 609 and Software Engineering 697 will not be allowed for programs offered by the Department of Computer Science.
Notes:
Lectures may run concurrently with Computer Science 567.

back to top  

Computer Science
610

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.
Course Hours:
H(30)
Notes:
Lectures may run concurrently with the first semester of Computer Science 510.

back to top  

Computer Science
611

Complexity Theory


Deterministic and nondeterministic time and space complexity; complexity classes and hierarchies; NPcomplete problems and intractable problems; axiomatic complexity theory.
Course Hours:
H(30)
Notes:
Lectures may run concurrently with Computer Science 511. Computer Science 413 or equivalent is recommended as preparation for this course.

back to top  

Computer Science
613

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.
Course Hours:
H(30)
Notes:
Computer Science 417 or 521 or equivalent is recommended as preparation for this course.

back to top  

Computer Science
617

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 2categories and fibrations.
Course Hours:
H(30)
Notes:
Computer Science 417, 513, 521 or equivalent is recommended as preparation for this course.

back to top  

Computer Science
619

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.
Course Hours:
H(30)
Notes:
Lectures may run concurrently with Computer Science 519.

back to top  

Computer Science
625

Principles of Computer Security


Security policies and protection mechanisms for a computing system, including such topics as design principles of protection systems, authentication and authorization, reference monitors, security architecture of popular platforms, formal modeling of protection systems, discretionary access control, safety analysis, information flow control, integrity, rolebased access control. Legal and ethical considerations will be introduced as necessary.
Course Hours:
H(30)
Notes:
Computer Science 457 and Mathematics 271, or equivalents, are recommended as preparation for this course. Lectures may run concurrently with Computer Science 525.

back to top  

Computer Science
626

Network Systems Security


Attacks on networked systems, tools and techniques for detection and protection against attacks including firewalls and intrusion detection and protection systems, authentication and identification in distributed systems, cryptographic protocols for IP networks, security protocols for emerging networks and technologies, privacy enhancing communication. Legal and ethical issues will be introduced as necessary.
Course Hours:
H(30)
Notes:
Computer Science 418 and 441, or equivalents, are recommended as preparation for this course. Lectures may run concurrently with Computer Science 526.

back to top  

Computer Science
627

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.
Course Hours:
H(30)
Prerequisite(s):
Computer Science 313 and 457 or equivalents and consent of the Department.
Notes:
Lectures may run concurrently with Computer Science 527.

back to top  

Computer Science
628

Spam and Spyware


Study of spam and other forms of unsolicited bulk electronic communication, and spyware. Legal and ethical issues, and tieins to other fields like business and economics. Spam and spyware countermeasures, and related security problems.
Course Hours:
H(30)
Prerequisite(s):
Computer Science 313 and 457 or equivalents and consent of the Department.
Notes:
Lectures may run concurrently with Computer Science 528.

back to top  

Computer Science
629

Elliptic Curves and Cryptography


An introduction to elliptic curves over the rationals and finite fields. The focus is on both theoretical and computational aspects; subjects covered will include the study of endomorphism rings, Weil pairing, torsion points, group structure, and effective implementation of point addition. Applications to cryptography will be discussed, including elliptic curvebased DiffieHelman key exchange, El Gamal encryption, and digital signatures, as well as the associated computational problems on which their security is based.
Course Hours:
H(30)
Prerequisite(s):
Pure Mathematics 315 or consent of the Department.
Also known as:
(Pure Mathematics 629)(formerly Computer Science 601.09)

back to top  

Computer Science
630

Information Theoretic Security


Information theoretic concepts such as entropy, mutual information and statistical distance, and their applications to cryptography in information theoretic settings. Models and analysis of security and efficiency, and constructions of cryptographic primitives including encryption, authentication, secret sharing, multiparty computation and key agreement, when there is no limit on the adversary's computational resources.
Course Hours:
H(30)
Notes:
One of Computer Science 219, 233 or 235, one of Mathematics 271, 273 or Pure Mathematics 315, and one of Statistics 211 or Mathematics 321, or equivalents, are recommended as preparation for this course. Lectures may run concurrently with Computer Science 530.

back to top  

Computer Science
635

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.
Course Hours:
H(30)
Notes:
Lectures may run concurrently with Computer Science 535.

back to top  

Computer Science
641

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 nextgeneration Internet protocols and applications.
Course Hours:
H(30)

back to top  

Computer Science
653

Computational Geometry


Geometric searching, hull proximity and intersection data structures and algorithms and their complexity.
Course Hours:
H(30)
Notes:
Computer Science 415 or 517 or equivalent is recommended as preparation for this course.

back to top  

Computer Science
657

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. Lsystems as a formal basis for model construction. Modelling languages. Information flow in plants. Symmetry, selfsimilarity 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. Reactiondiffusion models of morphogensis. Genotypetophenotype mapping. Modelling of plant ecosystems. Rendering and visualization of the models. A survey of applications and research directions.
Course Hours:
H(30)
Notes:
Computer Science 453 or 553 or equivalent is recommended as preparation for computer science students taking this course.

back to top  

Computer Science
661

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.
Course Hours:
H(30)
Notes:
Lectures may run concurrently with Computer Science 561. Computer Science 413 or equivalent is recommended as preparation for this course.

back to top  

Computer Science
662

Agent Communications


An examination of communication paradigms in multiagent systems. A number of paradigms will be covered including simple protocols, BDI (Believe, Desire, Intension), and social commitments.
Course Hours:
H(30)
Notes:
Lectures may run concurrently with Computer Science 568.

back to top  

Computer Science
667

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.
Course Hours:
H(30)
Notes:
Lectures may run concurrently with Computer Science 518. Computer Science 413, 491 and Pure Mathematics 431, or equivalents, are recommended as preparation for this course.

back to top  

Computer Science
669

Cryptography


An overview of the basic techniques in modern cryptography, with emphasis on fitforapplication primitives and protocols. Topics will include symmetric and publickey cryptosystems; digital signatures; elliptic curve cryptography; key management; attack models and welldefined notions of security.
Course Hours:
H(30)
Prerequisite(s):
Consent of the Department.
Notes:
Students should not have taken any previous course in cryptography.
Also known as:
(Pure Mathematics 669)

back to top  

Computer Science
671

Database Management Systems


Foundations of database applications and database systems, plus some advanced topics in data management systems will be introduced.
Course Hours:
H(30)

back to top  

Computer Science
673

Distributed Database Systems


Introduction to distributed database systems. Topics covered include: architecture, data design, query processing, transaction management, multidatabases, objectoriented databases and advanced system issues.
Course Hours:
H(30)

back to top  

Computer Science
675

Datawarehouse Systems


Design, development and deployment of datawarehouses. Schemas, models, data organization, OLAP, tuning, data mining and architectural models may be discussed.
Course Hours:
H(30)

back to top  

Computer Science
681

Research Methods in HumanComputer Interaction


Application of the theory and methodology of humanmachine studies to real systems; theory and practice.
Course Hours:
H(30)
Notes:
Computer Science 481 or equivalent is recommended as preparation for this course.

back to top  

Computer Science
683

Information Visualization: Theory and Practice


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.
Course Hours:
H(30)
Notes:
Computer Science 583 or equivalent is recommended as preparation for this course.

back to top  

Computer Science
687

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.
Course Hours:
H(30)
Notes:
Lectures may run concurrently with Computer Science 587.

back to top  

Computer Science
689

Modelling for Computer Graphics


Parametric Modelling. Bsplines 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.
Course Hours:
H(30)
Notes:
Lectures may run concurrently with Computer Science 589.

back to top  

Computer Science
691

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. Imagebased rendering. Realtime shading.
Course Hours:
H(30)
Notes:
Lectures may run concurrently with Computer Science 591.

back to top  

Computer Science
695

Advanced Geometrical Algorithms in Geographical Information Systems


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. Algorithmic techniques such as incremental, divide and conquer, sweepplane, and dimension reduction. Algorithms for surface simplification, culling, quality measurement and reduction.
Course Hours:
H(30)

back to top  

Computer Science
696

Information Security Seminar


Covers various topics in Information Security, including, for example, security management, case studies, best practices, emerging threats, research frontiers, etc. Helps students in identifying a project topic for Computer Science 698. Includes a component of literature review and survey, and proposal writing.
Course Hours:
H(1.5S0)
Prerequisite(s):
Consent of the Department.
Antirequisite(s):
Credits for both CPSC 698 and 699 will not be allowed.
Notes:
Normally runs across two semesters.

back to top  

Computer Science
697

Biometric Technologies


Principles of biometric system design, technology and performance evaluation. Verification, identification and synthesis in biometrics. Traditional and emerging techniques for fingerprint matching, face recognition, iris modeling, signature authentication, and biometric pattern recognition. Multimodal biometrics and biometric security.
Course Hours:
H(30)
Also known as:
(formerly Computer Science 601.20)

back to top  

Computer Science
698

Information Security Project


An information security project conducted under the guidance of a faculty member. A report must be written and presented on completion of the course.
Course Hours:
F(15)
Prerequisite(s):
Consent of the Department.
Notes:
Normally runs across two semesters.

back to top  

Computer Science
699

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.
Course Hours:
H(30)
Notes:
This course meets for one and onehalf hours per week during the Fall and Winter Terms.
NOT INCLUDED IN GPA

back to top  

Computer Science
701

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.
Course Hours:
H(30)
MAY BE REPEATED FOR CREDIT

back to top  

Computer Science
767

Advanced Topics in Multiagent Systems


An indepth study of a selected subfield of multiagent systems including stateoftheart research. This is a projectdriven course.
Course Hours:
H(30)
Prerequisite(s):
Computer Science 567 or 609.

back to top  

Computer Science
771

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.
Course Hours:
H(30)

back to top  

Computer Science
781

Advanced Topics in HumanComputer Interaction


The topics covered will change year by year depending on current advances in human computer interaction.
Course Hours:
H(30)
Prerequisite(s):
Computer Science 481 or equivalent.
Notes:
Computer Science 581 or 681 or equivalent is highly recommended as preparation for this course.

back to top  

Computer Science
785

Implicit Modelling


A detailed look at modelling using implicit and isosurface 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, metamorphosis, 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.
Course Hours:
H(30)

back to top  

Computer Science
789

Advanced Geometric Modelling


Current research topics including spline modelling, Subdivision Surfaces, multiresolution, wavelets, analysis of the subdivision surfaces and reverse subdivision.
Course Hours:
H(30)

back to top  
