[How to read the course descriptions]

*
Undergraduate Advisors
*

A. Pidduck, DC 3106, ext. 4662

B.W. Becker, DC 3105, ext. 4661

**Note:**

*The Department of Computer Science has two distinct streams of courses, one for students who have been admitted into a Computer Science Major program, 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. 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 will be available to all other students in the University, subject to resource limitations. CS 130 and 134 are normally restricted to students in the Faculty of Mathematics.**Several CS Major courses are also open to other students. In addition, where resources permit, students with exceptionally high academic standing in other programs may be considered for admission to restricted CS Major courses on an individual basis. To be considered, students should consult a Computer Science Undergraduate Advisor.**Computer Science Major courses require students to have experience programming with a block-structured imperative language such as Pascal, C or Turing. These concepts of computer programming are covered in CS 130. Students who have substantial programming experience will be permitted to start their program with CS 134, which is an introduction to the basic concepts of computer science. Students in CS Major programs who do not take CS 130 will be required to take an additional third or fourth-year CS Major course.**The Computer Science Department 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 preregister during published University preregistration 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.**Regular students will not normally be permitted to enrol in Computer Science courses during the Spring term.**Co-op students will not normally be permitted to enrol in Computer Science courses while on a work term.**All other 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 program.**Students in first and second year are limited to one Computer Science course per term. Students in CS Major programs are limited to three CS courses per term in third and fourth year. Other students are limited to two CS courses per term in third and fourth year.**Please note that the terms in which courses are offered may deviate from those indicated below. Students are advised to consult the University Course Offerings List published at preregistration time.**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.**Students who have demonstrated exceptionally strong academic performance will be permitted to enrol in 600-level CS courses at the discretion of the instructor, if there is available capacity. Courses at the 600 level may not be used to satisfy a program requirement for minimum number of courses in Computer Science at the 400 level.**The prerequisite phrase "x-year standing" means that a student must be registered in year x or higher.**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.**Since CS 462 and 476 are offered only in the Fall term, Co-op students in Stream 8 will need to carefully plan the sequence of prerequisites in order to take these courses in the 3B term.*

**CS 100 F,W,S 2C,2L 0.5**

**Introduction to Computer Usage
**

An introduction to universally applicable computer services.
Hands-on
experience with common software and hardware, supported by examples of
applications and social implications chosen from many disciplines. Topics
include: electronic mail, word processing, spreadsheets, record
management, and hardware and software concepts.

*
CS 100 cannot be counted for credit toward a BMath Honours degree.
*

**CS 102 F,W,S 3C,2L 0.5**

**Introduction to Programming for Scientific Applications
**

Fundamental techniques of algorithm design and program
development. Topics include: structured programming, simple data
elements, sequential operations, iterative statements, selection statements,
data aggregations, functions and subroutines. Emphasis is placed on
mathematical and statistical computing.

*Prereq: Computer literacy (e.g. CS 100 or extensive high
school computing)
Antireq: CS 112, 130
CS 102 cannot be counted for credit toward a BMath Honours degree.
*

**CS 112 W 2C,2T,2L 0.5**

**Introduction to Computer Programming
**

Fundamental techniques of algorithm design and program
development. Topics include: structured programming, simple data
elements, sequential operations, iterative statements, selection statements,
data aggregations, functions and procedures, and an introduction to the
development of databases. The examples demonstrate a variety of
applications for computer programming.

*Prereq: Computer literacy (e.g. CS 100 or extensive high
school computing)
Antireq: CS 102, 130
CS 112 cannot be counted for credit toward a BMath Honours degree.
*

**CS 130 F,W,S 2C,2T,2L 0.5**

**Concepts of Computer Programming
**

Fundamental concepts of computer programming, including data
types, structured programming, algorithm design, and numerical methods.
Sample programs and exercises will be drawn from various areas of
mathematics. Labs will emphasize programming.

