Contents Preface The Department Course Descriptions Degree Requirements Degree Checklists

 1998/1999 Undergraduate Calendar

Course Descriptions

previous: The Department - page 2 of 2

Internal Links:

Course Descriptions : 1000-Level

Courses in Computer Science have three class hours a week for one term (3 credit–course numbers end in "3.0"), unless otherwise indicated. Courses with second digit 5 (e.g. 1520, 1530, 1540, 3530) may be taken to satisfy Faculty degree requirements but do not count as Computer Science credits.

COSC 1020 3.0
Introduction to Computer Science I

Introduction to computation, computing machinery, algorithms and programming via theoretical concepts and practical skills. Problem solving via the structure, design and analysis of algorithms and their implementation as effective, correct and efficient programs. Control and data structures of a structured programming language (Java).

This course is introductory to the discipline in that it is the first in a hierarchy of courses; it is not a survey course. The emphasis is on the development of a theoretical conceptual basis and the acquisition of the intellectual and practical skills required for further study. The course is intended for prospective computer science majors, i.e. those with a well-developed interest in computing as an academic field of study and with strong mathematical, analytical and language abilities; it is not intended for those whose interest is casual, nor for those who require remedial work in the necessary background.

Warning: The work for this course includes a substantial number of exercises which require problem analysis, program preparation, testing, analysis of results, documentation, and submission of written reports. The course is demanding in terms of time, and requires the student to put in many hours of work per week outside of lectures. During the first few weeks there is a scheduled laboratory. After that students book time in the computer laboratory on an as needed basis.

Recommendation: You will benefit if you have prior practical experience with programming as well as using a computer. Students who wish to take a one-course exposure to the practical aspects of computing should consider enrolling in COSC1520 3.0 and COSC1530 3.0 instead (see the following descriptions).

Prerequisites: If no university-level mathematics: OAC Calculus and one other OAC in mathematics (normally Finite Mathematics or Algebra and Geometry) with an average grade of 75 percent in all OAC mathematics and no grade less than 65 percent; otherwise: at least 6 credits of university-level mathematics with a grade average over all MATH credits of C+ or better [B+ or better if it is a service course (second digit is 5)].

Recommended: Previous programming experience; for example, a high school programming course or SC/AS/COSC1530 3.0.

Corequisite: AS/SC/AK/MATH1090 3.0.

COSC 1030 3.0
Introduction to Computer Science II

This course is a continuation of COSC1020 and covers some of the fundamentals of software development, various data structures (arrays, queues, stacks, trees, lists), and algorithms that use these structures (sorting, searching). An object oriented approach will be introduced. Students will use the Unix operating system with the X Window System.

Prerequisites: COSC1020 3.0; MATH1090 3.0

COSC 1520 3.0
Introduction to Computer Use I

This course is appropriate for students who are not majoring in Computer Science, but who would like an introduction to the use of the computer as a problem-solving tool. No previous computing experience is assumed, but the course will involve a number of programming exercises, so some facility with problem-solving and symbolic operations will be very helpful.

An introduction to the use of computers focusing on concepts of computer technology and organization (hardware and software), and the use of applications and information retrieval tools for problem solving.

Topics to be studied include: the development of information technology and its current trends; analysis of problems for solution by computers, report generation, file processing; spreadsheets; database; numeric and symbolic calculation; the functions of an operating system; interactive programs.

Students should be aware that like many other computer courses, this course is demanding in terms of time, and should not be added to an already heavy load. There is scheduled and unscheduled time in the Glade laboratory using NeXT computers. The course is not appropriate for students who want more than an elementary knowledge of programming and it cannot be used as a substitute for COSC1020 3.0/1030 3.0: Introduction to Computer Science.

Advice: If it is possible, we suggest that you enrol for the summer or winter term.

Note: This course is not open to students who have passed or are taking COSC1020 3.0. This course counts as elective credits towards satisfying Faculty degree requirements but does not count as Computer Science credits.

Prerequisites: none

COSC 1530 3.0
Introduction to Computer Use II

Concepts of computer systems and technology - e.g., software engineering, algorithms, programming languages, theory of computation. Practical work focuses on problem solving using a high-level programming language. The course requires extensive laboratory work.

Note: This course is designed for students who are not Computer Science majors, but may be used as preparation by those who wish to major in Computer Science but lack programming background. Students who plan to major in computer science must also take SC/AS/COSC1020 3.0 and SC/AS/COSC1030 3.0.

Prerequisites: none

Degree credit exclusions: SC/AS/COSC1540 3.0. This course is not open to any student who has passed or is taking SC/AS/COSC1020 3.0.

COSC 1540 3.0
Computer Use for the Natural Sciences

Introduction to problem solving using computers - top down and modular design; implementation in a procedural programming language - control structures, data structures, subprograms; application to simple numerical methods, modelling and simulation in the sciences; use of library subprograms.

This course is intended for students in the Faculty of Pure and Applied Science.

Note: This course is not open to any student who has passed or is taking COSC1020 3.0. This course counts as elective credits towards satisfying Faculty degree requirements but does not count as Computer Science credits.

Suggested Reading:

• Nyhoff and Leestma, Fortran 77 for Engineers and Scientists, 3rd Edition, Maxwell Macmillan
• Keiko Pitter et. al., Every Student's Guide to the Internet (Windows version), McGraw-Hill (1995)

Prerequisites: none

Degree credit exclusions: COSC1530 3.0, SC/ACMS 1010 2.0.

Course Descriptions: 2000-Level

General Prerequisites

Before enrollment is permitted in any 2000-level computer science course the following must be met.

Specific prerequisites may also apply to individual courses. Taking more than two 2000-level computer science courses per term is not permitted.

COSC 2001 3.0
Introduction to Theory of Computation

The course introduces different theoretical models of computers. Topics covered may include the following.

• Finite automata and regular expressions. Practical applications eg. text editors.
• Pushdown automata and context-free grammars. Practical applications eg. parsing and compilers.
• Turing machines. Turing machines as a general model of computers. Introduction to the halting problem and NP completeness.

Prerequisites: general prerequisites.

COSC 2011 3.0
Fundamentals of Data Structures

This course discusses the fundamental data structures commonly used in the design of algorithms. At the end of this course, students will know the classical data structures, and master the use of abstraction, specification and program construction using modules. Furthermore, students will be able to apply these skills effectively in the design and implementation of algorithms.

Topics covered may include the following.

• Review of primitive data types and abstract data type – arrays, stacks, queues and lists.
• Searching and sorting. A mixture of review and new algorithms.
• Priority queues.
• Trees: threaded, balanced (AVL-, 2-3-, and/or B-trees), tries
• Graphs: representations; transitive closure; graph traversals; spanning trees; minimum path; flow problems

Prerequisites: general prerequisites.

COSC 2021 3.0
Computer Organization

Computers can be usefully viewed as having a structure organized into several levels, ranging from high-level programming languages such as Pascal or C to digital logic circuits. Each level provides specific resources for the programmer which are created by the structure at the next lower level.

This course intends to provide students basic understanding of computers at the lowest levels of this structure. The ways in which data are represented in memory and transformed by machine instructions are explored.

The major functional blocks of a computer including main memory, control unit, ALU, input/output bus structures, interrupt system, DMA channels, and peripheral devices are studied. Some assembler programming and microprogramming will be required.

