General Prerequisites

¤ CSE1030 3.0 with a grade of C+ or better

¤ CSE1019 3.0

Specific prerequisites may also apply to individual courses. Normally a maximum of three CSE courses may be taken in any one of the fall or winter terms at any level higher than 1000 provided that prerequisites are met.

CSE 2001 3.0

Introduction
to
the Theory of Computation

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

á Finite automata and regular expressions; practical applications, e.g., text editors

á Pushdown automata and context-free grammars; practical applications, e.g., parsing and compilers

á Turing machines as a general model of computers; introduction to unsolvability: the halting problem

*Prerequisites:*
General
prerequisites

CSE 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

CSE
2021 4.0

Computer
Organization

This course
provides a description of how computers work by following the
abstraction trail
from the high-level programming layer down to the digital-logic
component
layer. By understanding how the features of each abstraction layer are
implemented in the one beneath it, one can grasp the tapestry of the
software/hardware interface.

Topics include programming
in assembly language, machine instructions and their encoding formats,
translating and loading high-level programs, computer organization and
performance issues, CPU structure, single/multi-cycle datapath and
control,
pipelining, and memory hierarchy. The course presents theoretical
concepts as
well as concrete implementations on a modern RISC processor.

The lab sessions (3
hours/week) involve experiments on assembly and machine language,
hardware
description languages and simulators, processor architectures, cache
memories.

*Suggested
reading:*

á
Patterson, D. and Hennessy,
J., Computer
Organization and Design: The Hardware / Software Interface, 2nd
Edition, Morgan
Kaufmann Publishers, 1997.

á
Tanenbaum, A.S., Structured
Computer
Organization, 5th ed., Prentice-Hall, 1999.

á Stallings, Wm., Computer Organization and Architecture, 5th ed., Macmillan, 2000.

*Prerequisites:
*General prerequisites

This course introduces software tools that are used for building applications and in the software development process. It covers the following topics:

á ANSI-C (stdio, pointers, memory management, overview of ANSI-C libraries)

á Shell programming

á Filters and pipes (shell redirection, grep, sort & uniq, tr, sed, awk, pipes in C)

á Version control systems and the "make" mechanism

á Debugging and testing

á
All the above tools will
be applied in
practical programming assignments and/or small-group projects.

*Suggested reading:*

á Kernighan and Ritchie, The C Programming Language (ANSI C Edition).

á Kernighan and Pike, The Practice of Programming.

*Prerequisites*:
General
prerequisites

CSE 2501 1.0

Fortran and Scientific Computing

Covers computer-based problem solving in a variety of scientific and engineering settings. Introduces the FORTRAN programming language and its interface with scientific libraries

The first third of the course (4 weeks) is in lecture format (3 hours per week) covering the following topics.

á Data types, control structures and program structure

á Functions and subroutines

á Arrays

á I/O

á Errors in computations

á For the remainder of the term students work on their own on various projects. Project applications are drawn mainly from the following scientific areas.

á Numerical methods: linear systems; curve fitting; non-linear equations; optimisation; differential equations; Fourier transform

á Simulation: random numbers; distributions; queues

á Monte Carlo method

á Processing experimental data

á Data visualization

á Chaos and fractals

*Prerequisites*:
CSE1020
3.0 or CSE1530 3.0

*Course
Credit Exclusion*: CSE1540 3.0

CSE 2550 1.0

Introduction to C# Programming

Introduction to the C# programming language: programming constructs analogous to those taught in CSE1030 3.0; basic data structures if time permits.

[1 hour] Orientation

[2 hours] Comparison of C# vs. Java and C, C++. The VisualStudio.NET development environment. C# program structure.

[1 hour] Control structures (if/else, while, for, switch, break, continue)

[1 hour] Operator overloading

[2 hours] Arrays, strings

[1 hour] Exception handling

[5 hours] Classes, methods, namespaces, parameter passing, method and constructor overloading, inheritance, polymorphism, interfaces, abstract classes.

*Prerequisites*:
CSE1030
3.0 or
ITEC2620 3.0

*Note*: This course does not count for
major credit towards a Computer Science degree.

CSE 2560 1.0

C# Programming Tools for Graphical User Interfaces

Introduction to programming graphical user interfaces (GUI) in the C# programming language: building GUIs in C# under the VisualStudio.NET IDE; the major GUI components and event handling mechanism of C#.

[1 hour] Orientation and general introduction

[2 hours] GUI development: General, C# and .NET specific

[3 hours] Events

[1 hour] Building Windows applications: Forms

[6 hours] GUI components of C#: Labels, TextBoxes, Buttons, GroupBoxes, Panels, CheckBoxes, RadioButtons, PictureBoxes, Menus, LinkLabels, ListBoxes. More advanced features as time permits (for example, colour control, font control, drawing, imaging, animation).

*Prerequisite: CSE2550 1.0*

Note: This course does not count for major credit towards a Computer Science degree

General Prerequisites

¤ CSE2011 3.0

¤ One of CSE2001 3.0 or CSE2021 4.0 or CSE2031 3.0

¤ A cumulative grade point average of 4.5 or better over completed Computer Science courses (including only the most recent grades in repeated courses)

¤ MATH1300 3.0 and MATH1310 3.0

¤ One of MATH1090 3.0 or MATH1025 3.0

á Normally a maximum of three CSE courses may be taken in any one of the fall or winter terms at any level higher than 1000 provided that prerequisites are met.

á
*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
CSE2031 3.0 before entering third year. *

CSE 3001 1.0

Organization
and
Management Seminar in Space and Communication Sciences

(Cross listed with SC/EATS3001 1.0 and SC/PHYS3001 1.0)

This is 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

*Course Credit Exclusions:* EATS 3001 1.0, PHYS
3001 1.0, CSE3002 1.0

CSE
3002 1.0

Organization
and
Management Seminar

This is 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 prerequisites

*Course Credit Exclusions:* EATS 3001 1.0, PHYS
3001 1.0, CSE3001 1.0

CSE 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 is 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, randomised 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, e.g., 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 CSE2001
3.0 and
MATH1090 3.0

CSE
3121 3.0

Introduction
to
Numerical Computations I

(Cross
listed with
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 factorisation 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 factorisation for positive definite systems, banded systems, storage and computational complexities) error analysis, condition number and iterative refinement

á Solution of over determined 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 value 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)

*Prerequisites:
*CSE1540 3.0 or CSE2031 3.0**;** MATH1010 3.0 or MATH1014 3.0 or
MATH1310 3.0; MATH1025 3.0 or MATH1021 3.0 or MATH2021 3.0 or MATH2221
3.0

