Undergraduate Calendar 2002-2003


University of Waterloo
UW  HOME
CALENDAR  CONTENTS
UNDERGRADUATE COURSE DESCRIPTIONS  INDEX

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 131, 132, 133, 134 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, 342, 343, 350, 354, 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 the Faculty of Mathematics have a choice of three entry points in their Computer Science courses. Students with little or no experience programming repetition and selection structures (ifs and loops) should begin with CS 131, followed by CS 132 and then CS 134. Students who have substantial experience with repetition and selection should begin with CS 133, followed by CS 134. Students who are familiar with Java or C++, including strong experience in object-oriented programming, are encouraged to begin with CS 134. Students in the CS Major plans are reminded that a minimum of 15 CS courses are required even for those beginning with CS 134.

  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. Students in first year are limited to one Computer Science course per term.

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

  7. 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.

  8. A CS course may not be taken for credit if it is the prerequisite of another CS course that has already been passed.

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

  10. 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.

    UW  HOME
    CALENDAR  CONTENTS
    UNDERGRADUATE COURSE DESCRIPTIONS  INDEX


    The Undergraduate Calendar is published by the
    Office of the Registrar, University of Waterloo, Waterloo, ON N2L 3G1 Canada
    Inquiries: infoucal@www.adm.uwaterloo.ca
    Revised April 2002

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: OAC Computer Science or 4M Computer and Information Science or any University of Waterloo Computer Science course, ECE 150, GENE 121, PHYS 239
Also offered by Distance Education

CS 121 LAB,LEC,PRA,TST 0.50Course ID: 011365
Introduction to Object-Oriented Programming
Fundamental concepts of problem solving using a computer. Problem solving through computer programming. Emphasis on object-oriented computer programming, including data types, control structures, structured programming, and modular algorithm design. Use of existing libraries. Extending classes and polymorphism. UML as a design description tool. [Offered: F,W]
Prereq: Not open to Honours Mathematics students.
Antireq: CS 102, 112, 113, 120, 130, 131, 133, Grade 11 Computer and Information Science or equivalent experience, CIVE 121, ECE 150, GENE 121, PHYS 239, SYDE 121

CS 122 LAB,LEC,PRA,TST 0.50Course ID: 011372
Principles of Program Design
Fundamental concepts of object-oriented analysis and design. Review of control structures and library objects. Design of data: arrays of primitive types and objects, vectors. Method design: choosing interfaces, overloading and overriding, stepwise refinement. Single class design: patterns, reuse, security, reliability, documentation, testing. User interface design: separation from application, GUI components, layout managers. [Offered: W,S]
Prereq: CS 121 or 131; Not open to Honours Mathematics students.
Antireq: CS 130, 132, 133, Grade 12 Computer and Information Science, 4M Computer and Information Science

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,W,S]
Prereq: CS 112 or Grade 11 or 12 or OAC Computer Science or 4M Computer and Information Science; Not open to Honours Mathematics students.
Antireq: CS 113, 121, 122, 130, 131, 132, 133
Also offered by Distance Education

CS 124 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,W,S]
Prereq: CS 122 or 123 or 130 or 132 or 133: Not open to Honours Mathematics students.
Antireq: CS 114, 134, 212
Also offered by Distance Education

CS 131 LAB,LEC,PRA,TST 0.50Course ID: 011373
Introduction to Object-Oriented Programming
Fundamental concepts of problem solving using a computer. Problem solving through computer programming. Emphasis on object-oriented computer programming, including data types, control structures, structured programming, and modular algorithm design. Use of existing libraries. Extending classes and polymorphism. UML as a design description tool.
[Note: See Note 2 above. Offered: F,W]
Prereq: Honours Mathematics students only.
Antireq: CS 102, 112, 113, 120, 121, 130, 133, Grade 11 Computer and Information Science or equivalent experience, CIVE 121, ECE 150, GENE 121, PHYS 239, SYDE 121