*Prereq: Full-time degree registration in the Faculty of
Mathematics
Antireq: CS 102, 112
CS 130 should be taken before CS 134 by students who have not had
substantial programming experience.
Also offered at St. Jerome's College in the Fall term
*

**CS 134 F,W,S 3C,1T,3L 0.5**

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

*Prereq: Full-time degree registration in the Faculty of
Mathematics, and CS 130 or an equivalent level of knowledge and
experience.
Antireq: CS 212
Also offered at St. Jerome's College in the Winter term
*

**CS 212 F 3C 0.5**

**Programming Principles and Practice
**

High-level languages, including their specification and translation.
Structured programming. Use of data structures, including lists and trees.
Recursion. Sorting. Introduction to computational complexity and
correctness.

*Prereq: One of CS 102, 112, or equivalent
Antireq: CS 134
CS 212 cannot be counted for credit toward a BMath Honours degree.
*

**CS 230 F,W,S 3C 0.5**

**Introduction to Computers and Computer Systems
**

Basic computer architecture, operating system services, and
programming languages in support of development of software systems.

*Prereq: One of CS 134, 212
Antireq: CS 241, 246, 342
CS 230 cannot be counted for credit in a Computer Science Major
program.
*

**CS 241 F,W,S 3C 0.5**

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

*Prereq: CS 246
Antireq: CS 230
*

**CS 246 F,W,S 3C 0.5**

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

*Prereq: CS 134
Antireq: CS 230
*

**CS 316 W 3C,1L 0.5**

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

*Prereq: One statistics course and computer literacy (e.g. CS
100 or high school computing), or consent of instructor
CS 316 cannot be counted for credit toward a BMath degree.
*

**CS 330 F,W,S 3C 0.5**

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

*Prereq: 2B standing and one of CS 134, 212
Antireq: CS 480, MSCI 441, (ACC 241, 442)
CS 330 cannot be counted for credit in a Computer Science Major
program.
*

**CS 334 W 3C 0.5**

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

*Prereq: One of CS 230, 246 and third-year standing
Antireq: CS 340
CS 334 cannot be counted for credit in a Computer Science Major
program.
*

**CS 337 W 3C 0.5**

**Introduction to Numerical Analysis
**

Pitfalls in computation; solution of linear algebraic equations;
polynomial interpolation; least squares; numerical integration and
differentiation. The intent is to expose students to the theory behind
modern algorithms for solving mathematical problems.

*Prereq: CS 134, MATH 136, 138. One of CS 230, 246 is
recommended.
MATH 235 and 237 are recommended
Antireq: CS 370, 372, 374
CS 337 cannot be counted for credit in a Computer Science Major
program.
*

**CS 338 F,W,S 3C 0.5**

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

*Prereq: One of CS 230, 246, 330
Antireq: CS 448
CS 338 cannot be counted for credit in a Computer Science Major
program.
*

**CS 340 F,W,S 3C 0.5**

**Data Structures and Algorithms
**

The use of abstract data types in the design of data structures;
efficiency dictionaries; sorting and priority queues. Techniques for
designing efficient algorithms; application to problems on graphs; design of
heuristics and approximate solutions to apparently intractable problems.

*Prereq: CS 241, C&O 230, and registration in a Computer
Science Major program
Antireq: CS 334
*

**CS 342 F,W,S 3C 0.5**

**Concurrent Programming
**

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.

*Prereq: CS 241 and registration in a Computer Science
Major program
Antireq: CS 230, 242
*

**CS 351 F,W,S 3C 0.5**

**Digital Design and Architecture
**

Boolean algebra. Design and analysis of both combinational and
sequential circuits. Registers, counters, memory, programmable logic.
CPU control logic, the arithmetic-logic unit. Input/output and interrupts.

*Prereq: CS 241 and registration in a Computer Science
Major program
Antireq: E&CE 223
*

**CS 354 F,W 3C 0.5**

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

*Prereq: CS 342 and registration in a Computer Science
Major program
*

