Back to 2001-2002 Undergraduate Calendar2001-2002 Undergraduate Calendar  
2001-2002 UNDERGRADUATE CALENDAR: COURSES
Carleton University

 

 

 

Computer Science Courses
Not all of the following courses are offered in a given year. For an up-to-date statement of course offerings for 2001-2002, please consult the Registration Instructions and Class Schedule booklet published in the summer.

Some of the following Computer Science courses are cross-listed from other parts of the Calendar. In every such case, only one course is actually offered and the two numbers are alternate identifiers for this single course. Students in the B.C.S. program should register in such a course under the Computer Science (95) number.

Note: In all courses with programming assignments, students usually find it necessary to be on campus at other than the scheduled lecture periods to make use of computing facilities.


Computer Science 95.101*
Introduction to Computers for the Arts and Social Sciences

This course is intended to give students in the arts and social sciences a working knowledge of computers and their applications; computer fundamentals; use of computing facilities; introduction to graphical user interfaces; a sampling of software packages applied to problems in the arts and social sciences.
Precludes additional credit for Computer Science 95.100* and 95.104*. This course cannot be taken for credit by students in Business, Engineering, Computer Science, Mathematics or Science.
Lectures three hours a week.


Computer Science 95.102*
Introduction to Systems Programming

A course designed to introduce the student to programming with procedures and primitive data types. Topics include: arrays, strings, pointers, heap and stack memory allocation and deallocation, iterative and recursive linked list manipulations, system/library calls.
Precludes additional credit for Computer Science 95.107*, 95.142*, Engineering 94.112* and Engineering 91.166*.
Prerequisite: Computer Science 95.105*.
Lectures three hours a week.


Computer Science 95.104*
Introduction to Computers for the Sciences

This course provides students with a working knowledge of computers and their applications. Topics include computer fundamentals and the use of application packages such as text processors, spreadsheets, databases and web browsers with particular reference to problems in Science.
Precludes additional credit for Computer Science 95.101*. This course cannot be taken for credit by students in the B.C.S. program or combined programs in Computer Science.
Lectures three hours a week.


Computer Science 95.105*
Introduction to Object-Oriented Programming

A first course in problem solving and computer programming designed for students who wish to specialize in Computer Science. Introduction to object-oriented programming: syntactic constructs, data abstraction, classification and inheritance, typing and polymorphism, testing and debugging.
Precludes additional credit for Computer Science 95.145* and Engineering 94.110*.
Lectures three hours a week and one hour tutorial.


Computer Science 95.106*
Design and Implementation of Computer Applications

A continuation of Computer Science 95.105* focusing on the design and implementation of complete applications including the user interface, the software architecture, and the interacting domain objects. Brief introduction to UML. Possible application topics include a testing framework, user-interface architectures and managing persistence.
Precludes additional credit for Computer Science 95.146* and Engineering 94.111.
Prerequisites: A grade of C- or better in Computer Science 95.105*.
Lectures three hours a week.


Computer Science 95.107*
Introduction to Structured Programming

A first course in computer programming using a procedural language. Introduces basic sequencing, alternation, and looping control constructs, functional and procedural abstractions, data abstraction, and problem-solving in the context of computer programming.
Precludes additional credit for Engineering 91.166* and Computer Science 95.102* (if taken after 1996/97).
This course cannot be taken for credit by students currently registered in Computer Science programs.
Lectures three hours a week.


Computer Science 95.142*
Introduction to Systems Programming

Introduction to programming with procedures and primitive data types, designed for honours students in Computer Science. Topics include: arrays, strings, pointers, heap and stack memory allocation and deallocation, iterative and recursive linked list manipulations, system/library calls.
Precludes additional credit for Computer Science 95.102*, 95.107*, Engineering 94.112*, and Engineering 91.166*.
Prerequisite: Computer Science 95.145*. Restricted to students registered in the B.C.S. program, combined Honours in Computer Science and Mathematics, Honours Computer Mathematics, and Honours Computer Statistics.
Lectures three hours a week.


