52 courses in the 1985–86 Undergraduate Calendar, read from the scanned original. The text comes from OCR, so check the scanned page before relying on a detail.
Notes
Course Descriptions
Courses not offered in the current academic year are listed at the end of this section.
Introductory Notes
.1. The Department of Computer Science has 2 distinct streams of courses, 1 exclusively for students who have been admitted to a Computer Science Major program, and another especially designed for non-specialists who wish to become sophisticated computer users. Within this context, Computer Science
* Major programs include Honours Computer Science, Honours Co-op Computer Science with Electrical Engineering Electives, Honours Co-op Computer Science-information Systems Option, all Joint and Double Honours BMath programs involving Computer Science as one of the majors.
The non-specialists’ courses 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. These courses are numbered with a middle digit of 0 through 3.
Where resources permit, students with exceptionally high academic
standing in other programs may be considered for admission to CS Major courses on an individual basis. To be considered, students should first obtain a written recommendation from their Faculty Advisor and then consult a Computer Science Advisor.
The Computer Science Department is experiencing tremendous demand for its courses beyond available resources. Thus, accessibility to Computer Science courses cannot be guaranteed to all students. Every effort will be made to accommodate those students who preregister during published University preregistration periods. While priority will be given to these preregistrants, 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. (See section 5.3 on page 13.25) 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 nondegree and post-degree students, will normally be limited to at most 1 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 to arrange an appropriate selection of courses.) For courses that are over-subscribed, however, priority for registration will normally be given to students registered fulltime in a degree program.
Limits on the number of CS courses students may take concurrently will be published at preregistration time. Normally, all students in first and second year may preregister for at most 1 CS course per term, and students other than Computer Science Majors may preregister for at most 2 CS courses per term in third and fourth year.
Computer Science courses may not normally comprise more than onethird of a student's total credits accumulated at the University of Waterloo.
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 pre-registration time.
7. More detailed course descriptions and course outlines are available upon request from the Computer Science Department. Students in faculties other than Mathematics Should take particular note of the following courses: CS 100, 102, 234, 235, 316.
8. For the purposes of prerequisites, the following courses are normally considered to be equivalent: (CS 234 and 240), (CS 235 and 250), (CS 334 and 340), and (CS 335 and 350/354).
9. The prerequisite phrase "x-year standing” means that a student must be registered in year x or higher.
CS 100Introduction to Computer UsageF,W,S 2C,2. 0.5
An introduction to university 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 degree.
CS 102Introduction to Computer ProgrammingF,W,S 3C2L 0.5
Fundamental techniques of algorithm design and program development. Introduction to a programming language applicable to the student's field of study. Topics include: structured programming, simple data elements, sequential operations, iterative statements, selection statements, data aggregations, functions and subroutines.
Prereq: Computer literacy (e.g. CS 100 or high school computing).
Divisions of the course will be application-oriented: CS 102 COM (commerce), CS 102 SCI (sciences), CS 102 SSC (social sciences), and CS 102 HUM (humanities). Not all divisions wil be offered each term.
Credit will be granted for only 1 of CS 102, 112, 116, 118.
CS 140Introduction to Mathematical Problem Solving by ComputerF,W,S 3C,2L 0.5
An introduction to the analysis of mathematical problems, development of mathematical models and algorithms for their solution; implementation in a _ procedure-oriented language (normally FORTRAN). Topics discussed are: solution of equations, computation of integrails, graph plotting, and simulation. Prereq: Full-time degree registration in the Faculty of Mathematics Special sections of this course will use PASCAL rather than FORTRAN/77. Also offered at St. Jerome's College in the Winter term.
introduction to the use of computers. Concept of an algorithm. Language and notation for describing algorithms. Analysis and solution of problems dealing with files. Introduction to a procedureoriented language (usually COBOL). The preparation and debugging of programs in such a language. Topics include: file processing and maintenance, sorting, report generation, and file design.
Prereq: Full-time degree registration in the Faculty of Mathematics
Also offered ai St. Jerome's College in the Fall term.
CS 234Programming Principles and PracticeF,W,S 2C,2T 0.5
To develop a sophisticated user-oriented understanding of software. A disciplined approach to program design. The need for and use of various control structures and data structures. Features of several high-level languages; techniques for their effective use. Specific topics include: structured programming, linked-list processing, recursion, string
CS 235Introduction to Computers and Computer SystemsF,W,S 2C,1T 0.5
To give a basic understanding of what
* goes on inside a computer, of machine
organization, and of machine and assembly-language programming. To introduce students to computer software designed to assist user programs. To make students better users of a computer. Specific topics include: simple machine architecture, assemblerlevel programming, addressing modes and operating system services.
Prereq: One of 102, 140, 180 or equivalent.
Credit will be granted for only 1 of CS 117, 235, 250.
CS 240Programming Principles, Languages, and TechniquesF,W,S 2C,2T 0.5
To develop a thorough understanding of software as needed for program design. The need for and use of various control structures and data structures. Features of several high-level languages, techniques for their effective use. Specific topics include structured programming, linked-list processing, recursion, string processing, tree processing and language development.
Prereq:CS 250 and second-year standing in a Computer Science Major program
Credit. will be granted for only 1 of CS 234, 240.
CS 250Fundamentals of Computers and Computer SystemsF,W 3C1T 0.5
To give a thorough introduction to what goes on inside a computer, of machine organization, and of machine and assembly-language programming. To introduce students to computer software designed to assist user programs. Specific topicg include: addressing modes, subroutines and macros, microcomputer architecture, and operating system components.
Prereq:CS 140 and second-year standing in a Computer Science Major program
Credit will be granted for only 1 of CS 117, 235, 250.
CS 316Introduction to Statistical Problem Solving by ComputerW 3C,1k 056
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 siatistics course and computer literacy (e.g. CS 100 or high school computing)
CS 316 cannot be counted for credit toward a BMath degree.
CS 330Introduction to Business SystemsF,W,S 3C 0.5
A study of application software systems in the business environment. Topics include data models of business functions, file and data base systems, and integrated accounting systems. Students modify an integrated accounting system and also work with a selection of commercially available software systems.
Prereq: One of CS 102, 140, 180, or equivalent, and a knowledge of accounting (e.g. ACC 101/102 or ACC 121/122)..
CS 330 cannot be counted for credit toward a BMath Honours Computer Science degree.
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.
A study of those hardware and software components comprising a computing system, with an emphasis on the role of operating systems in the support of programming activities. Topics include: computer architecture; input/output; operating systems; linkers, loaders, and libraries.
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 140, MATH 130b, 134b and third-year standing. MATH 230b, 234a are recommended
Credit will be granted for only 1 of CS 210, 337, 370/371, 375.
CS 337 cannot be counted for credit toward a BMath Honours Computer Science degree.
Levels of data description and their role in the design of structures. Design of data representations for primary and secondary store. introduction to the analysis of algorithms.
Prereq:CS 240, C&O 230 and thirdyear standing in a Computer Science Major program
The intent is to give a basic under- . standing of what goes on inside a computer, of machine architecture, and of some fundamental operating system services. Topics include: detailed introduction to hardware; representation of data; memory; central processor; addressing schemes; input/output; linking and loading.
Prereq:CS 250 or EL E 222, and third-year standing in a Computer Science Major program
A study of those software components comprising a computing system, with an emphasis on the management of hardware resources and the support of multiple processes. Topics include: operating system services; file systems; linkers, loaders and libraries; monitors and debuggers; interrupt handling; critical sections; process communication and syncronization.
Prereq:CS 340 and third-year standing in a Computer Science Major program ‘
CS 360Introduction to the Theory of ComputingF,W 3C 0.5
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 algorithm optimality.
Prereq:CS 240, MATH 234b, and third-year standing in a Computer Science Major program
CS 39 FWS 3 05 Digital Networks Combinational networks. Integrated circuit modules. Boolean algebras. Boolean functions, expressions and their simplification. Asynchronous sequential networks. Latches and flipflops. Synchronous operations. Analysis and synthesis of synchronous sequential networks. Sequential integrated-circuit modules; shift registers, counters, memories.
Prereq:CS 250 or EL E 222, and third-year standing in a Computer Science Major program
CS 375Introduction to Numerical AnalysisF,W,S 3C 0.5
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 computer techniques for solving mathematical problems.
Prereq:CS 240, MATH 230b, 234a and third-year standing in a Computer Science Major program
Credit will be granted for only 1 of CS 210, 337, 370/371, 375
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; impiementation; testing and maintenance; management issues.
Prereq:CS 234 and a CS half-credit labelled CS 330 or higher, and third-year standing .
CS 336 is a recommended pre/ corequisite.
CS 430 cannot be counted for credit toward a BMath Honours Computer Science degree.
Survey of organization and management theory. Systems theory and the systems approach. Systems design. Data base concepts. Implementation and evaluation of computer based information systems. Prereq: CS 334 or 438, and third-year standing . Credit will be granted for only 1 of CS 432, 434, 482. CS 432 cannot be counted for credit toward a BMath Honours Computer Science degree.
An overview of some more advanced computer techniques, with an emphasis on their application in the analysis and design of systems. Topics include: data communication: queueing theory fundamentals; 2-D graphics; advanced software and hardware architectures; computer selection.
An introduction to the basic techniques of simulation. Discrete simulation models; random number generators; the SIMSCRIPT. and GPSS languages; anaiysis of simulation output; continuous simulation models and the CSMP language.
CS 488Computer Applications in B Data BasesF,W,S 3C 0.5
A user-oriented approach to the management of large collections of data. Methods used for the storage, selection and presentation of data. Common data base management systems. Prereq: CS 234 or 330, and third-year standing. , Credit will be granted for only 1 or CS 438, 448. CS 438 cannot be counted for credit toward a BMath Honours Computer Science Degree. Formerly: CS 338
This course is designed to give students a critical understanding of programming language concepts and to provide them with an appreciation for the implications of various language design decisions. Students also learn some fundamentals about language processors. . Prereq: CS 340, 360 and fourth-year standing in a Computer Science Major
Phases of compilation. Lexical analysis and a review of parsing. Compilercompilers 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, 350, 360, and fourthyear standing in a Computer 'Science Major program
CS 446Software System Design and ImplementationF,W,S 3C 0.5
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 240 and fourth-year standing in a Computer Science Major program
CS 448Introduction to Database ManagementF,W,S 3C O05
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 and fourth-year standing in a Computer Science Major
program Credit will be granted. for only 1 of CS 438, 448..
The course is intended to prepare the student to choose a suitable computer for a given application. Review of combinational and sequential logic circuits. Discussion of "building block” - central processing units, stores, input/ output systems, and bus structures. Case studies of machines.
Prereq: CS 369 or EL E 323, CS 350, and fourth-year standing in a Computer Science Major program
Intended to give students experience with tools and techniques of realtime 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 350, 354 and fourth-year standing in a Computer Science Major program
A study of operating systems from both architectural and implementation viewpoints. Memory management, processor scheduling, protection and security; atomic actions and system. structure, concurrency control, communications reliability and recovery, extensions of basic concepts to distributed systems. Prereq: CS 350, 354 and fourth-year standing in a Computer Science Major program
This course is intended to introduce the student to the basic concepts of data communications, the computercommunication interface, and new telecommunications services. Topics include: basic queueing theory, data communications and the telephone network, computer architecture for data communications, protocols, error handling, multiplexing and switching, and packet switching networks.
Prereq:CS 354, STAT 230 and fourthYear standing in.a Computer Science Major program
CS 457Queueing Models: Analysis, Simulation, and Computer ApplicationsW 3C 0.5
An introduction to the basic results of queueing theory and the techniques of discrete event simulation. Emphasis is placed on the application of queueing models to computer systems and computer communication networks. Prereq: STAT 231, 333, CS 240, 350 and fourth-year standing in a Computer Science Major program Credit will be granted for only 1 of CS 437, 457.
CS 458Design of Microprocessor-Based SystemsF,S 3C 0.5
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 350, 369 and fourth-year standing in a Computer Science Major program. .
Languages and their representations. Grammars - Chomsky hierarchy. Regular sets and sequential machines. Contextfree 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.
CS 464Computability and Recursive Function TheoryW 3C 0.5
Models of the computational process as reflected by computers, linguistic systems, functional specifications, transformational systems, formal logic, etc. Equivalence of these models. Computational complexity for specific models and abstractions fitting all models. Formal reducibilities between computational problems, and the Complexity of these reducibilities.
Design of good algorithms and analysis of the resources they consume. Lower bounds on the resource requirements of algorithrns 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.
Methods of program verification. Implications for structured programming. inductive reasoning about recursive programs and recursively defined data structures.
Oirect methods for the numerical solution of linear systems of equations and linear least squares problems. Numerical methods for solving the algebraic eigenvalue problem.
Methods for the minimization and maximization of piecewise linear functions and linear functions subject to linear constraints, with applications to linear programming and data fitting. Emphasis is on algorithms, numerical considerations and software implementation.
Prereq: (1 of CS 337, 375, C&O 350, or consent of instructor) and fourth-year standing
Existence, uniqueness, and convergence of polynomial approximations obtained
* by interpolation and by least-squares
criteria. Minimax and near minimax approximation by polynomials and rational functions. Efficient algorithms for obtaining approximations, including the Fast Fourier Transform. The design of built-in functions.
Prereq:CS 337 or 375, MATH 332b, and fourth-year standing
CS 478Numerical Solution of Partial Differential EquationsW 3C 0.5
Discretization methods for partial differential equations, convergence and stability, grid and characteristic methods for hyperbolic equations; iterative methods of solution for parabolic and elliptic equations, rate of convergence estimates. . Prereq: CS 337 or 375, and fourth-
Techniques in organization and management theory. Organization of large software systems. Data base concepts. Implementation of computer based information systems. Survey of current topics of interest such as‘ distributed processing, microcomputers and on-line systems.
Prereq:CS 340 and fourth-year standing in a Computer Science Major
CS 486Introduction to Artificial intelligence’F,W,S 3C 0.5
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 240 and fourth-year standing in a Computer Science Major program
CS 487Introduction to Symbolic Computation |W 3C 0.5
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 240, PMATH 334 (or consent of instructor), and fourth-year standing.
CS 488Introduction to Computer GraphicsF,W,S 3C 0.5
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, 350, MATH 234a and fourth-year standing in a Computer Science Major program