Course Descriptions - Undergraduate Calendar 2007-2008

University of Waterloo Home Page | Undergraduate Calendar | Course Description Index | Contact Us
University of Waterloo

C O M P U T E R   S C I E N C E 

Notes

  1. The School of Computer Science has two distinct streams of courses, one for students registered in a Computer Science Major plan, and another designed for non-specialists who wish to become sophisticated computer users.

    CS courses numbered with middle digits 4 through 9 are considered CS Major courses and most such courses are not normally open to non-CS Major students. All other CS courses numbered with a middle digit of 0 through 3 are non-specialist courses. As such, they will not normally be open to Computer Science Major students, but they are available to all other students in the University, subject to resource limitations. Students should be aware that these courses usually fill quickly.

    CS 133, 134, 135, 136 and 241 are normally restricted to students in the Faculty of Mathematics.

    Any student registered in an Honours BMath plan may apply to take courses normally restricted to CS Majors such as (CS 240, 2411, 246, 251, 341, 343, 350, 360 or 365) provided the student would be admissible to Computer Science and has met the stated prerequisites. Students must bring their current academic record to a Computer Science Undergraduate Advisor for validation of the above requirements during the first week of the term in which the course is offered and will normally be admitted provided there is room in the course.

    1CS 241 will continue to be available to satisfy Faculty core requirements as necessary.

    Computer Science courses are open to students registered in the Software Engineering program provided the students have met the stated prerequisites.

  2. Students entering with no prior CS experience may either take the Programming-Basics sequence (CS 125 in their 1A term, followed by CS 134 in their 1B term), or the Functional-First sequence (CS 135 in their 1A term, followed by CS 136 in their 1B term).
    Students with ICS3M or equivalent may choose to take the Objects-First sequence (CS 133 in their 1A term, followed by CS 134 in their 1B term), or the Functional-First sequence. Students with extensive programming experience (ICS4M or equivalent) may take CS 134 in their 1A term followed by CS 230, 234, or 241 in their 1B term.

  3. The School of Computer Science is experiencing demand for its courses beyond available resources. Thus, access to Computer Science courses cannot be guaranteed to all students. Every effort will be made to accommodate the students who select courses during published University class enrolment periods, during which time priority will be given to students who are at the appropriate year level. However, admission to specific courses cannot be guaranteed and course substitutions may be required to satisfy degree requirements.

  4. All part-time students, as well as full-time non-degree and post-degree students, will normally be limited to at most one Computer Science course per term from the non-specialist offerings. (Post-degree students on academic leave from their home institution should consult a Computer Science Advisor.) Priority for registration will normally be given to students registered full-time in a degree plan.

  5. The terms in which courses are offered may deviate from those indicated below. Students are advised to consult the "Schedule of Classes."

  6. Where there is significant overlap between major and non-specialist courses, the major course can be used to satisfy the prerequisite for non-specialist courses, unless otherwise specified.

  7. A CS course that has not been excluded (as defined in the notes below Table I) may not be taken for credit if it is the prerequisite of another CS course that has already been passed.

  8. Students who have demonstrated exceptionally strong academic performance will be permitted to enrol in 600- or 700-level CS courses at the discretion of the instructor and Computer Science Undergraduate Advisors, if there is available capacity.

  9. The standard penalty for cheating will be the assignment of a grade of -100% for the assignment, test or exam in question, with a minimum deduction of 5% from the final course grade. All such incidents will also be reported to the Associate Dean (Undergraduate Studies) of the student's faculty.

CS 00s


CS 99 LEC 0.00Course ID: 012401
Introductory Modules on Computer Usage
Experience with common application software including spreadsheets, database management, and exposure to the Internet and World Wide Web. Programming principles to support the understanding of application software. [Offered: F]
Prereq: Science and Business students only

CS 100s


CS 100 LAB,LEC,TST 0.50Course ID: 004360
Introduction to Computer Usage
Introduction to using personal computer hardware and software. Using personal computers as effective problem solving tools for the present and the future. Experience with common application software including word processing, spreadsheets, database management, and electronic communications. Exposure to the Internet and World Wide Web. Programming principles to support the understanding of application software. [Offered: F,W,S]
Prereq: Not open to Honours Mathematics students.
Antireq: 4M Computer and Information Science or any University of Waterloo Computer Science course, CHE 121, ECE 150, GENE 121, PHYS 239
Also offered by Distance Education

CS 102W LEC 0.50Course ID: 012271
Information Processing with Microcomputer Systems
WLU cross registration