Computer Science 95.145*
Introduction to Object-Oriented Programming

A first course in problem solving and computer programming designed for Honours students in Computer Science. Introduction to object-oriented programming; syntactic constructs, data abstraction, classification and inheritance, typing and polymorphism, testing and debugging.
Precludes additional credit for Computer Science 95.105* and Engineering 94.110*.
Prerequisite: Restricted to students registered in the B.C.S. program, combined Honours in Computer Science and Mathematics, Honours Computer Mathematics, and Honours Computer Statistics.
Lectures three hours a week and one hour tutorial.


Computer Science 95.146*
Design and Implementation of Computer Applications

A continuation of 94.145* focusing on the design and implementation of complete applications including the user interface, the software architecture, and the interacting domain objects. Brief introduction to UML. Possible application topics include a testing framework, user-interface architectures and managing persistence.
Precludes additional credit for Computer Science 95/106* and Engineering 94.111.
Prerequisite: Computer Science 95.145* (with a grade of C- or better). Restricted to students registered in the B.C.S. program, combined Honours in Computer Science and Mathematics, Honours Computer Mathematics, and Honours Computer Statistics.
Lectures three hours a week.


Computer Science 95.185*
Discrete Structures I

An introduction to discrete mathematics and discrete structures. Topics include: propositional and predicate calculus, Boolean algebra, introduction to complexity of algorithms, mathematical reasoning, counting, recurrences, relations, introduction to graphs. (Also listed as Mathematics 69.185*.)
Prerequisites: Two OACs in Mathematics and one of Computer Science 95.105* or 95.107* (which may be taken concurrently).
Lectures three hours a week.


Computer Science 95.202*
Abstract Data Types and Algorithms

Introduction to the design and implementation of abstract data types and to the complexity analysis of data structures. Topics include: stacks, queues, lists, trees and graphs. Special attention is given to abstraction, interface specification and hierarchical design through the use of an object-oriented programming language.
Precludes additional credit for Computer Science 95.242* and Engineering 94.202*.
Prerequisites: A grade of C- or better in Computer Science 95.106*.
Lectures three hours a week.


Computer Science 95.203*
Computer Organization

A thorough treatment of computer system organization. Processor architectures (RISC, CISC, superscalar). Instruction sets and addressing modes. Assembly language. Basics of digital logic and hardware construction. Memory organization and cache principles. System buses. Input/output methods and devices.
Precludes additional credit for Engineering 94.203*, 94.306* for students in the Computer Science program and in combined programs with Mathematics or Chemistry.
Prerequisite: Computer Science 95.102* or Engineering 91.166*.
Lectures three hours a week.


Computer Science 95.204*
Programming in C++

In-depth study of the language C++ from a software engineering perspective, with emphasis on features supporting the development of large efficient and reusable systems. Topics include: encapsulation, templates, references, constructors and destructors, overloading, memory management, exception handling, and the standard template library.
Precludes additional credit for Computer Science 95.244* and Engineering 94.204*.
Prerequisites: A grade of C- or better in Computer Science 95.102* and a grade of C- or better in 95.106*.
Lectures three hours a week.


Computer Science 95.205*
Internet Application Programming

Design and implementation of Internet application programs. Topics include: fundamentals of the Web, introduction to client/server architectures, Internet programming, Web browsers, hypertext links, network programming.
Precludes additional credit for Computer Science 95.245*.
Prerequisites: Computer Science 95.106* or equivalent.
Lectures three hours a week.


Computer Science 95.242*
Abstract Data Types and Algorithms