CSE
3122 3.0

Introduction
to
Numerical Computations II

(Cross
listed with
AS/SC/MATH3242 3.0)

The course is a
continuation of CSE3121 3.0. The main topics include numerical
differentiation, Richardson's extrapolation, elements of numerical
integration,
composite numerical integration, Romberg integration, adaptive
quadrature
methods, Gaussian quadrature, numerical improper integrals; fixed
points for
functions of several variables, Newton's method, Quasi-Newton methods,
steepest
descent techniques, and homotopy methods; power method, Householder
method and
QR algorithms.

The final grade will be based on assignments, tests and a final examination.

*Prerequisite:
*CSE3121 3.0

CSE
3201 4.0

Digital
Logic
Design

Theory and design of logic circuits used in digital systems. This is an intermediate level course that uses a Hardware Design Language to illustrate modern design techniques and is supplemented by hardware laboratory exercises (2 hours per week).

The topics covered will include:

á Review of number systems, Boolean algebra, logic gates and their electrical characteristics.

á Analysis and design of Combinational Circuits including arithmetic units, multiplexers, data selectors, parity checkers etc.

á Hardware Description Languages (HDL). Use of VHDL in logic circuit design and simulation.

á Analysis and design of Sequential Circuits. Flip flops, synchronous and asynchronous circuits. Design using Algorithmic State Machines.

á Memory systems, programmable logic and their applications. Register transfer techniques, Bus concepts.

á Design examples.

*Recommended
Texts: *

á
M.Morris Mano, *Digital
Design*, (Third
Edition), Prentice Hall, 2002.

á
S.Brown and Z. Vranesic,
*Fundamentals of Digital Logic with VHDL
Design*, McGraw Hill, 2001.

á
R.S.
Sandige, *Digital
Design Essentials*, Prentice Hall.

*Prerequisites:* General prerequisites, including CSE2021 4.0;
PHYS3150
3.0
strongly recommended

CSE
3213 3.0

Computer
Networks
I

This course is an introduction to communications and networking. Topics covered include:

á Distinction between information and data, between signal and data, between symbol and data, and between analogue and digital data

á Transmission media; time domain and frequency domain

á Fundamental limits due to Shannon and Nyquist

á Protocol hierarchies; the OSI model

á Encoding of analogue/digital data as analogue/digital signals

á Data link protocols; error and flow control

á Medium access; Ethernet and token passing systems in LANs

á Routing of packets in networks, congestion control

á Internetworking

á Transport services and protocols

á High-level applications and their protocols, e.g. WWW(HTTP), e-mail (SMTP), Internet names (DNS)

*Prerequisites:* General
prerequisites

*Course Credit Exclusions:* CSE3211 3.0

Introduction to the design of embedded systems using both hardware and software. Topics include microcontrollers; their architecture, and programming; design and implementation of embedded systems using field programmable gate arrays.

The following is a detailed list of topics to be covered:

á Introduction to specific microcontroller architecture, its assembly language, and programming

á Input/Output ports, Interrupts, and timers

á Memory systems

á Analog to digital and digital to analog conversion

á Parallel and Serial Interfacing

á Hardware Modelling

á Structural specification of hardware

á Synthesis of combinational circuits using a Hardware Description Language

á Synthesis of sequential circuits using a Hardware Description Language

á Rapid Prototyping using field programmable gate arrays

*References: *

á Michael D. Ciletti, Modelling, Synthesis, and Rapid Prototyping with the VERILOG (TM) HDL, 1/e, Prentice-Hall, ISBN 0-13-977398-3 1.

á Richard E. Haskell, Design of Embedded Systems Using 68HC12/II Microcontrollers, Prentice-Hall, ISBN 0-13-083208-1.

á Frank Vahid and Tony Givargis, Embedded System Design: A Unified Hardware/Software Introduction, John Wiley & Sons, ISBN: 0471386782.

á John B Peatman, Design with Microcontrollers, Prentice Hall, ISBN 0-13-759259-0

á The 8051 Microcontroller 3/e. Prentice-Hall, ISBN 0-13-780008-8.

*Prerequisites*: General prerequisites, including CSE3201 4.0

CSE 3221
3.0

Operating
System
Fundamentals

(formerly CSE
3321 3.0Ñbefore
SU2000)

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 CSE2021 4.0; CSE2031 3.0

*Course Credit Exclusion:* CSE3321 3.0

CSE
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 FORTRAN, Algol 60, PL/I, Algol 68, Pascal, C, C++, Eiffel, Ada 95, and Java.

This course is not designed to teach any 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, and 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, and exceptions

á Object-oriented language features: classes, encapsulation, inheritance, and polymorphism

á Critical and comparative evaluation of programming languages

*Prerequisites:* General
prerequisites,
including CSE2001 3.0

A study of design methods and their use in the correct construction, implementation, and maintenance of software systems. Topics include design, implementation, testing, documentation needs and standards, support tools.

This course focuses on design techniques for both small and large software systems. Techniques for the design of components (e.g., modules, classes, procedures, executables) as well as complex architectures will be considered. Principles for software design and rules for helping to ensure software quality will be discussed. The techniques will be applied in a set of small assignments, and a large-scale project, where students will design, implement, and maintain a non-trivial software system.

Specific topics to be discussed may include the following:

á software design principles: coupling and cohesion, information hiding, open-closed, interface design

á abstract data types

á seamless software construction and process models; a rational design process

á design-by-contract and its implementation in programming languages and design methods; writing and testing contracts; debugging contracts

á abstraction and data design; choosing data structures

á the Business Object Notation (BON) for modelling designs; alternative modelling languages like UML, data-flow diagrams, structure charts, etc.

á static software modelling; dynamic modelling and behavioural modelling

á case studies in design: designing architectures; comparisons; design of OO inheritance hierarchies; class library design

á methods for finding classes; designing class interfaces

á CASE tools: forward and reverse engineering of code from models

á software testing

á design patterns; applications of patterns; implementing patterns

*Prerequisites:* General
prerequisites,
including CSE2001 3.0, CSE2031 3.0 and MATH1090 3.0

CSE
3341 3.0

Introduction
to
Program Verification

(formerly
CSE 3111
3.0Ñbefore SU2000)

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
reading*:

á 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 MATH1090 3.0

*Course Credit Exclusion:* CSE3111 3.0

CSE
3401 3.0

Functional
and
Logic Programming