**CS 360 F,W 3C 0.5**

**Introduction to the Theory of Computing
**

Models of computers including finite automata and Turing
machines. Basics of formal languages with applications to syntax of
programming languages. Unsolvable problems and their relevance to the
semantics of programming. Concepts of computational complexity
including NP completeness.

*Prereq: CS 241, C&O 230
*

**CS 370 F,W,S 3C 0.5**

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

*Prereq: MATH 235, 237 and one of CS 230, 246
Antireq: CS 337, 372, 374
Replaces CS 372, 374 effective Fall 1995
*

**CS 372 F,W 3C 0.5**

**Introduction to Scientific Computation: Numerical Linear
Algebra
**

Pitfalls in computation. Direct solution of linear algebraic
systems. Iterative solution of linear algebraic systems. Least-squares
computations. Iterative solution of f(x) = 0. Minimization of functions of
several variables.

*Prereq: CS 134, MATH 235, 237
Antireq: CS 337, 370
Last offering: Winter 1995
*

**CS 374 W,S 3C 0.5**

**Introduction to Scientific Computation: Numerical
Approximation
**

Pitfalls in computation. Polynomial interpolation. Orthogonal
polynomials and least-squares approximations. Numerical integration and
differentiation. Data fitting.

*Prereq: CS 134, MATH 235, 237
Antireq: CS 337, 370
Last offering: Winter 1995
*

**CS 430 F 3C 0.5**

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

*Prereq: CS 330 or permission of instructor and third-year
standing
Antireq: CS 446
CS 430 cannot be counted for credit in a Computer Science Major
program.
*

**CS 432 F,W,S 3C 0.5**

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

*Prereq: CS 330 and third-year standing
Antireq: CS 482
CS 432 cannot be counted for credit in a Computer Science Major
program.
*

**CS 436 W 3C 0.5**

**Distributed Computer Systems
**

An introduction to networks and computer systems, reliable
communication, layered models, distributed file systems, cryptography,
concurrency issues.

*Prereq: One of CS 230, 246 and one of CS 330, 334, 338
Antireq: CS 336, 454
CS 436 cannot be counted for credit in a Computer Science Major
program.
*

**CS 442 F,S 3C 0.5**

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

*Prereq: CS 340 and registration in a Computer Science
Major program
*

**CS 444 W 3C 0.5**

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

*Prereq: CS 340, 360 and registration in a Computer Science
Major program
*

**CS 446 F,S 3C 0.5**

**Software System Design and Implementation
**

An investigation into the role and function of software
engineering practice in the design and implementation of computer based
systems. Topics include: structural design; procedural design; testing and
reliability; management topics; programming languages and coding;
portability techniques; maintenance; performance measurement and
analysis.

*Prereq: CS 342, and registration in a Computer Science
Major program.
Antireq: CS 430
*

**CS 448 F,W,S 3C 0.5**

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

*Prereq: CS 340, 354 and registration in a Computer Science
Major program
Antireq: CS 338
*

**CS 450 W 3C 0.5**

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

*Prereq: CS 351 or (CS 342 and E&CE 223), and
registration in a Computer Science Major program
*

**CS 452 F,S 3C 0.5**

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

*Prereq: CS 354 and registration in a Computer Science
Major program. CS 351 is recommended.
*

**CS 454 F,W,S 3C 0.5**

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

*Prereq: CS 354 and registration in a Computer Science
Major program. CS 351 is recommended.
Antireq: CS 436
*

**CS 457 W 3C 0.5**

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

*Prereq: CS 230 or 246. For non-CS majors, CS 334 is
strongly recommended.
Antireq: CS 437
*

**CS 458 W 3C 0.5**

**Design of Microprocessor-Based Systems
**

An introduction to the design of digital systems such as those used
in microcomputers, control and industrial applications, or those dedicated
to specific tasks. Topics include: digital electronics, microprocessors,
memory chips and systems, standard and specialized peripheral chips,
development and integration systems, and case studies. Laboratory-
oriented: small teams design and implement microprocessor-based systems.