Suggested Reading:

• Tanenbaum, A.S., Structured Computer Organization, 3rd ed., Prentice-Hall, 1990.
• Stallings, Wm., Computer Organization and Architecture, 2nd ed., Macmillan, 1990.

Prerequisites: general prerequisites.

COSC 2031 3.0
C, UNIX and X Window System

The programming languages C and C++ are taught as a second programming language. The course assumes some programming experience - typically that obtained in the first-year computer science course. The emphasis is on practical exploration of a particular strength of C, rather than its use as a general-purpose language. C is a tool-making tool for working at a low-level; it is a programming language designed for, and used in, the writing of utilities that access the primitives of the underlying machine architecture and the operating system.

The UNIX programming environment is considered at both the command level (man 1): shells, utilities, filters, etc., and the system call (man 2) and standard library (man 3) levels.

The focus is on some Unix operating system user-interface primitives, e.g. fork/exec, file descriptors, read/write, etc. The emphasis here is on practical exploration.

The X Window System will be presented practically, and at the level of the Xlib C-language library interface. The emphasis here is also on practical exploration, but now with visual graphic feedback. There will also be some theoretical consideration of the protocol and server-client network-transparent architecture, and the X prime directive: "mechanism, not policy".

Students should note that this course has a substantial self-disciplined laboratory component.

Suggested Readings:

• Kernighan and Ritchie, The C Programming Language.
• Kernighan and Pike, The Unix Programming Environment.
• Jones, Introduction to the X Window System.

Prerequisites: general prerequisites.

Course Descriptions: 3000-Level

General Prerequisites

Before enrollment is permitted in any 3000-level computer science course (except service courses – 35xx x.x) the following prerequisites must be met.

• COSC2011 3.0 completed.
• One of COSC2001 3.0 or COSC2021 3.0 completed.
• A cumulative grade point average of 4.5 5 (4.0 if removal of ordinary programmes is not approved) or better over completed Computer Science courses (including only the most recent grades in repeated courses for Science students). Students completing an ordinary programme may proceed with a COSC GPA of 4.0.
• MATH1300 3.0 and MATH1310 3.0 completed.
• One of MATH2090 3.0, MATH2221 3.0, or MATH2320 3.0 completed.

Specific prerequisites may also apply to individual courses.

Warning: Although Java is used in introductory courses, some upper level courses assume students have a working knowledge of C++, and/or the C programming language, therefore students may want to plan on completing COSC2031 3.0 before entering third year.

COSC 3001 1.0
Organization and Management Seminar in Space and Communication Sciences
(same as SC/EATS3001 1.0 and SC/PHYS3001 1.0)

A seminar course taught by guest speakers from industry, government and the university. Content changes from year to year, but includes such topics as professional ethics, communications regulations, space law, space science policy, project management, privacy and security issues in computing.

Prerequisites: Eligibility to proceed in the Specialized Honours stream in SCS beyond the 2000-level requirements.

Degree Credit Exclusions: EATS 3001 1.0, PHYS 3001 1.0, COSC3002 1.0

COSC 3002 1.0
Organization and Management Seminar

A seminar course taught by guest speakers from industry, government and the university. Content changes from year to year, but includes topics such as professional ethics, communications regulations , project management, privacy and security, legal issues in computing.

Prerequisites: general 3000-level prerequisites

Degree Credit Exclusions: EATS 3001 1.0, PHYS 3001 1.0, COSC3001 1.0

COSC 3101 3.0
Design and Analysis of Algorithms

This course is intended to teach students the fundamental techniques in the design of algorithms and the analysis of their computational complexity. Each of these techniques are applied to a number of widely used and practical problems. At the end of this course, a student will be able to: choose algorithms appropriate for many common computational problems; to exploit constraints and structure to design efficient algorithms; and to select appropriate tradeoffs for speed and space.

Topics covered may include the following.

• Review: fundamental data structures, asymptotic notation, solving recurrences.
• Sorting and order statistics: heapsort and priority queues, randomized quicksort and its average case analysis, decision tree lower bounds, linear-time selection.
• Divide-and-conquer: binary search, quicksort, mergesort, polynomial multiplication, arithmetic with large numbers.
• Dynamic Programming: matrix chain product, scheduling, knapsack problems, longest common subsequence, some graph algorithms.
• Greedy methods: activity selection, some graph algorithms.
• Amortization: the accounting method, eg, in Graham's Scan convex hull algorithm.
• Graph algorithms: depth-first search, breadth-first search, biconnectivity and strong connectivity, topological sort, minimum spanning trees, shortest paths.
• Theory of NP-completeness.

Suggested reading:

• T.H. Cormen, C.E. Leiserson, R.L. Rivest, Introduction to Algorithms, McGraw-Hill and The MIT Press, 1991.
• P. Gloor, S. Dynes, I. Lee, Animated Algorithms CD-ROM, The MIT Press 1993.
• D.E. Knuth, The Stanford GraphBase: A platform for combinatorial computing, Addison-Wesley & The ACM Press, 1993.

Prerequisites: general prerequisites, including MATH2320 3.0 (SCS students may enrol without MATH2320 3.0 or concurrently with MATH2320 3.0)

NOTE: This course is required of all specialized honours students in computer science – except those in the SCS stream.

COSC 3111 3.0
Introduction to Program Verification

Every program implicitly asserts a theorem to the effect that if certain input conditions are met then the program will do what its specifications or documentation says it will. Making that theorem true is not merely a matter of luck or patient debugging; making a correct program can be greatly aided by a logical analysis of what it is supposed to do, and for small pieces of code a proof that the code works can be produced hand-in-hand with the construction of the code itself. Good programming style works in part because it makes the verification process easier and this in turn makes it easier to develop more complex algorithms from simple ones.

The course will provide an introduction to the basic concepts of formal verification methods. It will also include the use of simple tools to aid in verification.

Topics covered will include the following.

• The role of formal verification in the software life-cycle; verification vs. testing and validation.
• Introduction to propositional calculus; checking for tautologies and contradictions; annotating code with assertions.
• Symbolic execution; proving relative correctness for small code segments; establishing termination
• Creating specifications with quantifiers; translating specifications into code.

Suggested readings:

• Gries and Schneider, A Logical Approach to Discrete Mathematics, Springer-Verlag, 1993.
• R. Backhouse, Program Construction and Verification, Prentice-Hall, 1986

Prerequisites: general prerequisites, including MATH 2090.03

COSC 3121 3.0
Introduction to Numerical Computations I
(same as AS/SC/MATH 3241 3.0)

This course is concerned with an introduction to matrix computations in linear algebra for solving the problems of linear equations, non-linear equations, interpolation and linear least squares. Errors due to representation, rounding and finite approximation are studied. Ill-conditioned problems versus unstable algorithms are discussed. The Gaussian elimination with pivoting for general system of linear equations, and the Cholesky factorization for symmetric systems are explained. Orthogonal transformations are studied for computations of the QR decomposition and the Singular Values Decompositions (SVD). The use of these transformations in solving linear least squares problems that arise from fitting linear mathematical models to observed data is emphasized. Finally, polynomial interpolation by Newton's divided differences and spline interpolation are discussed as special cases of linear equations. The emphasis of the course is on the development of numerical algorithms, the use of intelligent mathematical software and the interpretation of the results obtained on some assigned problems.