This course covers functional and logic programming. Together with the students' background on procedural and object-oriented programming, the course allows them to compare the development of programs in these different types of languages.

"Functional programs work with values, not states. Their tools are expressions, not commands. How can assignments, arrays and loops be dispensed with? Does not the outside world have states? These questions pose real challenges. The functional programmer can exploit a wide range of techniques to solve problems." (Paulson, 1996)

"Based on predicate logic, it [logic programming] allows computing problems to be expressed in a completely `declarative' way, without giving instructions for how the problem is to be solved. An execution mechanism, like the one embodied in implementations of Prolog, can then be used to search efficiently and systematically for a solution of the problem." (Spivey, 1996)

Topics on functional programming may include: recursive, polymorphic and higher-order functions; recursive types and type inference. Topics on logic programming may include backtracking, resolution and unification.

*Prerequisites:
* General
prerequisites; CSE2031 3.0 and MATH1090 3.0

CSE
3402 3.0

Introduction
to
Concepts of Artificial Intelligence

Artificial Intelligence (AI) deals with building a system that 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 CSE3401 3.0: Functional and Logic Programming. Topics to be covered include reasoning under uncertainty, search, constraint propagation, planning and problem solving.

*Prerequisites:* General
prerequisites;
CSE3401 3.0; MATH1090 3.0