Introduction to the design and implementation of abstract data types and to complexity analysis of data structures. Topics include: stacks, queues, lists, trees and graphs. Special attention is given to abstraction, interface specification and hierarchical design through the use of an object-oriented programming language.
Precludes additional credit for Computer Science 95.202* and Engineering 94.202*.
Prerequisite: Computer Science 95.146* (with a grade of C- or better). Restricted to students registered in the B.C.S. program, combined Honours in Computer Science and Mathematics, Honours Computer Mathematics, and Honours Statistics.
Lectures three hours a week.


Computer Science 95.244*
Programming in C++

In-depth study of the language C++ from a software engineering perspective, with emphasis on features supporting the development of large efficient and reusable systems. Topics include: encapsulation, templates, references, constructors and destructors, overloading, memory management, exception handling, and the standard template library.
Precludes additional credit for Computer Science 95.204* and Engineering 94.202*.
Prerequisite: Computer Science 95.142* and 95.146* (with a grade of C- or better in both courses). Restricted to students registered in the B.C.S. program, the combined Honours in Computer Science and Mathematics, Honours Computer Mathematics, and Honours Computer Statistics.
Lectures three hours a week.


Computer Science 95.245*
Internet Application Programming

Design and implementation of Internet application programs. Topics include: fundamentals of the Web, introduction to client/server architectures, Internet programming, Web browsers, hypertext links, network programming.
Precludes additional credit for Computer Science 95.205*.
Prerequisite: Computer Science 95.146*. Restricted to students registered in the B.C.S. program, combined Honours in Computer Science and Mathematics, Honours Computer Mathematics, and Honours Computer Statistics.
Lectures three hours a week.


Computer Science 95.285*
Discrete Structures II

A second course in theoretical aspects of computer science. Topics include: formal languages and automata theory, computability theory, complexity theory, graph theory and algorithms, NP-completeness.
Prerequisite: Computer Science 95.185*
Lectures three hours a week.


Computer Science 95.300*
Operating Systems

A first course in operating systems stressing fundamental issues in design: process management; memory management; process co-ordination and synchronization; interprocess communication; real-time clock management; i/o device drivers; file systems; frame-level network communication. Assignments involve the use, modification, and extension of a multitasking operating system.
Precludes additional credit for Engineering 94.301*.
Prerequisites: One of Computer Science 95.202* or Engineering 94.202*, and one of Computer Science 95.203* or Engineering 94.303*.
Lectures three hours a week.


Computer Science 95.302*
Compiler Construction

The structure, organization and design of the phases of a compiler are considered: lexical translators, syntactical translators, scope handlers, type checkers, code generators and optimizers. Components of a compiler will be implemented.
Prerequisite: Computer Science 95.202* or permission of the School.
Lectures three hours a week.


Computer Science 95.304*
Object-Oriented Software Engineering

Theory and practice at developing software systems. At the macro-level we discuss the three major steps: Plan and Elaborate, Build, Deploy. At the micro-level, we study iterative development: refine plan, synchronize artifacts, analyze, design, construct and test. We consider patterns and discuss UML in depth.
Precludes additional credit for Engineering 94.310* and 94.480*.
Prerequisite: Computer Science 95.204*.
Lectures three hours a week.


Computer Science 95.305*
Database Management Systems

Introduces students to concepts of database management systems, database design and file structures. Topics include: entity-relationship modeling and object oriented database design, data models (relational, network and object oriented), the relational algebra, SQL, normalization theory, physical data organization, object oriented databases and OQL.
Precludes additional credit for Business 42.340* and Engineering 94.301*.
Prerequisites: Computer Science 95.202* and 95.204*, or Engineering 94.303*.
Lectures three hours a week.


Computer Science 95.307*
Programming Paradigms

An introduction to functional and logic programming. Topics include: semantics of functional programming, assignment-free programming, the meta-circular interpreter, recursive functions, Prolog, backtracking, cutting, negation.
Precludes additional credit for Computer Science 95.207*.
Prerequisite: Computer Science 95.202* or Engineering 94.202*.
Lectures three hours a week.