Topics covered may include the following.

• Preliminaries - linear algebra, computer programming and mathematical software
• Number Systems and Errors - machine representation of numbers, floating-point arithmetic, simple error analysis, ill-conditioned problems and unstable algorithms
• Solution of Systems of Linear Equations - Gaussian elimination and its computational complexity, pivoting and stability, special structures (Cholesky's factorization for positive definite systems, banded systems, storage and computational complexities) error analysis, condition number and iterative refinement
• Solution of Overdetermined Systems of Linear Equations by Linear Least Squares Approximations - linear least squares problems, normal equations, orthogonal transformations (Given's and Householder's), QR and Singular Values Decompositions (SVD), SVD and rank-deficient problems, computational complexities versus robustness
• Interpolation - Newton's divided differences spline interpolation; banded linear systems, error analysis for interpolation. Other interpolations (rational, B-splines)
• for Computer Science majors - general prerequisites;including MATH2221 3.0;
• for others - COSC1540 3.0 or COSC2011 3.0 or COSC2031 3.0; MATH1010 3.0 or MATH1014 3.0 or MATH1310 3.0; MATH1025 3.0 or MATH2021 3.0 or MATH2221 3.0.

Degree Credit Exclusion: MATH3241 3.0

COSC 3122 3.0
Introduction to Numerical Computations II
(same as AS/SC/MATH 3242 3.0)

The course includes a study of algorithms and computer methods for differentiation, integration, and solution of ordinary differential equations. Nonlinear equations of one variable, systems of nonlinear equations, optimization of functions of one and several variables and their relation to nonlinear equations are also covered. The emphasis of the course is on the development of numerical algorithms, the use of intelligent mathematical software and the interpretation of the results obtained on some assigned problems.

Topics covered may include the following.

• Solution of Nonlinear Equations and Unconstrained Optimization - single nonlinear equation; systems of nonlinear equations; unconstrained optimization.
• Numerical Differentiation and Integration - methods of estimating derivatives; error analysis for differentiation; the rectangle and trapezoid rule for integration; Simpson's rule; Romberg's integration; adaptive quadrature routines; truncation and round-off errors in integration; improper integrals.
• Solution of Ordinary Differential Equations - introduction; analytical versus numerical solutions; basic numerical methods; Euler's, Heun's methods; Taylor series methods; order of a method; local and global errors; Runge-Kutta methods; Predictor-corrector methods; systems of differential equations; boundary value problems.

Prerequisites: COSC3121 3.0; MATH2270 3.0

Degree Credit Exclusion: MATH3242 3.0

COSC 3201 3.0
Digital Logic Design
• Boolean Algebra and Logic Gates. How complex functions on data at the bit-representation level can be built up from simple primitives such as And, Or and Not (or just Nand or Nor). Implementation of logic functions using these primitives. Families of logic circuits.
• Combinatorial circuits, implementing functions whose output depends only on their inputs. Canonical forms of Boolean functions and their simplification using Karnaugh maps and the Quine-McClusky method. Complex combinatorial units, such multiplexers, encoders, arithmetic-logic units(ALU), read-only memory(ROM), and programmable arrays.
• Sequential circuits, implementing functions whose output depends on their history as well as their current input. Construction of basic, clocked, master-slave, and edge-triggered flip-flops. Higher level (register-transfer) constructs such as registers, counters and read-write memory(RAM).
• Theoretical design concepts, such as finite state machines.
• Hands-on digital logic hardware laboratory.

Suggested readings:

• John Hays, Introduction to Logic Design, Addison Wesley, 1993.
• M.M. Mano, Digital Design, Prentice Hall, 1991.

Prerequisites: general prerequisites, including COSC2021 3.0.

COSC 3211 3.0
Data Communications
• Physical and Electrical. How complex periodic signals propagate through guided media such as twisted pairs, co-axial cable, point-to-point microwave links, and fibre optics, and through the unguided medium of broadcast electromagnetic radiation. Frequency-domain (Fourier, spectral) analysis. Noise. Limiting relationship between signal-rate and bandwidth (Nyquist) and between data-rate and bandwidth and signal-to-noise ratio (Shannon).
• Data encoding. How analogue and digital data are carried in some encoded form by analogue and digital signals.
AnalogueAnalogue amplitude, frequency, phase modulation
DigitalAnalogue amplitude, frequency, phase shift keying
AnalogueDigital sampling, quantisation, pulse code modulation.
DigitalDigital NRZ-L, NRZI, Bipolar-AMI and Manchester
• Data Link. How frames of data bits are transmitted in a controlled and reliable way between physically (i.e. directly) linked nodes in a network. Protocols for flow control, and error detection and control.
• Multiplexing and switching. How unrelated data streams may share common pathways. Time-division and frequency-division multiplexing. Circuit switching. Space-division switching. Packet switching.
• Networks. LAN (local area networks). Ethernet (CSMA/CD), token bus and token ring. Virtual circuits and datagrams.
• Basics of the TCP/IP protocol suite.

Prerequisites: general prerequisites, including COSC2021 3.0 and MATH2090 3.0

COSC 3212 3.0
Computer Networks

This course covers the upper layers in the OSI(TCP/IP) reference models. Topics covered include:

• Introduction: Local area networks, high speed local area networks, Metropolitan Area networks, and wireless networks.
• Network layer: Routing, congestion control, traffic shaping, Internetworking, IP, IPv6, and network layer in ATM networks.
• Transport layer: Transport protocols, transport connection management, TCP, UDP, and the ATM Adaptation Layer (AAL) protocols.
• Application layer: Remote Procedure Calling (RPC), network security, Abstract Syntax Notation (ASN), multimedia and data compression.

Prerequisites: general prerequisites; COSC3211 3.0

COSC 3301 3.0
Programming Language Fundamentals

The topic of programming languages is an important and rapidly changing area of computer science. This course introduces students to the basic concepts and terminology used to describe programming languages. Instead of studying particular programming languages, the course focuses on the "linguistics" of programming languages, that is, on the common, unifying themes that are relevant to programming languages in general. The algorithmic, or procedural, programming languages are particularly emphasized. Examples are drawn from early and contemporary programming languages, including Fortan, Algol 60, PL/I, Algol 68, Pascal, C, C++, Eiffel, Ada 95, and Java.

This course is not designed to meet the needs of the student who wishes to learn to program in a particular programming language. However, any student who completes this course should be able to learn any new programming language with relative ease.

Topics covered may include the following.

• Classification of programming languages: language levels, language generations, language paradigms.
• Programming language specification: lexical, syntactic, and semantic levels of language definition.
• Data, data types, and type systems; simple types, structured types, type composition rules.
• Control primitives, control structures, control composition rules.
• Subprograms: functions and procedures; argument-parameter binding; overloading.
• Global program structure: modules, generic units, tasks, exceptions.
• Object-oriented language features: classes, encapsulation, inheritance, polymorphism.
• Critical and comparative evaluation of programming languages.

Prerequisites: general prerequisites, including COSC 2001 3.0.

COSC 3311 3.0
Software Design

"A program which does not work is undoubtedly wrong; but a program which does work is not necessarily right. It may still be wrong because it is hard to understand or because it is hard to maintain as the program requirements change; or because its structure is different from the structure of the problem." (M. A. Jackson)

This course introduces the topic of software design through lectures, supplementary readings and a set of small design problems. The course deals with the problem of designing software that can be used, understood and modified by people other than the original designer.

Software design is in itself a large topic as design can deal with various classes of programs and systems: small, medium and large; batch; real time; distributed; and interactive (visual and graphical). Every design class has its own problems. In this course we deal with small to medium programs and small systems that work without critical time constraints (although time will be considered).

We examine design methods such as JSP (Jackson System Programming), Data Flow, SADT (Structured Analysis and Design Technique), top down, bottom up and structured design methods. We show how theoretical notions from finite state machines and grammars are related to and used in the design process.

Some of the low level techniques we look at are: abstract data types; backtracking; divide and conquer; structure clash resolution; process inversion; coroutines; and error handling.

Design issues are related to the other phases of developing a program: requirements analysis, specification, implementation, testing, and maintenance.

Upon leaving the course, you can expect to be able to design, implement and modify programs and systems of programs which transform sequences from one form to another. You will understand the role of tools and frames in the design process. You will be able to evaluate program designs and design methods.

Prerequisites: general prerequisites, including COSC 2001 3.0, COSC2031 3.0 and MATH2090 3.0

COSC 3321 3.0
Operating System Fundamentals

This course is intended to teach students the fundamental concepts that underlie operating systems, including multiprogramming, concurrent processes, CPU scheduling, deadlocks, memory management, file systems, protection and security. Many examples from real systems are given to illustrate the application of particular concepts. At the end of this course, a student will be able to understand the principles and techniques required for understanding and designing operating systems.

Prerequisites: general prerequisites, including COSC2021 3.0 and COSC 2031 3.0

COSC 3331 3.0
Object-Oriented Programming and Design

Introduction to the theoretical and practical methods of object-oriented software construction. Topics include: single and multiple inheritance, type hierarchies, polymorphism, operator overloading, class library design, templates, constraint based programming; and contract model of design.

This course is a detailed introduction to the methodology and practice of Object-Oriented software construction, one of the major areas of software engineering practice and research.

A source program in an object-oriented programming environment is based on independently defined abstract program units called object classes or types; the object instances of the classes are created in the program and interact through message passing at run-time. Each object is a program unit which packages both a coherent collection of data elements and the methods (routines) for their manipulation. The object encapsulates its data elements, which means that the object class has an interface which defines all and only what is visible about the object instances to other objects in the program environment. These techniques promote the reuse of reliable code and reduce the frequency of the kinds of programming which arise in attempting to integrate the different parts of a complex program.

The course will introduce the theoretical concepts of object-oriented programming and design, and present examples using the object-oriented programming language C++.

The course assumes a general knowledge of C++ (i.e. base types, control structure, pointers, references, functions, parameter passing, etc.) as well as general notion of abstract data types and as they are implemented in C++ (i.e. classes).

The topics to be covered include the following.

• A brief introduction to Abstract Data Types and classes of C++.
• The construction of a hierarchy of data types in which types are derived from one or more ancestor types by inheritance and refinement.
• A discussion of overloading, overriding, hiding of member functions.
• Constraint based programming to ensure the correctness of methods, class invariants, loop invariants, etc.
• Polymorphism and templates as an approach to code reuse.
• Static versus dynamic binding of methods to method calls.
• Techniques of object-oriented design: identifying objects and classes; identifying semantics of objects and classes; identifying class hierarchies; identifying when to use polymorphism.
• The contract model of software design.
• Multiple inheritance.
• An introduction to object models in other programming languages (e.g. Ada 95, Java, Eiffel).
• Object class library design to provide reusable software components.

Prerequisites: general prerequisites

Degree Credit Exclusion: COSC3010A 3.0

COSC 3401 3.0
Introduction to Symbolic Computation

The course will introduce and explore programming concepts used in symbolic and knowledge-based computing. It is intended to give the student a programming background which will be useful for further work in logic programming, expert systems, and artificial intelligence.

The programming language Prolog will be considered in detail. Prolog is a declarative programming language based on the concept of a logical assertion. It is widely used for constructing knowledge-based and expert systems.

The course will develop the following concepts.

• Terms as representations of facts
• Logical clauses as rules
• Recursive programming techniques
• Backward-chaining vs. forward-chaining
• Goal search through backtracking
• Building logical databases for knowledge-based problem-solving
• Representing mathematical knowledge by rewrite rules
• Natural language processing using grammar rules

Prerequisites: general prerequisites, including MATH 2090 3.0

COSC 3402 3.0
Introduction to Concepts of Artificial Intelligence

Artificial Intelligence (AI) deals with building a system which can operate in an intelligent fashion. Neat as this simple definition is, it obscures the complex nature of intelligence. At the time of the Dartmouth Conference (1956), regarded by many as the start of AI, some researchers believed it would be possible to create a "thinking machine" in a matter of a few years. That was close to 40 years ago, and we are still far from our goal, but we have learned a lot on the way.

In this course, we begin by discussing differing definitions of artificial intelligence and go on to examine fundamental concepts in AI, building on material introduced in COSC3401 3.0: Introduction to Symbolic Computation. Topics to be covered include reasoning under uncertainty, search, constraint propagation, planning and problem solving.

Prerequisites: general prerequisites; COSC3401 3.0; MATH2320 3.0

COSC 3408 3.0
Simulation of Discrete Systems

Simulation is a technique for dealing with problems that do not admit exact (or "analytic") solutions via mathematical analysis. A model of the system to be studied is constructed, and then the model is run to see how it performs, either to predict how the system will behave, or, if the behaviour of the system is known, to test the validity of the model of the system. A computer is a tool for supporting a large amount of activity in the running of the model.

A "discrete system" simulation is one which admits a discrete-event model that can run be in discrete steps that match the structure of the model. (For simulation of continuous systems see COSC 3418 3.0)

Examples of discrete systems studied by simulation include games and other dynamic systems involving small populations where it is feasible to model individual's behaviour. Major sub-topics include the generation and use of random numbers, queuing systems, and the visual presentation of behaviour.

Prerequisites: general prerequisites; MATH2560 3.0.

Degree Credit Exclusion: MATH4930B 3.0

COSC 3411 3.0
File Structures and Data Management

The purpose of this course is to introduce students to file organizations and the hardware and software involved in the creation and manipulation of files. The course presents basic concepts, criteria for choosing between alternative file organizations, and other topics that are important for the understanding of file management. At the end of this course a student will be able to understand and apply file organization techniques in design and analysis of file management systems.

Topics covered may include the following.

• Overview of data processing, file organizations. Review of external storage devices characteristics
• Sequential files
• Hash files
• Indexed sequential files
• B-trees, B+-trees, B*-trees
• Tries and Patricia
• Multi-key file organizations
• Data encoding
• External sorting
• Buffer and memory management

Suggested readings:

• P.D. Smith and G.M. Barnes, Files and Databases: an Introduction, Addison Wesley, 1987.
• W.B. Frakes, R. Baeza-Yates (eds.), Information Retrieval: Data Structures and Algorithms, Prentice-Hall, 1992.
• A. Tharp, File Organization and Processing, John Wiley & Sons, 1988.

Prerequisites: general prerequisites, including COSC 2021 3.0, COSC2031 3.0 and MATH2090 3.0; knowledge of the C or C++ language is recommended; MATH2320 3.0 is recommended.

COSC 3412 3.0
Introduction to Database Management Systems

The purpose of this course is to introduce the fundamental concepts of database management, including aspects of data models, database languages, and database design. At the end of this course, a student will be able to understand and apply the fundamental concepts required for the use and design of database management systems.

Topics may include the following:

• Overview of Database Management Systems
• Entity-Relationship Model
• Relational Model
• Integrity Constraints
• Relational Database Design
• Network Model
• Hierarchical Model

Prerequisites: general prerequisites; COSC3411 3.0

COSC 3418 3.0
Simulation of Continuous Systems

Simulation is a technique for dealing with problems that do not admit exact (or "analytic") solutions via mathematical analysis. A model of the system to be studied is constructed, and then the model is run to see how it performs, either to predict how the system will behave, or, if the behaviour of the system is known, to test the validity of the model of the system. A computer is a tool for supporting a large amount of activity in the running of the model.

A "continuous system" may either be presumed to be inherently continuous or it may, at a fine enough scale, be actually composed of discrete events. However, in simulation, a "continuous system" is one for which the model, due to practical necessity, is described by continuous variables regardless of its physical structure. However, the running of a continuous model involves, also of necessity, discrete steps. Thus central to continuous system simulation is the problem of approximation. (For simulation of discrete systems see COSC 3408 3.0)

Examples of continuous systems studied by simulation include dynamic systems involving very fine variations or large populations. Major sub-topics include chaotic behaviour, the numerical solution of differential equations by finite methods, and related issues of stability and errors.

Prerequisites: general prerequisites; MATH2560 3.0.

COSC 3530 3.0
Technical and Professional Writing
(x-listed BC3030 3.0)

This writing-intensive course is for upper-year students enrolled in Computer Science, Space and Communication Sciences, and related fields. Students develop confidence and competence in professional and technical writing. Focus is on communication of complex information in a clear, sensible style. Articles, end-user documentation and technical reports will be critically evaluated in class. Outside speakers from industry will be invited to provide a real-world perspective on needs.

Note: This course counts as elective Science credits toward satisfying Faculty degree requirements but does not count as Computer Science credit.

Web site:

Corequisite: concurrent enrolment in at least one course in 3000- or 4000-level Computer Science, Physics, or other applied science. English language proficiency is expected.

Degree Credit Exclusions: BC3030 3.0; BC3050 3.0.

Course Descriptions: 4000-Level

General Prerequisites

Before enrollment is permitted in any 4000-level computer science course the following requirements must be met.

• COSC2001 3.0, COSC2011 3.0, COSC2021 3.0 completed.
• at least 12 credits in COSC courses at the 3000-level completed.
• a cumulative gpa of 4.5 (5.0 if removal of ordinary programmes is not approved) or better over completed computer science courses (including only the most recent grades in repeated courses for Science students).
• MATH2090 3.0 completed

Specific prerequisites may apply to individual courses.

COSC 4001 6.0
Space and Communication Sciences Workshop
(same as SC/EATS4001 6.0 and SC/PHYS4001 6.0)

Individual projects will be assigned by mutual agreement between the student and a faculty member. The work may be done under supervision by the faculty member, or under supervision of an industrial associate to that faculty member. The projects will be self-contained problems of a design nature, and will be pursued in the manner of a space project. Thus, the first step is to define the requirements of the design, the second to carry out a review of previous work, and the third to execute the design. Following that, the design shall be tested, normally through simulation, and conclusions drawn. A report of professional quality shall be written and submitted.

Prerequisites: Satisfactory completion of the 3000-level courses in the Space and Communication Science core

Degree Credit Exclusions: COSC4080 3.0, EATS4001 6.0, PHYS4001 6.0

COSC 4010C 3.0
Beyond the Object: Frameworks, Components and ORBs
COSC 4080 3.0
Computer Science Project

This is a course for advanced students, normally those in the fourth year of an honours programme, or students who have completed six full computer science courses. Students who have a project they wish to do, need to convince a member of the faculty in the department that it is appropriate for course credit. Alternatively, students may approach a faculty member in the Department (typically, one who is teaching or doing research in the area of the project) and ask for project suggestions. Whatever the origin of the project, a 'contract' is required. It must state the scope of the project, the schedule of work, the resources required, and the criteria for evaluation. The contract must be signed by the student and his/her project supervisor and be acceptable to the course director.

Internship students may elect to receive credit for their internship as a project course. This is outlined further at the beginning of this calendar. A 'contract' is still required.

Prerequisites: general prerequisites; permission of the course director. Restricted to students who have completed 36 credits in Computer Science.

Degree Credit Exclusion: COSC4001 6.0

COSC 4101 3.0
Advanced Data Structures

The course discusses advanced data structures: heaps, balanced binary search trees, hashing tables, red--black trees, B--trees and their variants, structures for disjoint sets, binomial heaps, Fibonacci heaps, finger trees, persistent data structures, etc. When feasible, a mathematical analysis of these structures will be presented, with an emphasis on average case analysis and amortized analysis. If time permits, some lower bound techniques may be discussed, as well as NP-completeness proof techniques and approximation algorithms.

The course may include the following topics.

• Amortized and worst-case analysis of data structures.
• Data structuring paradigms: self-adjustment and persistence.
• Lists: self-adjustment with the move-to-front heuristic.
• Search trees: splay trees, finger search trees.
• Heaps: skew heaps, fibinacci heaps.
• Union-find trees.
• Link-and-cut trees.
• Multidimensional data structures and dynamization.

Prerequisites: general prerequisites, including COSC 3101 3.0; MATH2320 3.0

COSC 4111 3.0
Automata and Computability

This course is the second course in the theory of computing. It is intended to give students a detailed understanding of the basic concepts of abstract machine structure, information flow, computability, and complexity. The emphasis will be on appreciating the signficance of these ideas and the formal techniques used to establish their properties. Topics chosen for study include: models of finite and infinite automata, the limits to computation, and the measurement of the intrinsic difficulty of computational problems.

Prerequisites: general prerequisites, including COSC3101 3.0; MATH2320 3.0.

COSC 4201 3.0
Computer Architecture

This course presents the core concepts of computer architecture and design ideas embodied in many machines and emphasizes a quantitative approach to cost/performance tradeoffs. This course concentrates on uniprocessor systems. A few machines are studied to illustrate how these concepts are implemented; how various tradeoffs that exist among design choices are treated; and how good designs make efficient use of technology. Future trends in computer architecture are also discussed.

Topics covered may include the following.

• Fundamentals of computer design
• Performance and cost
• Instruction set design and measurements of use
• Basic processor implementation techniques
• Pipeline design techniques
• Memory-hierarchy design
• Input-output subsystems
• Future directions

Prerequisites: general prerequisites, including COSC 3201 3.0 and COSC3321 3.0

COSC 4211 3.0
Performance Evaluation of Computer Systems

Topics covered may include the following.

• Review of Probability Theory - probability, conditional probability, total probability, random variables, moments, distributions (Bernoulli, Poisson, exponential, hyperexponential, etc.)
• Stochastic Processes - Markov chains and birth and death processes
• Queueing Theory - M/M/1 Queueing system in detail; other forms of queueing systems including limited population and limited buffers.
• Application - A case study involving use of the queuing theory paradigm in performance evaluation and modeling of computer systems such as open networks of queues and closed queuing networks. Use of approximation techniques, simulations, measurements and parameter estimation.

Prerequisites: general prerequisites, including COSC 3211 3.0 and COSC3408 3.0

COSC 4242 3.0
Signals and Systems

The study of computer vision, graphics and robotics requires background in the concept of discrete signals, filtering, and elementary linear systems theory. Discrete signals are obtained by sampling continuous signals.

In this course, students review the concept of a discrete signal, the conditions under which a continuous signal is completely represented by its discrete version, linear time-invariant systems.

Topics covered may include the following.

• Continuous and discrete signals
• Linear time-invariant systems
• Fourier analysis in continuous time
• Fourier analysis in discrete time
• Sampling
• Filtering, image enhancement
• Laplace transform
• Z transform
• Linear feedback systems
• Random signals, image coding
• Kalman filtering
• Statistical pattern recognition

Prerequisites:general prerequisites; COSC3121 3.0 or MATH3241 3.0.

Degree Credit Exclusions: COSC4010B 3.0 EATS4020 3.0, MATH4830 3.0, PHYS4060 3.0.

COSC 4301 3.0
Programming Language Design

This course is a continuation of COSC3301 3.0 Programming Language Fundamentals. Like its predecessor, the course focuses on the linguistics of programming languages; that is, on the common, unifying themes that are relevant to programming languages in general. Both algorithmic and nonalgorithmic language categories are examined. Current techniques for the formal specification of the syntax and semantics of programming languages are studied. Skills are developed in the critical and comparative evaluation of programming languages.

Prerequisites: general prerequisites, including COSC 3301 3.0

COSC 4302 3.0
Language Processors

This course is concerned with a variety of theoretical and practical questions that are raised by the need to implement programming languages. The implementation of a programming language is accomplished by writing a computer program that functions as a "translator" or "language processor". Language processors can be categorized as compilers, cross-compilers, interpreters, assemblers, and pre-processors. However, the different kinds of translators generally exhibit a common internal structure consisting of standardized "phases": the scanner, parser, and semantics. Because of this common structure, it is appropriate to study language processors as a unified group. However, the course emphasizes the most important class of language processors: compilers.

As a practical exercise, students are required to design and implement components of a compiler.

Topics covered may include the following.

• Phases of translation, single-pass and multi-pass translation, phase interleaving.
• Lexical analysis, or scanning: finite-state automata, practical simplifications of finite-state automata.
• Syntactic analysis, or parsing: shift-reduce parsing, operator precedence parsing, top-down parsing, bottom-up parsing, backtracking, look-ahead, efficiency considerations.
• Context conditions, semantic analysis, code generation,
• Data structures for translators, symbol tables.
• Optimization: local optimizations, register optimization, global optimization, control flow analysis, data flow analysis.
• Error analysis: error trapping and recovery.

Prerequisites: general prerequisites, including COSC2031 3.0 and COSC 3301 3.0

COSC 4311 3.0
System Development

System Development deals with the construction of systems of interacting processes. The course focuses on abstraction, specification, and analysis in software system development. Abstraction and specification can greatly enhance the understandability, reliability and maintainability of a system. Analysis of concurrency and interaction is essential to the design of a complex system of interacting processes.

The course is split into three parts. The first part discusses a semiformal method, Jackson System Development (JSD) by Michael Jackson. JSD is used to build an understanding of what system development entails and to develop a basic method of constructing practical systems of interacting processes. JSD gives precise and useful guidelines for developing a system and is compatible with the object oriented paradigm. In particular, JSD is well suited to the following.

• Concurrent software where processes must synchronize with each other.
• Real time software. JSD modeling is extremely detailed and focuses on time at the analysis and design stages.
• Microcode. JSD is thorough, it makes no assumptions about the availability of an operating system.
• Programming parallel computers. The JSD paradigm of many processes may be helpful.

The second part of the course discusses the mathematical model CSP (Communicating Sequential Processes by C.A.R. Hoare). While CSP is not suitable to the actual design and development of a system of interacting processes, it can mathematically capture much of JSD. Consequently, it is possible to use formal methods in analyzing inter-process communication arising out of JSD designs.

The third part of the course discusses Z notation and its use in the specification of software systems. Z has been successfully used in many software companies -- such as IBM and Texas Instruments -- to specify and verify the correctness of real systems.

Prerequisites: general prerequisites, including COSC 3311 3.0, and COSC3111 3.0 or COSC3321 3.0.

COSC 4321 3.0
Operating System design

An operating system has four major components: process management, input/output, memory management, and the file system. This project- oriented course puts operating system principles into action. This course presents a practical approach to studying implementation aspects of operating systems. A series of projects is included, making it possible for students to acquire direct experience in the design and construction of operating system components. A student in this course must design and implement some components of an operating system and have each interact correctly with existing system software. The programming environment is C++ under Unix. At the end of this course, a student will be able to design and implement the basic components of operating systems.

A solid background in operating systems concepts, computer architecture, C, and UNIX is expected.

Prerequisites: general prerequisites, including COSC 3321 3.0.

COSC 4331 3.0
Computer Graphics

This course introduces the student to the fundamental algorithms of 3-D computer graphics and image synthesis.

The first half of the course covers window systems, display hardware, graphical primitives, scan conversion, two and three-dimensional transformations and the mathematics of planar geometric projection.

The second half concentrates on raster algorithms and image synthesis. Some of the topics include visible surface algorithms, modeling, shading, global illumination, anti-aliasing and texture mapping.

Students are expected to be familiar with C and UNIX and will be using the X window environment on the undergraduate workstations.

Prerequisites: general prerequisites: MATH2221 3.0

COSC 4341 3.0
Interacive System Design

Recent studies have shown that on average, 50% of the costs of modern application programs come from the development of the program's user interface. At the same time, users of programs are becoming increasingly aware and critical of poorly designed user interfaces. The modern system designer must, therefore, be capable of creating systems that are easy to use and that truly address the needs of the users, while still managing to remain within budget.

This course introduces the concepts and technology necessary to manage the design and implementation of interactive software. Students will learn methods for designing software matched to the goals, tasks and skills of the eventual users of the system. A development methodology is presented in which each development stage involves evaluation of the quality of the system design. Units in the course will cover User Needs Analysis, User Interface Design, Task-Oriented Specification, Architecture Design of Interactive Systems, System Implementation, and User Testing and Evaluation.

The course is based on a project which involves programming in Turing, a Pascal-like language. Students are expected to learn Turing on their own.

Prerequisites: general prerequisites.

COSC 4351 3.0
Real-Time Systems Theory

In real-time computing systems the correctness of the system depends not only on the logical result of the computation but also on the time at which the results are produced. For example, a computer controlling a robot on the factory floor of a flexible manufacturing system, must stop or turn the robot aside in time to prevent a collision with some other object on the factory floor. Other examples of current real-time systems include communication systems, traffic systems, nuclear power plants and space shuttle and avionic systems.

Real-time programs in many safety-critical systems are more complex than sequential programs or concurrent programs that do not have real-time requirements. This course will deal with the modelling, simulation, specification, analysis, design and verification of such real-time programs. The objective of the course is to expose the student to current techniques for formally proving the correctness of real-time behaviour of systems.

Topics covered may include the following.

• Techniques for expressing syntax and semantics of real-time programming languages
• Modelling real-time systems with discrete event calculi (e.g. Petri net and state machine formalisms)
• Specification of concurrency, deadlock, mutual exclusion, delays and timeouts
• Scheduling of tasks to meet hard time bounds.
• CASE tools for analysis and design. At the end of the course the student will be able to model and specify real-time systems, design and verify correctness of some real-time systems.

Prerequisites: general prerequisites, including COSC 3311 3.0 or COSC3321 3.0 or COSC3111 3.0.

COSC 4352 3.0
Real-Time Systems Practice

In real-time computing systems the correctness of the system depends not only on the logical result of the computation but also on the time at which the results are produced. For example, a computer controlling a robot on a factory floor must stop the robot in time to prevent a collision. Other examples of real-time systems include communication systems, traffic systems, nuclear power plants and avionic systems. Real-time systems are complex and require a knowledge of reactive programs for their design. A reactive program maintains an ongoing non-terminating interaction with its environment rather than computing some final value on termination.

The course will focus on the design, construction and verification of soft and hard real-time systems. Topics may include: models of concurrent processes with access to a clock (e.g. by fair transition systems with timeouts and clock variables), semaphores and synchronization, process communication and fairness, temporal logic for specifying safety properties (e.g. freedom from deadlock), liveness and real-time response, verification of real-time systems using temporal logic model-checking tools such as StateClock/STeP, and examples from real-time programming languages (Ada and Java).

Prerequisites: general prerequisites, including COSC 3301 3.0 or COSC3311 3.0 or COSC3321 3.0

COSC 4361 3.0
Human-Computer Communication

The course focuses this year on the design and implementation of hypermedia presentation systems. "Hypermedia" refer to the non-linear organization of digital information, in which items (such as a word in a text field or a region of an image) are actively linked to other items. Users interactively select and traverse links in a hypermedia presentation system in order to locate specific information or entertainment, or to browse in large archives of text, sound, images, and video. Well-structured hypermedia give users a way of coping with the "navigation" problem created by availability of low-cost, fast access, high-density storage media.

We will explore the following topics.

• The historical roots of hypermedia: Bush, Engelbart, and Nelson;
• The digital representation of media: rich text, sound, speech, images, animation, and video;
• Enabling technologies for creating hypermedia
• The role of scripting and markup languages;
• Networked hypermedia (e. g. HTTP browsers); performance and compression issues
• Development Tool Kits
• Distribution and Intellectual Property Issues

Students will be expected to familiarize themselves quickly with the Macintosh interface and basic features of the operating system. Students will be asked to schedule themselves for at least six hours/week lab time in the Department's Multimedia Lab (161 CCB), as the course work will involve a significant amount of exploration and development of multimedia/hypermedia materials. Students will be divided into small teams with specific responsibilities for individual exploration and programming tasks assigned in connection with the course topics. Tasks may take the form of constructing presentations, prototype applications, or the programming of useful scripts. The teams will be asked to write short reports on their work which will be presented in class.

Prerequisites: general prerequisites.

COSC 4401 3.0
Artificial Intelligence

This course will be an in-depth treatment of one or more specific topics within the field of Artificial Intelligence. Possible topics include the following.

• Machine learning: deduction, induction, abduction, explanation-based learning, learning k-DNF.
• Statistical learning: reinforcement learning, genetic learning algorithms, connectionist learning systems, supervised and unsupervised.
• Statistical and structural pattern recognition.
• Speech recognition.
• Artificial intelligence programming paradigms: search, pattern-directed inference, logic- and object-oriented programming, symbolic mathematics, constraint satisfaction and symbolic relaxation, building problem solvers, efficiency issues.
• Sensor-based robotics: path planning, position estimation, map-building, object recognition, robotic sensor and actuator hardware, software, and interfacing.

Contact the course director for information regarding the focus of the course this year.

Prerequisites: general prerequisites, including COSC 3402 3.0

COSC 4402 3.0
Logic Programming

Logic programming has its roots in mathematical logic and it provides a view of computation which contrasts in interesting ways with conventional programming languages. Logic programming approach is rather to describe known facts and relationships about a problem, than to prescribe the sequence of steps taken by a computer to solve the problem.

One of the most important problems in logic programming is the challenge of designing languages suitable for describing the computations which these systems are designed to achieve. The most commonly recognized language is PROLOG.

When a computer is programmed in PROLOG, the actual way the computer carries out the computation is specified partly by the logical declarative semantics of PROLOG, partly by what new facts PROLOG can "infer" from the given ones, and only partly by explicit control information supplied by the programmer. Computer Science concepts in areas such as artificial intelligence, database theory, software engineering knowledge representation, etc., can all be described in logic programs.

Topics covered may include the following.

• Logical preliminaries: syntax and semantics of first order predicate logic and its Horn logic fragment;
• Logical foundations of logic programming: unification, the resolution rule, SLD-resolution and search trees;
• PROLOG as a logic programming system;
• Programming techniques and applications of PROLOG;
• Constrained logic programming systems.

At the end of this course a student will be familiar with fundamental logic programming concepts and will have some programming expertise in PROLOG.

Prerequisites: general prerequisites, including COSC 3401 3.0, and COSC3101 3.0 or COSC3111 3.0.

COSC 4411 3.0
Database Management Systems

This course is the second course in database management. It introduces concepts, approaches, and techniques required for the design and implementation of database management systems.

Topics may include the following:

• Query Processing
• Transactions
• Concurrency Control
• Recovery
• Database System Architectures
• Distributed Databases
• Object-Oriented Databases

Suggested Readings: R. Elmasri and S.B. Navathe, Fundamentals of Database Systems, 2nd Ed., Benjamin Cummings, 1994.

Prerequisites: general prerequisites, including COSC3412 3.0.

COSC 4421 3.0
Introduction to Robotics

The course introduces the basic concepts of robotic manipulators and autonomous systems. After a review of some fundamental mathematics the course examines the mechanics and dynamics of robot arms, modible robots, their sensors and algorithms for controlling them. A Robotics Laboratory is available equipped with a manipulator and a moving platform with sonars, several workstations and an extensive collection of software.

Prerequisites: general prerequisites; MATH2221 3.0.

COSC 4422 3.0
Computer Vision

Computer Vision is a very challenging problem with wide applications. It spans several disciplines within science and engineering: computer science, computer engineering, photogrammetry, telecommunications, robotics, medicine and the list goes on. This course introduces the fundamental concepts of vision with emphasis on computer science.

In particular the course covers the image formation process, color analysis, image processing, enhancement and restoration, feature extraction and matching, 3-D parameter estimation and applications. A Vision Laboratory is available where students can gain practical experience. The Lab includes several workstations equipped with video cameras, digitizers and image processing software.

Prerequisites: general prerequisites, including COSC3121 3.0

Required Mathematics Courses

The introductory courses MATH1090 3.0 and MATH1300 3.0 , and MATH1310 3.0 are required of all Computer Science majors. Students who have not taken OAC calculus should consult advisors in the Mathematics Department to determine which courses they should take before attempting MATH1300 3.0. In addition, some combination, or all of, the following mathematics courses will also be required, depending on the degree programme; MATH2090 3.0, MATH2221 3.0, and MATH2320 3.0.

Mathematics Substitute Course List

Course   Acceptable Substitute
MATH1025 3.0   MATH2021 3.0, MATH2221 3.0
MATH1090 3.0   MATH1120 3.0
MATH1300 3.0   MATH1000 3.0, MATH1013 3.0
MATH1310 3.0   MATH1010 3.0, MATH1014 3.0
MATH2221 3.0   MATH1025 3.0, MATH2021 3.0

MATH 1090 3.0
Introduction to Sets and Logic
(formerly MATH1120 3.0)

This course is an introduction to sets, functions, relations, logic, induction and proof techniques, and may include a smattering of basic combinatorics and graph theory. It should be of value to mathematics or computer science majors, and may also appeal to students wanting to apply mathematics to the social and management sciences.

The final grade will be based on class tests and a final examination (and possibly assignments).

Prerequisites: One credit of OAC(Ontario Grade 13) mathematics or AK/MATH1710 6.0 or equivalent.

Degree Credit Exclusions: AS/SC/MATH1120 3.0, AK/MATH1409A 3.0, AK/MATH2400 6.0, AK/MATH2440 6.0, AK/MATH2441 3.0.

The course is not open to students who have taken or are taking any mathematics course at 3000 or higher level.

MATH 1300 3.0
Differential Calculus With Applications

Topics include functions, limits, continuity, differentiation, mean-value theorem, curve sketching, maxima and minima, Riemann integration, antiderivatives, fundamental theorem of calculus.

The final grade may be based on assignments, quizzes, class tests and a final examination worth at least 30%.

Prerequisites:OAC Calculus or AS/SC/MATH1500 3.0 or AS/SC/MATH1515 3.0 or AK/MATH1710 6.0 or equivalent.

Degree Credit Exclusions:AS/SC/MATH1000 3.0, AS/SC/MATH1013 3.0, AS/SC/MATH1505 6.0, AS/MATH1530 3.0, AS/AK/MATH1550 6.0, AS/ECON1530 3.0, SC/ACMS1030 6.0, SC/ACMS1050 6.0, AK/MATH1410 6.0, AK/MATH 1300 3.0, AK/MATH1409B 3.0.

MATH 1310 3.0
Integral Calculus With Applications

This is the second in a series of introductory calculus courses. It is designed to follow MATH 1300 3.0.

Topics include fundamental theorem of calculus, logarithmic and exponential functions, trigonometric functions, techniques of integration, applications of integration theory, l'Hôpital's rule, infinite sequences and numerical series.

The final grade may be based on assignments, quizzes, class tests, and a final examination worth at least 30%.

Prerequisites: One of AS/SC/MATH 1000 3.0, AS/SC/MATH 1013 3.0, AS/SC/AK/MATH 1300 3.0, or, for non-Science students only, one of AS/MATH 1530 3.0 and AS/MATH 1540 3.0; or AS/AK/MATH 1550 6.0; or AS/ECON 1530 3.0 and AS/ECON 1540 3.0.

Degree Credit Exclusions: AS/SC/MATH 1010 3.0, AS/SC/MATH 1014 3.0, AS/SC/MATH 1505 6.0, SC/ACMS1030 6.0, SC/ACMS1050 6.0, AK/MATH1310 3.0, AK/MATH1410 6.0.

MATH 2090 3.0
Introduction to Matematical Logic

Logic is the "official" language of mathematics and is essential in establishing the foundations on which mathematics is built. In recent years, logic has also come to play a fundamental and major role in computer science. A knowledge of logic is now an absolute necessity for the computer professional. In this course we will introduce the student to the basics of mathematical logic and deductive reasoning. The course is primarily intended for Computer Science students but would be valuable to any student interested in formal reasoning. The topics covered will include the syntax and semantics of both propositional and predicate logic, an introduction to some axiomatic theories and a more detailed study of Peano arithmetic and induction.

There will be assignments using software for the PC computers; equipment will be available at the Steacie labs.

The final grade will be based on two class tests and a final examination (and possibly assignments).

Prerequisite: AS/SC/AK/MATH1090 3.0 or any 2000-level MATH course (without second digit 5) or permission of the course director.

MATH 2221 3.0
Linear Algebra With Applications

Linear algebra is a branch of mathematics which is particularly useful in other fields and in other branches of mathematics. Its frequent application in the engineering and physical sciences rivals that of calculus. Computer scientists and economists have long recognized its relevance to their discipline. Moreover, linear algebra is fundamental in the rapidly increasing quantification that is taking place in the management and social sciences. Finally, it is essential to higher mathematics courses in algebra, analysis, probability and statistics and geometry, where the ideas of linear algebra reappear.

This course and MATH2222 3.0 form a standard full-year introduction to linear algebra. While the presentation is not excessively theoretical, proofs will be presented and the student is expected to master concepts as well as results. Applications will be left mainly for MATH 2222 3.0.

Topics to be studied include: systems of linear equations and matrices, determinants, linear dependence and independence of sets of vectors in Rn, vector spaces, inner product spaces and the Gram-Schmidt process.

The final grade will be based on term work and a final examination(with possible weights of 60% and 40% respectively).

Prerequisite: OAC algebra or any university mathematics course.

Degree Credit Exclusions: AS/SC/MATH1025 3.0, AS/SC/MATH2000 6.0; AS/SC/MATH 2021 3.0, SC/ACMS 1020 6.0; AK/MATH2220 6.0, AK/MATH2221 3.0.

MATH 2320 3.0
Discrete Mathematical Structures

This course is intended primarily, but not exclusively, for Computer Science students. It aims to provide an intensive introduction to a variety of algebraic and combinatorial structures which are needed in computer science. A student of mathematics should enjoy being introduced to this variety of mathematical topics, many of which are not covered elsewhere. The course does not require a previous knowledge of computer science.

In broad categories the topics to be covered include set theory (relations, functions, ...), combinatorics, graph theory and abstract algebra (posets, lattices, Boolean algebra, groups, ...). The emphasis will be on examples and on extracting common properties.

This course is a prerequisite for COSC 3101 3.0, COSC 3402 3.0, COSC 4101 3.0, COSC 4111 3.0.

The final grade may be based on two class tests (25% each), and a final examination (50%).

Prerequisite: AS/SC/AK/MATH 1090 3.0 or any 2000-level MATH course (without second digit 5) or permission of the course director.

Degree Credit Exclusions: AK/MATH 2440 6.0, AK/MATH2442 3.0.

MATH 2560 3.0
Elementary Statistics

Displaying and describing distributions, normal distribution. Relationships between variables, regression and correlation. The need for design, experimental design and sampling design. Sampling distributions, bias, variability. Probability models, random variables, probability laws.

Prerequisite: Ontario Grade 12 Advanced Mathematics.

Degree Credit Exclusions: AS/SC/MATH 1131 3.0, SC/BIOL 3080 3.0, SC/BIOL 3090 3.0, AS/ECON 2500 3.0, AS/SC/GEOG 2420 3.0, AK/MATH 2442 3.0, AS/SC/PHED2050 3.0, AS/SC/PSYC 2202 3.0, AS/SOC/3030 6.0.

Not open to any student who has successfully completed AS/SC/MATH 2030 6.0.

next: Degree Requirements
Contents Preface The Department Course Descriptions Degree Requirements Degree Checklists