*Prereq: CS 351 and registration in a Computer Science
Major program
*

**CS 462 F 3C 0.5**

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

*Prereq: CS 360
*

**CS 464 W 3C 0.5**

**Computational Complexity Theory
**

The classification of problems according to the computational
resources required for their solution, with emphasis on properties of
feasible computations rather than on specific algorithms. Topics include:
time and space complexity, tractable and intractable problems, computation
using randomness, parallel computation.

*Prereq: CS 360
*

**CS 466 F,S 3C 0.5**

**Algorithm Design and Analysis
**

Design of good algorithms and analysis of the resources they
consume. Lower bounds on the resource requirements of algorithms to
compute certain functions. Problems from the following areas are
discussed in this light: sorting and order statistics, data structures,
arithmetic computations, the NP-complete problems.

*Prereq: CS 340, 360
*

**CS 472 W 3C 0.5**

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

*Prereq: CS 370 or (372, or CS 337 and consent of
instructor. CS 374 is recommended.)
*

**CS 476 F 3C 0.5**

**Numerical Solution of Differential and Integral Equations
**

Initial value problems: existence and uniqueness of solutions, one
step methods, multistep methods, stability, error analysis. Boundary value
problems: shooting and discretization methods, implementation problems
especially for non-linear equations. Integral equations: correspondence to
ordinary differential equations, initial value and boundary value problems,
solution techniques.

*Prereq: CS 370 or (374, or 337 and consent of instructor,
or CS 372 and consent of instructor)
Cross-listed as AM 441
*

**CS 480 W 3C 0.5**

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

*Prereq: CS 340 and registration in a CS major program
Antireq: CS 330, MSCI 441, (C 241/442)
*

**CS 482 F,W 3C 0.5**

**Techniques in Systems Analysis
**

This course emphasizes the role of systems analysis in the
production of quality software systems to meet organizational needs.
Topics include systems development life cycle; skills required by systems
analysts, such as communication, fact-finding and project management; data
modelling and management; logical and physical data flow diagrams;
feasibility and cost-benefit analysis; process modelling (decision tables,
trees and structured English); and CASE tools for analysis. When possible,
the course will provide experience with a group systems analysis project,
report and presentation.

*Prereq: CS 340 and registration in a Computer Science
Major program
Coreq: CS 448
Antireq: CS 432
*

**CS 486 F,W,S 3C 0.5**

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

*Prereq: CS 340 and registration in a Computer Science
Major program
*

**CS 487 W 3C 0.5**

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

*Prereq: CS 241, PMATH 334 or consent of instructor
*

**CS 488 F,W,S 3C 0.5**

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

*Prereq: CS 340, 342, MATH 235, and registration in a
Computer Science Major program
*

**CS 492 W 2C,1D 0.5**

**The Social Implications of Computers
**

This course is designed to consider the problems caused for
organizations and society by the advent of computer technology so that
constructive solutions to these problems may be discussed.

*Prereq: CS 340 and registration in a Computer Science
Major program
*

**CS 494 F,W 3C 0.5**

**Computers and the Law of Information Technology
**

An introduction to the subject of computer law, examining current
legal issues and problems relating to the use of computer-based information
systems, the protection of computer software and data bases, and the
acquisition and sale of computer systems.

*Prereq: Third-year standing in a Computer Science Major
program
*

**CS 498 0.5**

**Advanced Topics in Computer Science
**

See the Course Offerings List for topics available.

*Prereq: Third-year standing in a Computer Science Major
program
*

**CS 499 0.5**

**Readings in Computer Science
**

*This course cannot be used to satisfy any 400-level course
requirement in a Computer Science Major program.
*

[AHS] [Arts] [Eng] [ES] [IS] [Math] [Sci] [Inter] [Calendar Top] [UW Home]

Infoucal@www.adm.uwaterloo.ca / University of Waterloo