Computer Science 95.308*
User Interface Architectures

This course addresses architectures and tools for the design and implementation of user-interfaces driven application. Emphasis will be on case studies using libraries and visual programming tools. Examples may be drawn from object-oriented programming environments, Motif and Tcl/Tk.
Prerequisites: Computer Science 95.106* and 95.204*.
Lectures three hours a week.


Computer Science 95.314*
Foundations of Software Engineering

Survey of the Software Engineering field. Possible topics include: processes, project management, requirements engineering, formal specifications, software design, user interface design, software reliability, reuse, computer-aided software engineering, configuration management, maintenance and re-engineering.
Precludes additional credit for Engineering 94.480*.
Prerequisite: Computer Science 95.304*.
Lectures three hours a week.


Computer Science 95.320*
Co-operative Work Term Report 1

Prerequisites: Registration in the Co-operative Education Option of the Bachelor of Computer Science program and permission of the School.


Computer Science 95.321*
Co-operative Work Term Report 2

Prerequisites: Registration in the Co-operative Education Option of the Bachelor of Computer Science program and permission of the School.


Computer Science 95.322*
Co-operative Work Term Report 3

Prerequisites: Registration in the Co-operative Education Option of the Bachelor of Computer Science program and permission of the School.


Computer Science 95.323*
Principles of Computer Networks

This is an introductory course to the field of Network Computing. Topics include: Protocol Architectures and Internetworking, Types of Networks, Communication Protocols, End-System and Network Traffic Management, Structure of Routing and Congestion Control.
Precludes additional credit for Engineering 94.462*.
Prerequisites: Computer Science 95.205* and 95.300*.
Lectures three hours a week.


Computer Science 95.384*
Design and Analysis of Algorithms I

An introduction to the design and analysis of algorithms. Topics include: recurrence relations, sorting and searching, divide-and-conquer, dynamic programming, greedy algorithms, amortized analysis. (Also listed as Mathematics 69.384*.)
Prerequisites: Computer Science 95.202* and either 95.285* or both of Mathematics 69.207* and 69.218* or equivalents.
Lectures three hours a week.


Computer Science 95.385*
Discrete Structures and Applications

Enumeration: elementary methods, inclusion and exclusion, recurrence relations, generating functions and applications. Graph theory and algorithms: connectivity, planarity, Hamilton and Euler paths. Error-correcting codes. (Also listed as Mathematics 70.385*.)
Prerequisites: One of Mathematics 69.218* or 69.311*, 70.210.
Lectures three hours a week and one hour tutorial.


Computer Science 95.386*
Numerical Analysis

Elementary discussion of error, polynomial interpolation, quadrature, linear systems of equations and matrix inversion, non-linear equations, difference equations and ordinary differential equations. (Also listed as Mathematics 69.386*.)
Prerequisites: (i) Mathematics 69.102, 69.105 or 69.207* (or 69.201 or 69.202); and (ii) Mathematics 69.112 or 69.217*; and (iii) knowledge of a computer language.
Lectures three hours a week and one hour tutorial.


Computer Science 95.387*
Mathematical Software

Incorporation of basic numerical methods into efficient, reliable software. The course includes examination of existing software systems, e.g. linear systems, non-linear systems, optimization, or differential equations. (Also listed as Mathematics 69.387*.)
Prerequisite: Computer Science 95.386*.


Computer Science 95.400*
Distributed Operating Systems

An advanced course emphasizing the principles of distributed operating systems including networking protocols, distributed file systems, remote IPC mechanisms, graphical user interfaces, load balancing, and process migration. Case studies include current "standards" as well as novel systems under development.
Prerequisite: Computer Science 95.300*.
Lectures three hours a week.


Computer Science 95.401*
Distributed Computing