CSE
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 be run in discrete steps that match the structure of the model. (For simulation of continuous systems see CSE3418 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;
MATH2030 3.0 or MATH2560 3.0

*Course Credit Exclusion*: AK/CSE3451 3.0,[1] MATH4930B 3.0

CSE
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 CSE3408 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

CSE
3421 3.0

**Introduction to Database
Systems**

Concepts, approaches and techniques in database management systems (DBMS) are taught. Topics include logical models of relational databases, relational database design, query languages, crash recovery, and concurrency control.

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 design and administration of database management systems.

Topics may include the following:

á Overview of Database Management Systems

á Relational Model

á Entity-Relational Model and Database Design

á SQL

á Integrity Constraints

á Crash Recovery

á Concurrency Control

*Prerequisites:*
General
prerequisites

*Course Credit Exclusions:* AK/CSE3503 3.0, AK/AS/ITEC3220 3.0,
AK/AS/ITEC3421 3.0

CSE
3451 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

*Course Credit Exclusions:* CSE4242 3.0, CSE4451 3.0, EATS4020 3.0,
MATH4130B 3.0,
MATH4830
3.0, PHYS4060 3.0

This course introduces the concepts and technology necessary to design, manage and implement user interfaces UIs. Users are increasingly more critical towards poorly designed interfaces. Consequently, for almost all applications more than half of the development effort is spent on the user interface.

The first part of the course concentrates on the technical aspects of user interfaces (UIs). Students learn about event-driven programming, windowing systems, widgets, the Model-view-controller concept, UI paradigms, and input/output devices.

The second part discusses how to design and test user interfaces. Topics include basic principles of UI design, design guidelines, UI design notations, UI evaluation techniques, and user test methodologies

The third part covers application areas such as groupware (CSCW), multi-modal input, UIs for Virtual Reality, and UIs for the WWW.

Students work in small groups and utilize modern toolkits and scripting languages to implement UIs. One of the assignments focuses on user interface evaluation.

*Prerequisites:*
General
prerequisites

*Course Credit Exclusion:* AK/AS/ITEC3230 3.0,
AK/AS/ITEC3461 3.0

*NCR Note:* No credit will be
retained
by students who
successfully completed AS/SC/CSE4341 3.0 or AS/SC/CSE4361 3.0 before
FW99.

CSE
3900 0.0

Internship
Co-op
Term

The objective of the course is to provide qualified students a hands-on, practical work experience that formally integrates the studentÕs academic knowledge with real-world situations in a Òco-operativeÓ work setting. Enrolment in the course is mandatory in each term that a student undertakes a work placement. Students will be assigned a faculty supervisor, although the Internship Co-op Coordinator and the Internship Office will take the lead in placement and interaction with the placement site.

*Prerequisites*:

Successful completion of at
least 12.0
computer science credits at the 3000 level including CSE3311 3.0
(Software Design)
and an overall average of at least B in Mathematics and Computer
Science
courses completed. To qualify, ** in
the first instance**, the student must
be
enrolled full-time in the Honours Program and attend all mandatory
preparatory
sessions as outlined by the Internship Co-op Office.

*Notes:*

á This course does not count for degree credit in any program. Registration in sections of CSE3900 while on an internship placement provides a transcript notation of the studentÕs participation in the internship program.

á Students are required to register in this course in every term of their work term (internship co-op).

á Every student registered in the course will be assigned a faculty supervisor who will assess the studentÕs performance during the internship.

*Evaluation:*

Performance in each term (CSE3900 0.0) will be graded on a pass/fail basis. To receive a passing grade, the student must pass each of the required components. Note that not all components are required for each Internship term if the Placement consists of more than two terms.

These components are:

á
*Employer Evaluation*. Completed by the
employer,
this
summarizes the performance of the student at the placement. If the
student is
engaged in a 12 or 16-month work term placement at the same company,
only two evaluations
are required. These are due in the second and final term of the
placement. The
employer evaluation will be submitted to the Internship Coordinator.

á
*Internship
Coordinator Evaluation*.
Completed by the Internship Co-op Coordinator, this report is completed
based
on a minimum of two meetings, at least one normally conducted at the
work site.
The first one will be conducted at the work site within the first term,
and the
second as a follow-up either on-site or by telephone or email.

á
*Work Report*. Submitted by the student
upon his/her return to campus to the faculty supervisor at the end of
every
work term. This is a short (3-5 page) summary of the work performed
during the
internship and an assessment of the value of the opportunity. The
supervisor will
grade the work report and forward it to the Internship Coordinator.

The faculty supervisor assigns the course grade based upon the Employer Evaluation, Internship Coordinator Evaluation, and Work Report.

General Prerequisites

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

¤ completed[2] CSE2001 3.0, CSE2011 3.0, CSE2021 4.0, CSE2031 3.0

¤ completed at least 12 credits in CSE courses at the 3000-level

¤ a cumulative grade point average of 4.5 or better over completed computer science courses (including only the most recent grades in repeated courses)

¤ completed MATH1090 3.0

Specific prerequisites may apply to individual courses.

**Note:** Normally a
maximum
of three CSE
courses may be taken in any one of the fall or winter terms at any
level higher
than 1000 provided that prerequisites are met.

CSE 4001 6.0 (Cross listed
with
SC/EATS4001 6.0 and SC/PHYS4001 6.0)

Space
and
Communication Sciences Workshop

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

*Course Credit Exclusions:* CSE4080 3.0, CSE4081 6.0, CSE4082 6.0, CSE4084
6.0,
EATS4001
6.0, PHYS4001 6.0

CSE 4080 3.0

Computer
Science
Project

This is a course for advanced students, normally those in the fourth year of an honours program, or students who have completed 36 computer science credits. 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. *A critical
course
component that must be included in the contract is a formal seminar
presentation.* The course director will
arrange the seminar sessions, and students
and their faculty supervisors are required to participate. The seminar
talks
will have a typical length of 15-20 minutes, and will be evaluated by
the
individual supervisor, the course director and one more faculty member.
This
talk will be worth 30% of the final mark. The remaining 70% of the
course mark
is the responsibility of the individual supervisor. Internship students
may
apply to receive credit for their internship as a project course. A
ÒcontractÓ
including the seminar presentation is still required.

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

*Course Credit Exclusions*: CSE4001 6.0, CSE4081 6.0, CSE4082 6.0, CSE4084
6.0

CSE 4081 6.0

Intelligent
Systems Project

This is an honours thesis course in Intelligent Systems. Although a course coordinator will be assigned to the course, the bulk of the course will take place through the interaction between a supervisor and a single student (or group of students). After two organizational meetings in September, the student will work with his/her supervisor directly. The course requires an initial project proposal that will be submitted to and approved by the supervisor and the course coordinator (director). This is, in essence, a contract for the project to follow. The supervisor will evaluate the performance of the student in early January. The format of this evaluation will vary from project to project, but the requirements of this evaluation will be specified in the original project proposal. At the beginning of the course, the course director (coordinator) will establish a date and format for the public presentation of all Intelligent System Projects. Normally held between reading week and the third last week of term, this presentation will normally consist of either a short public oral or poster presentation of the project. (The actual format may change from year to year.) All of the faculty associated with the Intelligent Systems Stream will be invited to attend this presentation. The individual supervisor, the course coordinator and one more faculty member will mark this presentation. The final report will be due at the end of the term and will be marked by the individual supervisor.

The actual nature of the project will vary from student to student. Although projects that involve significant implementation are anticipated, purely theoretical projects are possible as well.

*Marking
Scheme*:

Mid-term evaluation: 30%

Public presentation evaluation: 30%

Final report: 40%

*Prerequisites*: Only open to students in the Intelligent
Systems Stream
who have
completed CSE3401 3.0 and CSE3402 3.0 with a minimum grade of B; and
permission
of the instructor.

*Course Credit Exclusions*: CSE4001 6.0; CSE4080 3.0; CSE4082 6.0; CSE4084
6.0

CSE 4082 6.0

Interactive
Systems Project

This is an honours thesis course in Interactive Systems. Although a course coordinator will be assigned to the course, the bulk of the course will take place through the interaction between a supervisor and a single student (or group of students). After two organizational meetings in September, the student will work with his/her supervisor directly. The course requires an initial project proposal that will be submitted to and approved by the supervisor and the course coordinator (director). This is, in essence, a contract for the project to follow. The supervisor will evaluate the performance of the student in early January. The format of this evaluation will vary from project to project, but the requirements of this evaluation will be specified in the original project proposal. At the beginning of the course, the course director (coordinator) will establish a date and format for the public presentation of all Interactive System Projects. Normally held between reading week and the third last week of term, this presentation will normally consist of either a short public oral or poster presentation of the project. (The actual format may change from year to year.) All of the faculty associated with the Interactive Systems Stream will be invited to attend this presentation. The individual supervisor, the course coordinator and one more faculty member will mark this presentation. The final report will be due at the end of the term and will be marked by the individual supervisor.

The actual nature of the project will vary from student to student. Projects will involve the design, implementation and evaluation of an interactive system. While theoretical projects are possible, the expectation is that all projects evaluate the implementation with human participants and include an analysis of these results in the presentation and final report. For projects that will involve significant subject testing and performance evaluation, it is expected that a complete draft implementation of the system will be available by January. Projects must deal with systems that interact with a human user. This interaction must be a critical component of the system

*Marking
Scheme*:

Mid-term evaluation: 30%

Public presentation evaluation: 30%

Final report: 40%

*Prerequisites*: Only open to students in the Interactive
Systems Stream
who have
completed CSE3311 3.0 and CSE3461 3.0, and have prior permission of the
instructor.

*Course Credit Exclusions*: CSE4001 6.0, CSE4080 3.0, CSE4081 6.0, CSE4084
6.0

CSE 4084 6.0

Communication
Networks Project

This is an honours thesis course in Communication Networks. Although a course coordinator will be assigned to the course, the bulk of the course will take place through the interaction between a supervisor and a single student (or group of students). After two organization meetings in September, the student will work with his/her supervisor directly. The course requires an initial project proposal that will be submitted to and approved by the supervisor and the course coordinator (director). This is, in essence, a contract for the project to follow. The supervisor will evaluate the performance of the student in early January. The format of the evaluation will vary from project to project, but the requirements of this evaluation will be specified in the original project proposal. At the beginning of the course, the course director (coordinator) will establish a date and format for the public presentation of all Communication Networks projects. Normally held between reading week and the third last week of the term, this presentation will normally consist of either a short public oral or poster presentation of the project. (The actual format may change from year to year). All of the faculty associated with the Communication Networks Stream will be invited to attend the presentation. The individual supervisor, the course coordinator and one more faculty member will mark this presentation. The final report will be due at the end of the term and will be marked by the individual supervisor.

The actual nature of the project will vary from one student to another. Although projects that involve significant implementation are anticipated, purely theoretical or analysis projects are possible as well.

*Marking
Scheme*:

Mid-term evaluation: 30%

Public presentation evaluation: 30%

Final report: 40%

*Prerequisites*: Only open to students in the Communication
Networks
Stream who
have received a grade of at least B in CSE3451 3.0 and CSE3213 3.0, and
have
prior permission of the instructor.

*Course Credit Exclusions*: CSE4001 6.0, CSE4080 3.0, CSE4081 6.0, CSE4082
6.0

CSE
4101 3.0 (integrated
with COSC5101 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, Fibonacci heaps

á Union-find trees

á Link-and-cut trees

á Multidimensional data structures and dynamization

*Prerequisites:* General
prerequisites,
including CSE3101 3.0

CSE
4111 3.0 (integrated
with COSC 5111 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 significance 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 CSE3101 3.0

CSE
4115 3.0

Computational Complexity

This course provides an introduction to complexity theory, one of the most important and active areas of theoretical computer science. Students learn basic concepts of the field and develop their abilities to read and understand published research literature in the area and to apply the most important techniques in other areas.

*Topics
include*:

á Models of computation for complexity: Turing Machines, Random Access Machines, Circuits and their resources such as time, space, size, and depth

á Time- and space-bounded diagonalisation, complexity hierarchies, resource bounded reducibility such as log space and polynomial time reducibility

á P vs. NP: Nondeterminism, Cook's Theorem and techniques for proving NP-Completeness

á Nondeterministic space: The Savitch and Immerman/Szelepsenyi Theorems

á Important complexity Classes (and natural problems complete for them) including: P, NP, co-NP, the Polynomial time Hierarchy, log space, Polynomial SPACE and Exponential time

á If time permits the course may also include one or more advanced topics such as parallel complexity classes, interactive proofs, applications to cryptography, and probabilistic classes including random polynomial time

*Possible Text*:

á
C.H. Papadimitriou, *Computational
Complexity*, ISBN: 0-201-53082-1, Addison
Wesley, 1994.

*References*:

á
U. Schoning and Randall
Pruim, *Gems of Theoretical Computer
Science*, ISBN 3-540-64425-3, Springer
Verlag, 1998.

á
Lane A. Hemaspaandra and
Mitsunori Ogihara, *The Complexity Theory
Companion,* ISBN 3-540-67419-5,
Springer-Verlag,
2002.

á
M.R. Garey and D. S.
Johnson, *Computers and Intractability, A
Guide to the Theory of NP-Completeness*,
ISBN
0716710455, W.H. Freeman, 1979.

á
D.-Z. Du and K. Ko, *Theory
of Computational Complexity*, ISBN:
0-471-34506-7, John Wiley and Sons, New York, NY, 2000.

á
D. P. Bovet and P.
Crescenzi, *Introduction to the Theory of
Complexity*, ISBN 0139153802,
Prentice-Hall, 1993.

*Prerequisites:* General
prerequisites,
including CSE3101 3.0

CSE 4161
3.0

Introduction
to
Cryptography

(Cross
listed with
MATH 4161 3.0)

Probability, information theory and number theory and applications to cryptography. Classical codes such as Caesar shift, Vigenere, ADFGVX, rectangular substitution, and others. Other topics: comma free codes, perfect secrecy, index of coincidence, public key systems, primality testing and factorisation algorithms.

An outline of course topics:

Early Ciphers

á Caesar

á Vigenere

á Rectangular transposition

á Monoalphabetic substitutions

á Polyalphabetic substitutions

á Playfair

á ADFGVX

á VernanÕs two-tape system

á Hill encipherment

Probability Theory

á Basics

á Statistical models of English text

á Random number generators

á Breaking Vigenere

á Breaking Rectangular transposition

á Breaking ADFGVX

á Breaking Monoalphabetic substitutions

Information Theory

á Basics on the concept of information

á Entropy and information

á Redundancy of English text

á File and text compression

á Perfect secrecy systems

Number Theory

á Euclidean algorithm

á Residue systems

á The Euler phi-function

á Primitive roots

á Quadratic residues

á Quadratic reciprocity and the Jacobi symbol

á Primality testing

á RSA encipherment system

á Public key systems

The course will cover three main topics of mathematics (probability, information and number theory) and use the historical and practical applications in cryptography to develop these topics. Other topics as time permits may include quantum cryptography, elliptic curves, DES, knapsack and digital signatures.

The weekly scheduled quizzes encourage the students to keep good study habits and encourage attendance. They also prepare the students for the final. There will be a programming assignment to complement the material presented in class.

*Prerequisites:
*At least 12 credits from 2000-level (or
higher)
MATH courses (without second digit 5, or second digit 7 in the case of
Atkinson); or CSE 3101 3.0; or permission of the instructor.

CSE
4201 3.0
(integrated with COSC 5501 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 CSE3201 4.0, and CSE3221 3.0 (or CSE3321 3.0)

CSE 4210 3.0

Architecture
and
Hardware for Digital Signal Processing

The field of DSP is driven by
two major
forces, advances in DSP algorithms, and advances in VLSI technology
that
implements those algorithms. This course addresses the methodologies
used to
design custom or semi-custom VLSI circuits for DSP applications, and
the use of
microcontrollers and digital signal processors to implement DSP
algorithms. It
also presents some examples of advances in fast or low power design for
DSP.

The topics may include

á
Basic CMOS circuits:
manufacturing
process, area, delay, and power dissipation.

á
Implementation of
fundamental
operations: Carry lookahead adders, carry select adders, carry save
adders,
multipliers, array multipliers, Wallace tree multipliers, Booth array
multipliers, dividers, array dividers.

á
Array processor
architectures: Mapping
algorithms into array processors.

á
High level architectural
transformation
for mapping algorithms into hardware: pipelining, retiming, folding,
unfolding:

á
Mapping DSP algorithms
(FIR, IIR, FFT,
and DCT) into hardware.

á
Implementing DSP
algorithms using
microcontrollers.

á
DSP support in
general-purpose
processors.

á The effect of scaling and roundoff noise.

*Prerequisites:
* General
prerequisites, including CSE3201 4.0 and CSE3451 3.0

CSE
4211 3.0 (integrated with COSC5422
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

á Queuing TheoryÑM/M/1 Queuing system in detail; other forms of queuing systems including limited population and limited buffers

á Application Ñ A case study involving use of the queuing theory paradigm in performance evaluation and modelling 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
MATH2030 3.0; CSE3211 3.0 or CSE3213 3.0

CSE
4213 3.0

Computer
Networks
II

More advanced topics in networking, concentrating on higher-level protocols, security, network programming and applications. Topics covered may include the following:

á Higher level protocols

á Security: encryption, authentication, firewalls

á Network programming; RPC

á Multimedia: compression and multimedia standards

á The web: URL/http, CGI programming, dynamic html, proxy servers, wireless networks

*Prerequisites:
* General
prerequisites, including CSE3212 3.0** **or
CSE3213 3.0

CSE
4214 3.0

Digital
Communications

Digital communications has become a key enabling technology in the realization of efficient multimedia systems, wireless and wired telephony, computer networks, digital subscriber loop technology and other communication and storage devices of the information age. The course provides an introduction to the theory of digital communications and its application to the real world. Emphasis will be placed on covering design and analysis techniques used in source and channel coding, modulation and demodulation, detection of signal in the presence of noise, error detection and correction, synchronization, and spread spectrum. An introduction to information theory and recent development in the area will also be covered. Topics covered in the course will be chosen from:

á Review of Probability and Random Variables

á Introduction to Stochastic Processes and Noise

á Introduction to Information theory: ShannonÕs Source Coding and Channel Coding theorems

á Source Coding: Lossless Coding (Huffman, Arithmetic, and Dictionary Codes) versus Lossy Coding (Predictive and Transform Coding)

á Analog to Digital Conversion: Sampling and Quantization

á Baseband Transmission

á Binary Signal Detection and Matched filtering

á Intersymbol Interference (ISI), Channel Capacity

á Digital Bandpass Modulation and Demodulation Schemes

á Error Performance Analysis of M-ary schemes

á Channel Coding: Linear Block, Cyclic, and Convolutional Codes

á Decoding Techniques for Convolutional Codes, Viterbi Algorithm

á Application of Convolutional codes to Compact Disc (CD)

á Synchronization Techniques

á
Spread Spectrum
Modulation: Direct Sequence and Frequency Hopping

*References*:

á
Bernard Sklar, Digital
Communications: Fundamentals and
Applications, NY: Prentice Hall, 2001, 2^{nd} edition, ISBN #
0-13-084788-7 (required).

á John G. Proakis, Digital Communications, Third Edition, McGraw Hill (suggested).

á Simon Haykin, Digital Communications, John Wiley & Sons (suggested).

á Marvin K. Simon, Sami M. Hinedi, and William C. Lindsey, Digital Communication Techniques, NY: Prentice Hall, 1995 (suggested).

á Marvin E. Frerking, Digital Signal Processing in Communication Systems, NY: International Thomson Publishing (ITP), 1994 (suggested).

*Prerequisites:
* General
prerequisites, including CSE3213 3.0, MATH2030 3.0 and one of CSE3451
3.0, EATS 4020 3.0, PHYS 4250
3.0

CSE 4215
3.0 (integrated
with COSC 5502 3.0)

Mobile Communications

Wireless mobile networks have undergone rapid growth in the past several years. The purpose of this course is to provide an overview of the latest developments and trends in wireless mobile communications, and to address the impact of wireless transmission and user mobility on the design and management of wireless mobile systems. Topics covered may include the following:

á Overview of wireless transmission.

á Wireless local area networks: IEEE 802.11, Bluetooth.

á 2.5G/3G wireless technologies.

á Mobile communication: registration, handoff support, roaming support, mobile IP, multicasting, security and privacy.

á Routing protocols in mobile ad-hoc networks: destination-sequence distance vector routing (DSDV), dynamic source routing (DSR), ad-hoc on-demand distance vector routing (AODV), and a few others.

á TCP over wireless: performance in and modifications for wireless environment.

á Wireless sensor networks: applications; routing.

á Satellite systems: routing, localization, handover, global positioning systems (GPS).

á Broadcast systems: digital audio/video broadcasting.

á Applications to file systems, world wide web; Wireless Application Protocol and WAP 2.0; i-mode; SyncML.

á Other issues such as wireless access technologies, quality of service support, location management in mobile environments, and impact of mobility on performance.

The pedagogical components of the course include lectures, office hours, hands-on laboratories and exercises, assignments, tests, and a project that addresses recent research issues in wireless mobile networking.

*Prerequisites:
* General
prerequisites, including CSE3213 3.0

CSE
4221 3.0 (integrated
with COSC 5421 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 CSE3221 3.0 or CSE3321 3.0

*Course Credit Exclusion:* CSE4321 3.0

CSE
4301 3.0 (integrated
with COSC5423 3.0)

Programming
Language
Design

This course is a continuation of CSE3301 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 non-algorithmic 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 CSE3301 3.0

CSE
4302 3.0
(integrated with COSC5424 3.0)

Compilers
and
Interpreters

Principles and design techniques for compilers and interpreters. Compiler organization, compiler writing tools, scanning, parsing, semantic analysis, run-time storage organization, memory management, code generation, and optimisation. Students will implement a substantial portion of a compiler in a project.

This course is a hands-on introduction to the design and construction of compilers and interpreters. At the end of the course, you will understand the architecture of compilers and interpreters, their major components, how the components interact, and the algorithms and tools that can be used to construct the components. You will implement several components of a compiler or interpreter, and you will integrate these components to produce a working compiler or interpreter.

Specific topics to be covered may include the following:

á Compiler architecture: single-pass vs. multiple-pass translation

á Lexical analysis (scanning): design of scanners using finite automata; tabular representations; tools for building scanners

á Parsing (syntax analysis): top-down vs. bottom-up parsing; parse trees and abstract syntax trees; tabular representations for parsers; parser generators

á Symbol tables: efficient algorithms and data structures; representing data types in symbol tables

á Type checking: scope control; static vs. dynamic type checking

á Memory management: static allocation; register allocation; stack allocation; heap allocation; garbage collection

á Code generation: translating imperative programming constructs; function and procedure calls; branching code; translating object-oriented constructs and modules

á Optimisation: local and global optimisations; dead code removal; control flow analysis

*Prerequisites:
* General
prerequisites; CSE3301 3.0 recommended

CSE
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 modelling 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 analysing 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 CSE3311 3.0 or CSE3221 3.0 or CSE3321 3.0

CSE
4312 3.0

Software
Engineering Requirements

This course deals with the elicitation, specification and analysis of software requirements. It provides a critical description of available methods and tools, and practical exercises on applying these methods and tools to realistic problems. On completion of this module, students will have a grounding in:

á Requirements and system concepts

á Traceability through requirements into design

á Current requirements methods, techniques, and tools

á Industrial practice and standards

á
Specific topics to be
covered include:

á Introduction: Problems, principles and processes of requirements engineering

á Requirements elicitation processes and methods

á Introduction to Use Cases and UML

á Specification techniques: Requirements models; data modelling; functional models; the application of formal requirements methods

á Goal-oriented requirements modelling

á Non-functional requirements: safety, security and other nonfunctional requirements

á Pragmatic requirements engineering: Technology transfer; Traceability

á Current Requirements Standards, e.g., IEE 830 Recommended Practice for Requirements Engineering

á Requirements Categorization for Resource Allocation

á Why-Because Analysis

*References:*

á G. Kotonya and I. Somerville. Requirements Engineering: Processes and Techniques, Wiley, 1998.

á A. Davis, Software Requirements, Addison-Wesley, 1992.

á S. Robertson and J. Robertson, Mastering the Requirements Process, Addison-Wesley, 1999.

á M. Jackson, Problem Frames, Addison-Wesley, 2000.

á M. Jackson, Software Requirements and Specifications, Addison-Wesley, 1995.

*Prerequisites:* General
prerequisites,
including CSE3311 3.0

CSE
4313 3.0

Software
Engineering Testing

An introduction to systematic methods of testing and verification, covering a range of static and dynamic techniques and their use within the development process. The course emphasizes the view that design should be carried out with verification in mind to achieve overall project goals.

Students should:

á understand the importance of systematic testing

á understand how verification is an integral part of the development process and not a bolt on activity

á understand the strengths and weaknesses of particular techniques and be able to select appropriate ones for a given situation

á
All too often software
is designed and then tested. The real aim
must be to take a more holistic view, where design is carried out with
verification in mind to achieve overall project goals. We shall take a
fairly
liberal view of testing. This includes various automated and manual
static
analysis techniques. In addition, we shall show how increased rigor at
the
specification stage can significantly help lower-level testing.

á
Black box and white box
testing. Unit level testing techniques and
practical exercises. Mutation testing, domain testing, data flow and
control
flow testing. Coverage criteria. Theoretical background (e.g., graph
theory).

á Static analysis techniques (including program proof tools such as the Spark Examiner or ESC/Java).

á Higher level testing (integration, system, performance, configuration testing etc). Testing tools and instrumentation issues.

á The testing of object oriented programs. Specific problems and existing techniques, e.g., Junit, automatic test case generation via UML diagrams.

á Testing non-functional properties of high integrity systems. Worst case execution times, stack usage. Hazard directed testing. Software fault injection, simulation and hardware testing techniques.

á Management issues in the testing process. Planning, configuration management. Q.A. Controlling the test process. Inspections reviews, walkthroughs and audits. Influence of standards.

á Regression testing.

*References:*

Primary:

á
Robert Binder, *Testing
Object-Oriented Systems*, Addison-Wesley,
2000.

Supplementary:

á
Lisa Crispin, *Testing
Extreme Programming*, Addison-Wesley, 2002.

á
K. Beck, *Test Driven
Development By Example,* Addison-Wesley,
2002.

á
E. Kit, *Software
Testing in the Real World*,
Addison-Wesley, 1995.

á
C. Kaner, J. Falk, and
H. Nguyen, *Testing Computer Software*,
Wiley, 1999.

*Prerequisites:* General
prerequisites,
including CSE3311 3.0

CSE
4351 3.0
(integrated with COSC5441 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 CSE3311 3.0 or
CSE3221
3.0 (or CSE3321 3.0) or CSE3341 3.0 (or CSE3111 3.0)

CSE
4352 3.0
(integrated with COSC5442 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 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

á examples from real-time programming languages (Ada and Java)

*Prerequisites:
*General prerequisites,
including CSE3301 3.0 or CSE3311 3.0 or CSE3221 3.0 (or CSE3321 3.0)

CSE
4401 3.0 (integrated
with COSC 5326 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, and abduction, explanation-based learning, learning k-DNF

á Statistical learning: reinforcement learning, genetic learning algorithms, and 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 CSE3402 3.0

CSE
4402 3.0 (integrated
with COSC 5311 3.0)

Logic
Programming

Logic programming has its roots in mathematical logic and it provides a view of computation that 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 that 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 CSE3401 3.0, and CSE3101 3.0 or CSE3341 3.0

CSE
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
reading:*

á
R. Elmasri and S.B.
Navathe, *Fundamentals of Database Systems*, 2nd Ed., Benjamin Cummings, 1994.

*Prerequisites*: General prerequisites, CSE3421 3.0

Data mining is computationally intelligent extraction of interesting, useful and previously unknown knowledge from large databases. It is a highly inter-disciplinary area representing the confluence of machine learning, statistics, database systems and high-performance computing. This course introduces the fundamental concepts of data mining. It provides an in-depth study on various data mining algorithms, models and applications. In particular, the course covers data pre-processing, association rule mining, sequential pattern mining, decision tree learning, decision rule learning, neural networks, clustering and their applications. The students are required to do programming assignments to gain hands-on experience with data mining.

*Suggested
reading:*

á
Jiawei Han and Micheline
Kamber, *Data Mining Ñ Concepts and
Techniques*, Morgan Kaufmann Publishers,
2001

á
David Hand, Heikki
Mannila and Padhraic Smyth, *Principles of Data
Mining*, MIT Press, 2001

á
Ian Witten and Eibe
Frank, *Data Mining Ñ Practical Machine
Learning Tools and Techniques with Java Implementations*, Morgan Kaufmann Publishers, 1999.

á
S.M. Weiss and N.
Indurkhya, *Predictive Data Mining*,
Morgan Kaufmann, 1998.

á
Tom Mitchell, *Machine
Learning*,
McGraw Hill, 1997.

*Prerequisites*: General prerequisites, including CSE3421 3.0
and one of
MATH2030
3.0 or MATH1131 3.0

CSE
4413 3.0

Building
E-Commerce Systems

A study of technological infrastructure for Electronic Commerce on the Internet discussing terminology, possible architectures, security and cryptography, content presentation, web protocols, adaptive and intelligent agents, data mining, and vertical applications.

Topics covered may include the following:

á Basic e-commerce concepts. Examples of e-commerce stores

á Internet as the infrastructure for e-commerce; network layers and protocols; network and transport layer; TCP/IP; web server design; DNSs, URLs, and HTTP; proxies, caching

á Security and encryption; basic concepts of computer cryptography; symmetric and asymmetric cryptosystems; DES; public key cryptosystems; RSA; Diffie-Hellmann; elliptic codes; PGP; breaking computer cryptography with massive parallelism

á Electronic store content and presentation; HTML, CGI, Dynamic HTML, JavaScript. Applets; push and pull content; MIME and cookies; future representations Ñ XML, WAP

á Intelligent e-commerce; data mining in e-commerce; agents; product and merchant brokerage; mobile agents; negotiations

*Prerequisites:
* General
prerequisites; CSE3212 3.0 or CSE3213 3.0; CSE3321 or CSE3221 3.0;
CSE3421 3.0

CSE
4421 3.0 (integrated
with COSC 5324 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, mobile robots, their sensors and algorithms for controlling them. A Robotics Laboratory is available equipped with a manipulator and a moving platform with sonar, several workstations and an extensive collection of software.

*Prerequisites:* MATH1025 3.0 and:
either general prerequisites for 4000-level CSE courses; or CSE2011
3.0, CSE2031 3.0, co-requisite: ENG 4000 6.0

CSE
4422 3.0 (integrated
with COSC 5323 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, colour 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, digitisers and image processing software.

*Prerequisites*:
General prerequisites, including CSE3121 3.0

CSE
4431 3.0 (integrated
with COSC 5331 3.0)

Computer
Graphics

This course introduces the fundamental concepts of three-dimensional computer graphics. Algorithms for image generation and the components of interactive graphics systems are presented. The course discusses also virtual reality systems, how interactive entertainment systems, such as games, work and how animations for film and TV are created.

The first half of the course concentrates on the fundamentals of image generation: the graphics pipeline, modelling, graphics data structures, transformations, camera & perspective, visibility, raster graphics, shading.

The second part covers more advanced techniques and application areas: texturing, anti-aliasing, ray tracing, free form surfaces, Interactive graphics systems, virtual reality, animation.

The assignments use current graphics toolkits to implement interactive graphics programs. Students work in small groups. 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; MATH1025 3.0

*Course Credit Exclusion:* CSE4331 3.0

CSE
4441 3.0 (integrated
with COSC 5351 3.0)

Human
Computer
Interaction

á Introduction (Goals, Motivation, Human Diversity)

á Theory of Human-Computer Interaction (Golden Rules, Basic Principles, Guidelines)

á The Design Process (Methodologies, Scenario Development)

á Expert Reviews, Usability Testing, Surveys and Assessments

á Software Tools (Specification Methods, Interface-Building Tools)

á HCI Techniques

á Interaction Devices (Keyboards, Pointing Devices, Speech Recognition, Displays, Virtual Reality Devices)

á Windows, Menus, Forms and Dialog Boxes

á Command and Natural Languages (Command Line and Natural Language Interfaces)

á Direct Manipulation and Virtual Environments

á Manuals, Help Systems, Tutorials

á Hypermedia and the World Wide Web (Design, Creation, Maintenance of Documents)

á Human FactorsÑResponse Time and Display Rate; Presentation StylesÑBalancing Function and Fashion (Layout, Colour); Societal Impact of User Interfaces (Information Overload); Computer Supported Cooperative Work (CSCW, Synchronous and Asynchronous); Information Search and Visualization (Queries, Visualization, Data Mining)

The topics of this course will be applied in practical assignments and/or group projects. The projects will consists of a design part, an implementation part and user tests to evaluate the prototypes.

*Suggested reading:*

á Alan Dix, Janet Finlay, Gregory Abowd, Russell Beale, Human-Computer Interaction, 2nd ed, Prentice Hall, 1998.

*Prerequisites:
*General prerequisites; including CSE3461
3.0** **

*Course Credit Exclusion:* CSE4341 3.0

CSE 4452
3.0

Digital
Signal Processing: Theory and Applications

Digital
signal processing (DSP) has become the foundation of various
digital systems and communication and entertainment applications in
todayÕs
computer era. This course consists of two parts. The first part
introduces
students to the fundamental DSP concepts, principles and algorithms. In
the
second part, it covers some important DSP-based applications in the
real world.

The
topics to be covered may include:

Part A:
DSP theory

A.1 Review of discrete-time systems and sampling

A.2 Review of Z-transforms

A.3 Discrete Fourier transform (DFT)

A.4 Fast Fourier transform (FFT)

A.5 Digital filter design

A.5.1 Classical filter theory

A.5.2 FIR filters

A.5.3 IIR filters

A.5.4 Filter banks

A.6 Adaptive digital filters

A.7 Spectral estimation and analysis

Part B: DSP applications
(selectively covered by the instructor)

B.1 Embedded DSP systems:

B.1.1.Introduction to DSP processors

B.1.2 DSP processor architecture and programming

B.1.3 Design embedded DSP systems with TMS320 series

B.2 Speech and audio processing:

B.2.1 Digital waveform coding: PCM, u-law, A-law.

B.2.2 Time domain analysis

B.2.3 Short-time spectrum analysis

B.2.4 Linear prediction analysis

B.2.5 Pitch detection and tracking

B.2.6 Speech coding

B.2.7 Music processing

B.3 Image processing:

B.3.1 Two-dimensional signals and systems

B.3.2 Image compression

B.3.3 Image enhancement and restoration

B.3.4 Image segmentation

B.4 Radar and sonar signal processing

B.5 Array signal processing

*Prerequisites:*
General
prerequisites including CSE3451 3.0

CSE
4461 3.0

**Hypermedia and Multimedia
Technology**

The course focuses this year on the design and implementation of hypermedia presentation systems. "Hypermedia" refers 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 gives 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 mark-up 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, 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 that will be presented in class.

*Prerequisites*: General
prerequisites, including CSE3461 3.0

*Course Credit Exclusion*: CSE4361 3.0

CSE
4471 3.0

**Introduction to Virtual
Reality**

This course introduces the basic principles of Virtual Reality and its applications. The necessary hardware and software components of interactive 3D systems as well as human factors are discussed. The material is reinforced by practical assignments and projects. The topics will be approximately as follows:

á Introduction: applications, human sensory/motor system & capabilities

á Interactive 3D Graphics Programming: 3D coordinate systems & geometry, transformations, scene modelling & graphics primitives, scene graphs, camera model, z-buffering, lighting, texturing, anti-aliasing, real-time rendering (levels-of-detail, impostors, etc.), graphics hardware, distributed rendering

á Virtual Reality Technology (VR): VR input devices, filtering & tracking, VR output devices, Augmented Reality (AR) hardware, spatial audio, haptics

á Virtual Environments (VE): event driven simulation, procedural animation, physics-based modelling, collision detection & response, simulation & rendering in parallel, interaction with VE, haptic and auditory simulation

á Human Factors: presence, immersion, simulator sickness (frame-rate, latency, vergence vs. accommodation, visual vs. vestibular, etc), training (fidelity, transfer)

á Applications: training, collaborative virtual environments, medical, visualization & decision support, design, entertainment, augmented reality, space applications, teleoperation, computer games.

*Prerequisites:
*General prerequisites for 4000-level CSE
courses,
or ENG 4000 6.0 taken as a co-requisite; and CSE3221 3.0, CSE3311 3.0,
MATH1025 3.0