CS 115 LAB,LEC,TST,TUT 0.50Course ID: 012765
Introduction to Computer Science 1
An introduction to the fundamentals of computer science through the application of elementary programming patterns in the functional style of programming. Function definition and application. Tracing via substitution. Design, testing, and documentation. Recursive data definitions. Lists and trees. Functional and data abstraction.
[Note: See Note 2 above. Also offered at St. Jerome's University in the Fall term. Offered: F,W,S]
Antireq: CS 120, 121, 122, 123, 125, 130, 131, 132, 133, 135, 145, CHE 121, CIVE 121, ECE 150, GENE 121, PHSY 139, SYDE 121
Also offered at St. Jerome's University

CS 116 LAB,LEC,TST,TUT 0.50Course ID: 012766
Introduction to Computer Science 2
This course builds on the techniques and patterns learned in CS 115 while making the transition to use of an imperative language. Generative and structural recursion. Mutation (assignment) and its role in an imperative language. Primitive types and basic I/O. Sequencing, selection, looping. Function definition and use. File and console I/O. Issues in computer science. [Also offered at St. Jerome's University in the Winter term. Offered: F,W,S]
Prereq: CS 115 or 135.
Antireq: CS 126/124/114, 134, 136, 145, 212
Also offered at St. Jerome's University

CS 123 LAB,LEC,PRA,TST 0.50Course ID: 010019
Developing Programming Principles
Review of fundamental programming concepts and their application in Java. Arrays of simple types. Objects: encapsulation, instantiation, declaration and use, exceptions. Practical programming: design and life-cycle issues. Arrays of objects. Libraries and interactive programming. [Offered: F]
Prereq: CS 112 or 4M Computer and Information Science; Not open to Honours Mathematics students.
Antireq: CS 113, 121, 122, 125, 130, 131, 132, 133, 135
Only offered by Distance Education

CS 125 LAB,LEC,TST 0.50Course ID: 012039
Introduction to Programming Principles
How a program is created and run. The basic elements of programming languages (variables, constants, expressions, statements), with a focus on these constructs in Java. Control flow via conditional statements and iteration. Testing, debugging and semantics. Using and defining objects. Arrays, including arrays of objects. An introduction to object-oriented concepts such as inheritance. History of computer science.
[Note: See Note 2 above. Offered at St. Jerome's University in the Fall term. Offered: F,W,S]
Antireq: CS 120, 121, 122, 123, 130, 131, 132, 133, 135, 4M Computer and Information Science or equivalent experience, CHE 121, CIVE 121, ECE 150, GENE 121, PHYS 139, SYDE 121

CS 126 LEC,PRA,TST 0.50Course ID: 010020
Introduction to Software Development
An introduction to basic concepts of computer science, including the paradigms of theory, abstraction, and design. Broad themes include the design and analysis of algorithms, the management of information, and the programming mechanisms and methodologies required in implementations. Topics discussed include iterative and recursive sorting algorithms; lists, stacks, queues, trees, and their application; and the history and philosophy of computer science. [Offered: F]
Prereq: CS 122 or 123/113 or 125 or 132 or 133/130; Not open to Honours Mathematics students.
Antireq: CS 124/114, 134, 136, 212
Only offered by Distance Education

CS 133 LAB,LEC,PRA,TST 0.50Course ID: 004366
Developing Programming Principles
Review of fundamental programming concepts and their application in Java. Arrays of simple types. Objects: encapsulation, instantiation, declaration and use, exceptions. Practical programming: design and life-cycle issues. Arrays of objects. Libraries and interactive programming.
[Note: See Note 2 above. Offered: F]
Prereq: CS 120 or Grade 11 or 12 or OAC Computer Science or 4M Computer and Information Science; Honours Math or Software Eng students only.
Antireq: CS 112, 121, 122, 123, 125, 130, 131, 132, 135, CHE 121, CIVE 121, ECE 150, GENE 121, PHYS 139, SYDE 121
Also offered at St. Jerome's University

CS 134 LAB,LEC,TST,TUT 0.50Course ID: 004369
Principles of Computer Science
An introduction to basic concepts of computer science, including the paradigms of theory, abstraction, and design. Broad themes include the design and analysis of algorithms, the management of information, and the programming mechanisms and methodologies required in implementations. Topics discussed include iterative and recursive sorting algorithms; lists, stacks, queues, trees, and their application; and the history and philosophy of computer science.
[Note: Students with experience equivalent to CS 133 may also enrol in this course. See Note 2 above. Lab is not scheduled and students are expected to find time in open hours to complete their work. Offered at St. Jerome's University in the Winter term. Offered: F,W,S]
Prereq: CS 125 or 132 or 133/130; Honours Mathematics or Software Engineering students only.
Antireq: CS 126/124/114, 135, 136, 212

CS 135 LAB,LEC,TST,TUT 0.50Course ID: 012040
Designing Functional Programs
An introduction to the fundamentals of computer science through the application of elementary programming patterns in the functional style of programming. Syntax and semantics of a functional programming language. Tracing via substitution. Design, testing, and documentation. Linear and nonlinear data structures. Recursive data definitions. Abstraction and encapsulation. Generative and structural recursion. Historical context.
[Note: See Note 2 above. Offered: F,W,S]
Antireq: CS 115, 120, 121, 122, 123, 125, 130, 131, 132, 133, 134, 145, CHE 121, CIVE 121, ECE 150, GENE 121, PHYS 239, SYDE 121

CS 136 LAB,LEC,TST,TUT 0.50Course ID: 012041
Elementary Algorithm Design and Data Abstraction
This course builds on the techniques and patterns learned in CS 135 while making the transition to use of an imperative language. It introduces the design and analysis of algorithms, the management of information, and the programming mechanisms and methodologies required in implementations. Topics discussed include iterative and recursive sorting algorithms; lists, stacks, queues, trees, and their application; abstract data types and their implementations.
[Note: See Note 2 above. Offered: F,W,S]
Prereq: CS 116 or a mark of at least 60% in CS 135.
Antireq: CS 134, 145

CS 145 LAB,LEC,TST,TUT 0.50Course ID: 012767
Design, Abstraction, and Implementation
CS 145 is an advanced-level course that combines CS 135 and 136.
[Note: See Note 2 above. Offered: F]
Department Consent Required
Antireq: CS 134, 136

CS 200s


CS 200 LAB,LEC,TST 0.50Course ID: 004372
Concepts for Advanced Computer Usage
Important concepts underlying major personal computer application categories; methodologies for learning and evaluating software; operating system and hardware design from the user's point of view, with implications for maintaining a personal computer. Students are encouraged to use their own personal computer for assignments. A substantial project is required involving the integrated use of several applications.
[Note: Students with computing experience equivalent to CS 100 may also enrol in this course. Offered: F,W,S]
Prereq: CS 99 or 100 or Grade 11 or 12 or OAC Computer Science or 4M Computer and Information Science.
Antireq: All second, third or fourth year computer science courses

CS 230 LAB,LEC,TST,TUT 0.50Course ID: 004374
Introduction to Computers and Computer Systems
Basic computer architecture, operating system services, and programming languages in support of development of software systems.
[Note: Lab is not scheduled and students are expected to find time in open hours to complete their work. Offered: W]
Prereq: CS 126/124/114 or 134 or 136; Not open to Computer Science students.
Antireq: CS 241

CS 234 LAB,LEC,TST 0.50Course ID: 004375
Data Types and Structures
Top-down design of data structures. Using representation-independent data types. Introduction to commonly used data types, including lists, sets, mappings, and trees. Selection of data representation.
[Note: Lab is not scheduled and students are expected to find time in open hours to complete their work. Offered: F,S]
Prereq: CS 126/124/114 or 134 or 136; Not open to Computer Science students.
Antireq: CS 240, 334

CS 240 LAB,LEC,TST 0.50Course ID: 004377
Data Structures and Data Management
Introduction to widely used and effective methods of data organization, focusing on data structures, their algorithms, and the performance of these algorithms. Specific topics include priority queues, sorting, dictionaries, data structures for text processing.
[Note: Enrolment is restricted; see Note 1 above. Lab is not scheduled and students are expected to find time in open hours to complete their work. Offered: F,W,S]
Prereq: CS 241; Computer Science or Computational Mathematics students only.
Coreq: STAT 206 or 230/240.
Antireq: CS 234, 334, 340, ECE 250, SE 240

CS 241 LAB,LEC,TST,TUT 0.50Course ID: 004378
Foundations of Sequential Programs
The relationship between high-level languages and the computer architecture that underlies their implementation, including basic machine architecture, assemblers, specification and translation of programming languages, linkers and loaders, block-structured languages, parameter passing mechanisms, and comparison of programming languages.
[Note: Enrolment is restricted; see Note 1 above. Lab is not scheduled and students are expected to find time in open hours to complete their work. CS 251 is a recommended corequisite. Offered: F,W,S]
Prereq: CS 134 or 145 or a mark of 60% or higher in 136; Honours Mathematics or Software Engineering students only.
Antireq: CS 230, GENE 344

CS 245 LEC,TST,TUT 0.50Course ID: 011405
Logic and Computation
Formal logic. Proof systems and styles. Rudimentary model theory. Logic-based specification. Reasoning about programs. Correctness proofs.
[Note: Enrolment is restricted; see Note 1 above. Offered: F,W,S]
Prereq: CS 134 or 136 or 145; Computer Science students only.
Antireq: PMATH 330, SE 112

CS 246 LAB,LEC,TST,TUT 0.50Course ID: 004380
Software Abstraction and Specification
Systematic methods for designing, coding, testing, and documenting medium-sized programs. Major topics include formal specification, abstraction, modularity and reusability. Students will become strong apprentice programmers able to write a clear specification for a problem, read a specification and design the software to implement it, use appropriate data structures in a program, write reusable code and reuse existing code when possible, debug a program, and adequately test a program.
[Note: Enrolment is restricted; see Note 1 above. Lab is not scheduled and students are expected to find time in open hours to complete their work. Offered: F,W,S]
Prereq: CS 241; Computer Science students only.
Antireq: GENE 342, SYDE 322/221

CS 251 LAB,LEC,TST 0.50Course ID: 004382
Computer Organization and Design
Overview of computer organization and performance. Basics of digital logic design. Combinational and sequential elements. Data representation and manipulation. Basics of processor design. Pipelining. Memory hierarchies. Multiprocessors.
[Note: Students enrolled in CS/DHW should enrol in ECE 222. Enrolment is restricted; see Note 1 above. Lab is not scheduled and students are expected to find time in open hours to complete their work. Offered: F,W,S]
Prereq: CS 134 or 136 or 145; Computer Science students only.
Antireq: ECE 222, PHYS 353, SE 141

CS 300s


CS 330 LEC 0.50Course ID: 004385
Management Information Systems
An introduction to information systems and their strategic role in business. Topics include types of information systems, organizational requirements, systems development strategies, decision support systems, data and information management, and information systems management, control and implementation. [Offered: F,W,S]
Prereq: CS 126/124/114 or 134 or 136; Level at least 2B; Not open to Computer Science students.
Antireq: AFM 241, CS 480/490, MSCI 441

CS 338 LAB,LEC 0.50Course ID: 004390
Computer Applications in Business: Databases
A user-oriented approach to the management of large collections of data. Methods used for the storage, selection and presentation of data. Common database management systems.
[Note: Lab is not scheduled and students are expected to find time in open hours to complete their work. Offered: F,W,S]
Prereq: CS 230 or 234 or 241 or 330; Not open to Computer Science students.
Antireq: CS 348, 448, ECE 456

CS 341 LAB,LEC 0.50Course ID: 004392
Algorithms
The study of efficient algorithms and effective algorithm design techniques. Program design with emphasis on pragmatic and mathematical aspects of program efficiency. Topics include divide and conquer algorithms, recurrences, greedy algorithms, dynamic programming, graph search and backtrack, problems without algorithms, NP-completeness and its implications.
[Note: Enrolment is restricted; see Note 1 above. Lab is not scheduled and students are expected to find time in open hours to complete their work. Offered: F,W,S]
Prereq: CS 240 and (CS 245 or SE 112) and MATH 239/249; Computer Science students only.
Antireq: ECE 250, SE 240, SYDE 423
(Cross-listed with CM 339)

CS 343 LAB,LEC 0.50Course ID: 011417
Concurrent and Parallel Programming
An introduction to concurrent and parallel programming, with an emphasis on language constructs. Major topics include: exceptions, coroutines, atomic operations, critical sections, mutual exclusion, semaphores, high-level concurrency, deadlock, interprocess communication, process structuring, shared memory and distributed architectures. Students will learn how to structure, implement and debug concurrent programs.
[Note: Enrolment is restricted; see Note 1 above. Lab is not scheduled and students are expected to find time in open hours to complete their work. Offered: F,W]
Prereq: CS 350; Computer Science students only.
Antireq: CS 342

CS 348 LAB,LEC 0.50Course ID: 004417
Introduction to Database Management
The main objective of this course is to introduce students to fundamentals of database technology by studying databases from three viewpoints: those of the database user, the database designer, and the database administrator. It teaches the use of a database management system (DBMS) by treating it as a black box, focusing only on its functionality and its interfaces. Topics include: introduction to database systems, relational database systems, database design methodology, SQL and interfaces, database application development, concept of transactions, ODBC, JDBC, database tuning, database Administration, and current topics (distributed databases, data warehouses, data mining).
[Note: Lab is not scheduled and students are expected to find time in open hours to complete their work. Offered: F,W,S]
Prereq: CS 240 or SE 240; Computer Science students only.
Antireq: CS 338, 448 (taken in S'06 or earlier), ECE 456

CS 349 LAB,LEC 0.50Course ID: 011727
User Interfaces
An introduction to contemporary user interfaces, including the basics of human-computer interaction, the user interface design/evaluation process, the event abstraction, user interface components, specification of user interfaces, and the architectures within which user interfaces are developed. Implementation and evaluation of a typical user interface is considered.
[Note: Lab is not scheduled and students are expected to find time in open hours to complete their work. Offered: W,S]
Prereq: (CS 240 or SE 240) and CS 246 and (MATH 115 or 136/146); Computer Science students only.
Antireq: CS 489/498, SE 382

CS 350 LAB,LEC 0.50Course ID: 011416
Operating Systems
An introduction to the fundamentals of operating system function, design, and implementation. Topics include concurrency, synchronization, processes, threads, scheduling, memory management, file systems, device management, and security.
[Note: Enrolment is restricted; see Note 1 above. Lab is not scheduled and students are expected to find time in open hours to complete their work. Offered: F,W,S]
Prereq: CS 240, 246, 251; Computer Science students only.
Antireq: CS 354, ECE 354, GENE/MTE 241

CS 360 LEC 0.50Course ID: 004398
Introduction to the Theory of Computing
Models of computers including finite automata and Turing machines. Basics of formal languages with applications to the syntax of programming languages. Alternate characterizations of language classes. Proving unrecognizability. Unsolvable problems and their relevance to the semantics of programming.
[Note: Enrolment is restricted; see Note 1 above. Offered: F,W,S]
Prereq: (CS 240 or SE 240), CS 241, (MATH 239/249 or CO 103); Computer Science students only.
Antireq: CS 365

CS 365 LAB,LEC 0.50Course ID: 011347
Models of Computation
Finite automata and regular expressions. Pushdown automata and context-free grammars. Turing machines and undecidability. Time and space complexity. Diagonalization and hierarchies. CS 365 covers the material in CS 360 at an accelerated pace plus additional topics in computational complexity.
[Note: CS 365 may be substituted for CS 360 in any degree plan or for prerequisite purposes; enrolment is restricted; see Note 1 above. Offered: W]
Prereq: CS 240, 241, MATH 239/249; Computer Science students only.
Antireq: CS 360

CS 370 LAB,LEC 0.50Course ID: 004400
Numerical Computation
Principles and practices of basic numerical computation as a key aspect of scientific computation. Visualization of results. Approximation by splines, fast Fourier transforms, solution of linear and nonlinear equations, differential equations, floating point number systems, error, stability. Presented in the context of specific applications to image processing, analysis of data, scientific modeling.
[Note: Lab is not scheduled and students are expected to find time in open hours to complete their work. Offered: F,W,S]
Prereq: (One of MATH 118, 119, 128, 138/148), (One of MATH 114, 115, 136/146), (One of CS 230, 234, 251, SE 141, ECE 223); Not open to General Mathematics students.
Antireq: AMATH 341/CM 271/CS 371, CS 337, ECE 204, 304

CS 371 LAB,LEC 0.50Course ID: 011363
Introduction to Computational Mathematics
A rigorous introduction to the field of computational mathematics. The focus is on the interplay between continuous models and their solution via discrete processes. Topics include: pitfalls in computation, solution of linear systems, interpolation, discrete Fourier transforms and numerical integration. Applications are used as motivation.
[Note: CS 371 may be substituted for CS 370 in any degree plan or for prerequisite purposes; lab is not scheduled and students are expected to find time in open hours to complete their work. Offered: F,W]
Prereq: CS 134 or 136, MATH 235/245, 237/247; Not open to General Mathematics students.
Antireq: CS 337, 370, ECE 204
(Cross-listed with AMATH 341, CM 271)

CS 372 LAB,LEC 0.50Course ID: 011444
Computational Linear Algebra
Basic error analysis and estimation of errors in solving linear equations. Special methods for solving systems having special features. Computing and using orthogonal factorizations of matrices. The QR algorithms for solving the algebraic eigenvalue problem. Computation and uses of the singular value decomposition (SVD).
[Note: Lab is not scheduled and students are expected to find time in open hours to complete their work. Offered: F,W]
Prereq: AMATH 341/CM 271/ CS 371 or CS 370; Not open to General Mathematics students
(Cross-listed with CM 372)

CS 398 LEC 0.50Course ID: 011409
Topics in Computer Science
See the Course Offerings List for topics available.
Prereq: CS 240, 245, 246; Computer Science students only

CS 399 RDG 0.50Course ID: 011410
Readings in Computer Science
Prereq: CS 240, 245, 246; Computer Science students only

CS 400s


CS 430 LEC 0.50Course ID: 004404
Applications Software Engineering
An investigation into the role and function of software engineering practice in the construction of computer based systems. Topics include: requirements and specification; documentation techniques; analysis and design; implementation; testing and maintenance; management issues. [Offered: F, W]
Prereq: CS 330; Level at least 3A; Not open to Computer Science students.
Antireq: CS 446/ECE 452, SE 464

CS 432 LEC 0.50Course ID: 004405
Business Systems Analysis
Survey of organization and management theory. Systems theory and the systems approach. Systems design. Database concepts. Implementation and evaluation of computer based information systems. [Offered: F,W,S]
Prereq: CS 330; Level at least 3A; Not open to Computer Science students.
Antireq: AFM 341/ACC 442, CS 445/ECE 451, MSCI 444, SE 463

CS 436 LEC 0.50Course ID: 004407
Distributed Computer Systems
An introduction to networks and computer systems, reliable communication, layered models, distributed file systems, cryptography, concurrency issues. [Offered: W]
Prereq: CS 230 or 241; Not open to Computer Science students.
Antireq: CS 454, ECE 428

CS 437 LAB,LEC 0.50Course ID: 004408
Computer Simulation of Complex Systems
Building and validation of stochastic simulation models useful in computing, operations research, engineering and science. Related design and estimation problems. Variance reduction. The implementation and analysis of simulation results. [Offered: W,S]
Prereq: (CS 126/124/114or134or136orSYDE 221/322) and (STAT 231/241orSYDE 214); Not open to CS or General Math students.
Antireq: CM 361/STAT 341, CS 457
(Cross-listed with STAT 340)

CS 442 LAB,LEC 0.50Course ID: 004410
Principles of Programming Languages
An exposure to important concepts and issues in contemporary programming languages. Data types, abstraction, and polymorphism. Program structure. Lambda calculus and functional programming, logic programming, object-oriented programming. Semantics of programming languages. Critical comparison of language features and programming methodologies using examples drawn from a variety of programming languages including Lisp, Prolog, ML, Ada, Smalltalk, Icon, APL, and Lucid. Programming assignments involve the use of some of these languages.
[Note: Lab is not scheduled and students are expected to find time in open hours to complete their work. Offered: W]
Prereq: CS 350 or 354 or ECE 354; Computer Science students only

CS 444 LAB,LEC 0.50Course ID: 004412
Compiler Construction
Phases of compilation. Lexical analysis and a review of parsing. Compiler-compilers and translator writing systems. LEX and YACC. Scope rules, block structure, and symbol tables. Runtime stack management. Parameter passage mechanisms. Stack storage organization and templates. Heap storage management. Intermediate code. Code generation. Macros.
[Note: This course involves project work. Offered: W]
Prereq: CS 350 or 354 or ECE 354; Computer Science students only

CS 445 DIS,LAB,LEC,TUT 0.50Course ID: 004413
Software Requirements Specification and Analysis
Introduction to the requirements definition phase of software development. Models, notations, and processes for software requirements identification, representation, validation, and analysis. An important component of the course is a group project: the software requirements specification of a large software system.
[Note: This course involves project work. Meet times and exact meet types may vary depending on instructor. Offered: F, W]
Prereq: CS 342 or 350; Computer Science students only.
Antireq: CS 432, SE 463
(Cross-listed with ECE 451)

CS 446 DIS,LAB,LEC,TUT 0.50Course ID: 004414
Software Design and Architectures
Software design process and its models, representations of design/architecture, software architectures and design plans, design methods, design state assessment, design quality assurance, design verification. Implementation of a group project specified in CS 445/ECE 451.
[Note: This course involves project work. Meet times and exact meet types may vary depending on instructor. Offered: F, S]
Prereq: CS 445/ECE 451; Computer Science students only.
Antireq: CS 430, SE 464
(Cross-listed with ECE 452)

CS 447 DIS,LAB,LEC,TUT 0.50Course ID: 004416
Software Testing, Quality Assurance and Maintenance
Systematic testing of software systems, software verification, symbolic execution, software debugging, quality assurance, measurement and prediction of software reliability, project management, software maintenance, software reuse, reverse engineering. Application to the group project from CS 445/ECE 451 and CS 446/ECE 452.
[Note: This course involves project work. Meet times and exact meet types may vary depending on instructor. Offered: W]
Prereq: ECE 452 or CS 446; 4B Computer Engineering/Software Engineering Option or Electrical Engineering/Software Engineering Option or Computer Science/Software Engineering Option.
Antireq: SE 465
(Cross-listed with ECE 453)

CS 448 LAB,LEC 0.50Course ID: 012300
Database Systems Implementation
The objective of this course is to introduce students to fundamentals of building a relational database management system. The course focuses on the database engine core technology by studying topics such as storage management (data layout, disk-based data structures), indexing, query processing algorithms, query optimization, transactional concurrency control, logging and recovery.
[Note: Lab is not scheduled and students are expected to find time in open hours to complete their work. Offered: F,W,S]
Prereq: CS 240, 348 and (CS 350 or 354 or ECE 354); Computer Science students only.
Antireq: ECE 456

CS 450 LAB,LEC 0.50Course ID: 004418
Computer Architecture
The course is intended to provide the student with an appreciation of modern computer design and its relation to system architecture, compiler technology and operating system functionality. The course places an emphasis on design based on the measurement of performance and its dependency on parallelism, efficiency, latency and resource utilization.
[Note: Lab is not scheduled and students are expected to find time in open hours to complete their work. Offered: W]
Prereq: (CS 245 and 251) or CS 354 or (ECE 222 and SE 112); Computer Science students only.
Antireq: ECE 327/427, 429

CS 452 LAB,LEC 0.50Course ID: 004419
Real-time Programming
Intended to give students experience with tools and techniques of real-time programming, this course includes not only issues of microcomputer architecture and a real-time programming language and operating system, but also hands-on experience programming a microcomputer for applications such as process control, data acquisition and communication.
[Note: This course involves project work. Offered: F,W,S]
Prereq: CS 350 or 354 or ECE 354; Computer Science students only

CS 454 LAB,LEC 0.50Course ID: 004420
Distributed Systems
An introduction to distributed systems, emphasizing the multiple levels of software in such systems. Specific topics include fundamentals of data communications, network architecture and protocols, local-area networks, concurrency control in distributed systems, recovery in distributed systems, and clock synchronization.
[Note: Lab is not scheduled and students are expected to find time in open hours to complete their work. Offered: F,W,S]
Prereq: CS 350 or 354 or ECE 354; Computer Science students only.
Antireq: CS 436, ECE 454

CS 456 LAB,LEC 0.50Course ID: 010167
Computer Networks
An introduction to network architectures and protocols, placing emphasis on protocols used in the Internet. Specific topics include application layer protocols, network programming, transport protocols, routing, multicast, data link layer issues, multimedia networking, network security, and network management. [Offered: F,W,S]
Prereq: CS 350 or 354; Computer Science students only.
Antireq: CS 436, ECE 428

CS 457 LAB,LEC 0.50Course ID: 004422
System Performance Evaluation
Basic techniques of system performance evaluation. Specific topics include: performance modeling, discrete event simulation, verification and validation of simulation models, analysis of simulation output, analysis of single server queue and queueing networks, modeling of computer systems, networks, and other queueing or non-queueing systems.
[Note: Lab is not scheduled and students are expected to find time in open hours to complete their work. Offered: W]
Prereq: CS 246 and (STAT 206 or 231/241); Computer Science students only.
Antireq: CS 437/STAT 340

CS 462 LEC 0.50Course ID: 004424
Formal Languages and Parsing
Languages and their representations. Grammars -- Chomsky hierarchy. Regular sets and sequential machines. Context-free grammars -- normal forms, basic properties. Pushdown automata and transducers. Operations on languages. Undecidable problems in language theory. Applications to the design of programming languages and compiler construction. [Offered: F]
Prereq: CS 360 or 365; Computer Science students only

CS 466 LEC 0.50Course ID: 004426
Algorithm Design and Analysis
Algorithmic approaches and methods of assessment that reflect a broad spectrum of criteria, including randomized algorithms, amortized analysis, lower bounds, approximation algorithms, and on-line algorithms. Particular examples will be chosen from different areas of active research and application. [Offered: F,S]
Prereq: CM 339/CS 341; Computer Science students only

CS 467 LEC 0.50Course ID: 011497
Introduction to Quantum Information Processing
Basics of computational complexity; basics of quantum information; quantum phenomena; quantum circuits and universality; relationship between quantum and classical complexity classes; simple quantum algorithms; quantum Fourier transform; Shor factoring algorithm; Grover search algorithm; physical realization of quantum computation; error-correction and fault-tolerance; quantum key distribution.
Prereq: MATH 114 or 115 or 235/245; Level at least 4A; Not open to General Mathematics students
(Cross-listed with CO 481, PHYS 467)

CS 472 LAB,LEC 0.50Course ID: 004428
Numerical Solution of Large Sparse Systems of Equations
Introduction, example applications from finite element analysis, optimization. Data structures, basic graph theory. Direct methods: symmetric, non-symmetric structures, ordering methods: RCM, minimum degree, nested dissection. Iterative methods: steepest descent, conjugate gradient, GMRES, CGSTAB. Preconditioning methods: level of fill, drop tolerance. Methods for high performance architectures.
[Note: Lab is not scheduled and students are expected to find time in open hours to complete their work. Offered: F]
Prereq: AMATH 341/CM 271/CS 371 or CS 370; Not open to General Mathematics students
(Cross-listed with CM 472)

CS 473 LAB,LEC 0.50Course ID: 011446
Medical Image Processing
An introduction to computational problems in medical imaging. Sources of medical images (MRI, CT, ultrasound, PET) as well as reconstruction methods for MRI and CT. Image manipulation and enhancement such as denoising and deblurring. Patient motion correction and optimal image alignment. Tissue classification and organ delineation using image topology.
[Note: Lab is not scheduled and students are expected to find time in open hours to complete their work. Offered: W]
Prereq: (AMATH 341/CM 271/CS 371 or CS 370) and (MATH 128 or MATH 237/247); Not open to General Mathematics students
(Cross-listed with CM 473)

CS 476 LAB,LEC 0.50Course ID: 003352
Numeric Computation for Financial Modeling
The interaction of financial models, numerical methods, and computing environments. Basic computational aspects of option pricing and hedging. Numerical methods for stochastic differential equations, strong and weak convergence. Generating correlated random numbers. Time-stepping methods. Finite difference methods for the Black-Scholes equation. Discretization, stability, convergence. Methods for portfolio optimization, effect of data errors on portfolio weights.
[Note: Lab is not scheduled and students are expected to find time in open hours to complete their work. Offered: W]
Prereq: (AMATH 341/CM 271/CS 371 or CS 370) and STAT 231/241; Not open to General Mathematics students

CS 482 LEC,TUT 0.50Course ID: 004434
Computational Techniques in Biological Sequence Analysis
Computer science principles and algorithms in biological sequence analysis. Topics include algorithms for sequence comparison, for large-scale database search in biological databases, for sequence assembly, for evolutionary tree reconstruction, for identifying important features in DNA and RNA sequences, and underlying computational techniques for understanding strings and trees and for making probabilistic inferences. [Offered: F]
Prereq: BIOL 365, CS 246, CM 339/CS 341, STAT 231/241

CS 483 LEC 0.50Course ID: 010043
Computational Techniques in Structural Bioinformatics
Algorithms and techniques used in the identification and functional characterization of cellular proteins. Topics include: protein databases, gene expression analysis, protein structure prediction, protein function prediction, active site detection and ligand docking, protein-protein interaction, HTCS (High Throughput Conformational Search), and QSAR (Quantitative Structure-Activity Relationships). [Offered: W]
Prereq: BIOL 365, CM 339/CS 341, STAT 231/241

CS 486 LAB,LEC 0.50Course ID: 004435
Introduction to Artificial Intelligence
Goals and methods of artificial intelligence. Methods of general problem solving. Introduction to mathematical logic. Mechanical theorem proving. Game playing. Natural language processing.
[Note: Lab is not scheduled and students are expected to find time in open hours to complete their work. Offered: F,W,S]
Prereq: (CM 339/CS 341 or SE 240) and (CS 350 or 354 or ECE 354); Computer Science students only.
Coreq: STAT 206 or 231/241.
Antireq: ECE 457

CS 487 LAB,LEC 0.50Course ID: 004436
Introduction to Symbolic Computation
An introduction to the use of computers for symbolic mathematical computation, involving traditional mathematical computations such as solving linear equations (exactly), analytic differentiation and integration of functions, and analytic solution of differential equations.
[Note: Lab is not scheduled and students are expected to find time in open hours to complete their work. Offered: W]
Prereq: CS 234 or 240 or SE 240; Honours Mathematics or Software Engineering students only
(Cross-listed with AMATH 447, CM 433)

CS 488 LAB,LEC 0.50Course ID: 004437
Introduction to Computer Graphics
Software and hardware for interactive computer graphics. Implementation of device drivers, 3-D transformations, clipping, perspective, and input routines. Data structures, hidden surface removal, colour shading techniques, and some additional topics will be covered.
[Note: This course involves project work. Offered: F,W,S]
Prereq: (CM 339/CS 341 or SE 240) and (CS 342 or 350 or ECE 354) and (CS 370 or 371); Computer Science students only

CS 489 LEC 0.50Course ID: 010044
Advanced Topics in Computer Science
See the Course Offerings List for topics available.
Prereq: CS 350 or 354 or ECE 354; Computer Science students only

CS 490 LEC 0.50Course ID: 004433
Information Systems Management
The integration of business and technical considerations in the design, implementation and management of information systems. Topics include: IS planning and development; business, management, executive, and strategic information systems, including case studies of selected large- scale systems; decision support systems; end-user training and development; systems security, disaster planning and recovery. Practical examples of information systems in industry. [Offered: W]
Prereq: CS 350 or 354 or ECE 354; Computer Science students only.
Antireq: AFM 241, CS 330, MSCI 441

CS 492 LEC 0.50Course ID: 004438
The Social Implications of Computing
This course is designed to consider the problems encountered by individuals, organizations and society as computer technology is adopted, with a view towards assessing possible courses of action. [Offered: W]
Prereq: (CS 240 or SE 240) and CS 246; Computer Science students only.
Antireq: MSCI 442

CS 497 LEC 0.50Course ID: 012280
Multidisciplinary Studies in Computer Science
See the Course Offerings list for topics available.
Prereq: CM 339/CS 341 or CS 350; Computer Science students only

CS 499R RDG 0.50Course ID: 004444
Readings in Computer Science
Department Consent Required
Prereq: CS 350 or 354; Computer Science students only

CS 499T PRJ 0.50Course ID: 012560
Honours Thesis
The student will undertake new analysis, synthesis, measurement, or experimentation to produce a document that demonstrates a depth of understanding of a topic that goes beyond what is obtained in a standard undergraduate education.
[Note: Offered for CR/NCR only. CS 499R is recommended. A detailed thesis proposal and names of a supervisor and reader are required.]
Department Consent Required
Prereq: Computer Science students only


The Undergraduate Calendar is published by the Office of the Registrar, University of Waterloo, Waterloo, ON N2L 3G1 Canada

Contact Information: Need academic advisement help? If so, please direct your inquiry to the appropriate Undergraduate Faculty Advisor by visiting
the Undergraduate Faculty Advisors page on the Registrar's Office website for contact information.
If you are reporting technical problems and broken links in the calendar, send an email to roucal@uwaterloo.ca.
All other inquiries may be directed to: registrar@uwaterloo.ca.