Overview of distributed computing. Topics include: computational models, communication complexity, design and analysis of distributed algorithms and protocols, fault-tolerant protocols, synchronous computations. Applications may include: communication in data networks, control in distributed system (e.g., election, distributed mutual exclusion), manipulation of distributed data (e.g., ranking).
Prerequisite: Computer Science 95.300*.
Lectures three hours a week.


Computer Science 95.402*
Computer Graphics

Principles and techniques of real-time 2D and 3D graphics: raster graphics algorithms, transformations (scaling, translation, rotations) and viewing, object modeling, texture mapped rendering, illumination, ray-tracing, hidden line and surface elimination. Other possible topics include: camera control, collision detection, articulated figures, 3D game engine development.
Prerequisite: Computer Science 95.202*.
Lectures three hours a week.


Computer Science 95.403*
Transaction Processing Systems

Investigates concepts of on-line transaction processing. Traces transaction processes from their initiation (WWW Interfaces) to their completion in client/server environments under concurrent executions and system failures. Topics include: transaction properties and models, embedded-SQL and database applications, query processing, concurrency, recovery, and some case studies.
Prerequisites: Computer Science 95.204*, and 95.305* or Engineering 94.301*.
Lectures three hours a week.


Computer Science 95.404*
Software Quality Assurance

Introduction to the theory and practice of Software Quality Assurance. Topics include: functional requirements analysis, system requirement analysis, verification and validation, traceabilty, white box testing, integration testing, object-oriented testing, tools, and management issues.
Prerequisite: Computer Science 95.314*.
Lectures three hours a week.


Computer Science 95.409*
Introduction to Parallel and Systolic Computing

Introduction to algorithms, architectures, and languages for parallel computing. Topics include: models of computation, parallel programming languages, performance measures for parallel algorithms, shared memory parallel machines, VLSI design methodologies, processor arrays, hypercube multiprocessors, parallel algebraic operations, parallel data structures and parallel searching, parallel geometric processing.
Prerequisite: Computer Science 95.384*.
Lectures three hours a week.


Computer Science 95.410*
Multimedia Systems

Introduction to Multimedia Systems and Virtual Reality. Topics include: basic sound and video formats, compression, image- and geometry-based model creation, stereo displays, immersion, texture mapping, VRML and virtual environments.
Prerequisite: Computer Science 95.402*.
Lectures three hours a week.


Computer Science 95.411*
Distributed Object Management and Transaction Processing Systems.

Study of the principles involved in the design and implementation of distributed object management, CORBA-based transaction services and distributed object-based applications. Topics include: Distributed Object Management Architectures, Transactional Middleware, Combining Java, Web and CORBA Objects within Heterogeneous Systems, Interoperability, Security, Scalability and Performance Measures.
Prerequisite: Computer Science 95.305* and either 95.403* or 95.401* or equivalents. (Knowledge of C/C++ and Java is essential).
Lectures three hours a week.


Computer Science 95.413*
Computer Security and Cryptography

Introduction to information security in computer and communication systems. Classical and public-key cryptosystems are overviewed. Applications to information schemes and digital signatures, key distribution and key agreement, authentication and secret sharing are also discussed. Also offered at the graduate level, with additional or different requirements, as Computer Science 95.513, for which additional credit is precluded.
Prerequisite: Computer Science 95.384*.
Lectures three hours a week.


Computer Science 95.414*
Topics in Object-Oriented Software Engineering

An in-depth look at the field of Object-Oriented Software Engineering. Possible topics include: patterns (architectural, design, distribution, user interface, process, analysis and general-purpose), traceability and object-oriented quality engineering, CASE tools, software agents and their enabling technologies (such as JAVA and CORBA), object-oriented persistence, reflective architectures.
Prerequisites: Computer Science 95.106* and 95.304*.
Lectures three hours a week.


Computer Science 95.416*
Knowledge-based Systems and Symbolic Machine Learning