CS 132 LAB,LEC,PRA,TST 0.50Course ID: 011374
Principles of Program Design
Fundamental concepts of object-oriented analysis and design. Review of control structures and library objects. Design of data: arrays of primitive types and objects, vectors. Method design: choosing interfaces, overloading and overriding, stepwise refinement. Single class design: patterns, reuse, security, reliability, documentation, testing. User interface design: separation from application, GUI components, layout managers.
[Note: See Note 2 above. Offered: W,S]
Prereq: CS 131; Honours Mathematics students only.
Antireq: CS 122, 130, 133, Grade 12 Computer and Information Science, 4M Computer and Information Science or equivalent experience

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 at St. Jerome's University in the Fall term. Offered: F,W]
Instructor Consent Required
Prereq: CS 120 or Grade 11 or 12 or OAC Computer Science or 4M Computer and Information Science; Honours Mathematics or Software Engineering students only.
Antireq: CS 112, 121, 122, 123, 130, 131, 132
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]
Instructor Consent Required
Prereq: CS 130 or 132 or 133; Honours Mathematics students only.
Antireq: CS 124, 212
Also offered at St. Jerome's University

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 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 234; 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 114 or 134; 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 trees, operations on sets, sorting, priority queues, memory management. A brief introduction to database systems and the analysis of data structure performance and use in these systems.
[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.
Coreq: MATH 239/249.
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; Honours Mathematics students only.
Antireq: CS 230, GENE 344

CS 245 LAB,LEC,TST 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. 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; Computer Science students only

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

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 223. 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; Computer Science students only.
Antireq: ECE 223, PHYS 353, SE 141, SYDE 192

CS 300s


CS 316 LAB,LEC 0.50Course ID: 004384
Introduction to Statistical Problem Solving by Computer
This is an applications oriented course which prepares the nonmathematical student to use the computer as a research tool. Topics include aids for statistical analysis and the preparation of documents such as reports and theses. The course provides sufficient background for application to other problems specific to the individual's field.
[Note: Lab is not scheduled and students are expected to find time in open hours to complete their work. Offered: W]
Prereq: One of ECON 221, ENVS 278, ISS 250R, KIN 222, PSCI 214, PSYCH 292, REC 371, SOC 280, any STAT course; Not open to Honours Mathematics students.
Antireq: STAT 324

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 114 or 134; Level at least 2B; Not open to Computer Science students.
Antireq: ACC 241, CS 480, 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 241 or 330; Not open to Computer Science students.
Antireq: CS 448, ECE 456

CS 339 LAB,LEC 0.50Course ID: 011439
Computational Discrete Mathematics
Models of computation. An overview of complexity: P, NP, and NP-complete problems. Introduction to the analysis of algorithms through development of number-theoretic algorithms. Computation over rings and finite fields. Graph-theoretic algorithms and applications, including search, planarity testing, and shortest-path problems.
[Note: Lab is not scheduled and students are expected to find time in open hours to complete their work. Offered: W,S]
Prereq: MATH 239 and (CS 234 or 240); Not open to General Mathematics students.
Antireq: CS 341
(Cross-listed with CM 339, CO 339)

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, 246; Computer Science students only.
Coreq: CS 360 or 365.
Antireq: ECE 250, SE 240, SYDE 423

CS 342 LAB,LEC 0.50Course ID: 004393
Control Structures
An introduction to understanding concurrency and writing concurrent programs, with an emphasis on language constructs used to express and control concurrency, and different concurrent programming techniques and styles. Major topics include: coroutines, mutual exclusion, semaphores, high-level concurrency, deadlock, interprocess communication and process structuring. Students will learn how to structure, implement and debug basic 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,S]
Prereq: CS 240, 246; Computer Science students only.
Antireq: CS 343

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 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, 245, 246; Computer Science students only.
Antireq: CS 354, ECE 354, GENE 241