Inference engine/expert systems; logic; knowledge representation; fuzzy logic; non-monotonic logic and constraint propagation; heuristic search; planning; symbolic machine learning and data mining (including ebl, version spaces, decision tree induction, conceptual clustering, case based reasoning); natural language processing.
Precludes additional credit for Computer Science 95.407*.
Prerequisite: Computer Science 95.307*.
Lectures three hours a week.


Computer Science 95.417*
Adaptive Algorithms and Intelligent Agents

Neural networks, connectionism; Bayesian Belief networks; genetic algorithms; genetic programming; classifier systems; statistical evaluation of AI programs; a-life (swarm intelligence, e.g. ant algorithms for TSP; emergent computation); intelligent agents (distributed agents for the Web).
Precludes additional credit for Computer Science 95.407*.
Prerequisite: Computer Science 95.307* and Computer Science 95.416*.
Lectures three hours a week.


Computer Science 95.420*
Co-operative Work Term Report 4

Prerequisites: Registration in the Co-operative Education Option of the Bachelor of Computer Science program and permission of the School.


Computer Science 95.421*
Co-operative Work Term Report 5

Prerequisites: Registration in the Co-operative Education Option of the Bachelor of Computer Science program and permission of the School.


Computer Science 95.483*
Computable Functions

Recursive functions and computability, algorithms, Church's thesis, Turing machines, computational logic, NP-completeness. (Also listed as Mathematics 70.483*.)
Prerequisite: Mathematics 70.210 or Computer Science 95.385* or permission of the School.


Computer Science 95.484*
Design and Analysis of Algorithms II

A second course on the design and analysis of algorithms. Topics include: advanced recurrence relations, algebraic complexity, advanced graph algorithms, approximation algorithms, randomized algorithms. Also offered at the graduate level, with additional or different requirements, as Computer Science 95.573, for which additional credit is precluded.
Prerequisite: Computer Science 95.384* or permission of the School.
Lectures three hours a week.


Computer Science 95.485*
Theory of Automata

Finite automata and regular expressions, properties of regular sets, context-free grammars, pushdown automata, deterministic context-free languages. Turing machines, the Chomsky hierarchy. Undecidability, intractable problems. (Also listed as Mathematics 70.485*.)
Precludes additional credit for Mathematics 70.565.

Prerequisite: Computer Science 95.385* or Mathematics 70.310 or permission of the School.
Lectures three hours a week.


Computer Science 95.486*
Numerical Linear Algebra

Study of matrix inversion techniques; techniques of finding eigenvalues and eigenvectors, solution of systems of linear equations; direct and indirect methods, their comparison and error analysis; applications in optimization and other areas. (Also listed as Mathematics 70.486*.)
Prerequisites: Mathematics 69.112 or 69.217*; and Mathematics 70.200 or 69.309*, or permission of the School.
Lectures three hours a week.


Computer Science 95.490*
Advanced Topics in Computer Science

Selected topics in Computer Science offered by members of the School of Computer Science.
Prerequisite: Permission of the School.
Lectures three hours a week.


Computer Science 95.491*
Directed Studies

A course of independent study under the supervision of a member of the School of Computer Science, open only to students in the B.C.S. program. Students are required to obtain their supervisor's written approval prior to registration and are limited to two such courses in their programs.
Prerequisite: Permission of the School of Computer Science.


Computer Science 95.495*
Honours Project

As part of the Fourth-year program, each B.C.S. student is required to select and complete a major project in computer science. Students are required to submit written project proposals to the Honours Project Co-ordinator for approval normally during the term preceding the term of registration. Consult the Honours Project Co-ordinator for details.
Prerequisite: Registration in either the Bachelor of Computer Science program or one of the Combined Honours programs involving Computer Science and the permission of the School
.


Carleton University
2001-2002 Undergraduate Calendar

1125 Colonel By Drive, Ottawa, ON, Canada K1S 5B6
General enquiries: (613) 520-7400
Comments about Calendar to: CalendarEditor@carleton.ca