CS 354 LAB,LEC 0.50Course ID: 004396
Operating Systems
An introduction to the basic components of a modern operating system. Major topics include: concurrency in the large, memory management, device management, file systems, security, networks and distributed systems. Students will learn how to write complex programs that accomplish part of their operation through interaction with the operating system.
[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 342; Computer Science students only.
Antireq: CS 350, ECE 354, GENE 241

CS 360 LEC,TUT 0.50Course ID: 004398
Introduction to the Theory of Computing
Models of computers including finite and pushdown automata. Basics of formal languages with applications to the syntax of programming languages. Alternate characterizations of language classes. Proving unrecognizability.
[Note: Enrolment is restricted; see Note 1 above. Offered: F,W]
Prereq: CS 240, 246; 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: MATH 138/148, (MATH 115 or 126 or 235/245) and one of CS 230, 241; Not open to General Mathematics students.
Antireq: 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: Lab is not scheduled and students are expected to find time in open hours to complete their work. Offered: W]
(Cross-listed with AMATH 341)

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]
Prereq: CS 330; Level at least 3A; Not open to Computer Science students.
Antireq: CS 446, 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: ACC 442, CS 445, 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]
Prereq: (CS 114 or 124 or 134 or SYDE 221) and (STAT 231/241 or SYDE 214); Not open to Computer Science or General Mathematics students.
Antireq: CS 457, STAT 371
(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; 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; 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 ECE 451/CS 445.
[Note: This course involves project work. Meet times and exact meet types may vary depending on instructor. Offered: F, S]
Prereq: CS 445; 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 ECE 451/CS 445 and ECE 452/CS 446.
[Note: This course involves project work. Meet times and exact meet types may vary depending on instructor. Offered: W]
Prereq: CS 446, STAT 231/241; Computer Science students only.
Antireq: SE 465
(Cross-listed with ECE 453)

CS 448 LAB,LEC 0.50Course ID: 004417
Introduction to Database Management
The course introduces the student to the techniques that have been developed for processing very large collections of data. The requirement that data be held on secondary storage (disks and tapes) has an enormous impact on the design of algorithms to access that data.
[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; Computer Science students only.
Antireq: CS 338, 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 354 or ECE 223 or (CS 251 and CS 245); Computer Science students only

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; Computer Science Students only.
Antireq: ECE 354

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; 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: W]
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: STAT 231/241 and CS 246; Computer Science students only.
Antireq: CS 437

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: CS 341; Computer Science students only

CS 467 LEC 0.50Course ID: 011497
Introduction to Quantum Information Processing
Quantum superposition, interference, and entanglement. Postulates of quantum mechanics. Quantum computational complexity. Quantum algorithms. Quantum communication and cryptography. Quantum error correction. Implementations.
Prereq: MATH 235/245 or (PHYS 364 and 365); Level at least 4A
(Cross-listed with CO 481, PHYS 467)

CS 472 LAB,LEC 0.50Course ID: 004428
Numerical Linear Algebra
Direct methods for the numerical solution of linear systems of equations and linear least squares problems. Numerical methods for solving the algebraic eigenvalue problem.
[Note: Lab is not scheduled and students are expected to find time in open hours to complete their work. Offered: W]
Prereq: CS 370 or 337

CS 476 LAB,LEC 0.50Course ID: 003352
Numeric Computation for Dynamic Simulation
The interaction of continuous dynamic simulation models, numerical methods, and computing environments. Constant coefficient models for restricted operating ranges, linearization. Time stepping techniques for models based on general systems of ordinary differential equations. Stiffness and nonlinearity. Simulation of computer memory circuits. Wave type linear partial differential equations.
[Note: Lab is not scheduled and students are expected to find time in open hours to complete their work. Offered: F]
Prereq: CS 370 or 337
(Cross-listed with AMATH 441)

CS 480 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; Computer Science students only.
Antireq: ACC 241, CS 330, MSCI 441

CS 482 LEC 0.50Course ID: 004434
Computational Techniques in Genomics and Proteomics
The computer science principles underlying computational techniques in genomics and proteomics research will be introduced and explored. Topics include data management, data mining, data integration, gene expression analysis, gene prediction, pattern finding, protein function, protein structure, protein-protein interaction and protein identification. [Offered: F]
Prereq: BIOL 365, CS 341, STAT 231/241

CS 483 LEC 0.50Course ID: 010043
Computational Techniques in Molecular Evolution
An introduction to the types of computational questions posed in the study of evolution, including models of evolution, inference algorithms, and genome events. Techniques will be examined from both a theoretical and a practical perspective. [Offered: W]
Prereq: BIOL 365, 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: CS 341 and (CS 350 or CS 354); Computer Science students only.
Coreq: STAT 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 246, PMATH 334; Computer Science students only

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: CS 370 and (CS 342 or 350) and CS 341; Computer Science students only

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, 246; Computer Science students only

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

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

UW  HOME
CALENDAR  CONTENTS
UNDERGRADUATE COURSE DESCRIPTIONS  INDEX


The Undergraduate Calendar is published by the
Office of the Registrar, University of Waterloo, Waterloo, ON N2L 3G1 Canada
Inquiries: infoucal@www.adm.uwaterloo.ca
Revised April 2002