Course Descriptions: 2000-Level

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

CSE 2031 3.0
Software Tools

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

Course Descriptions: 3000-Level

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

Specific prerequisites may also apply to individual courses.

Notes:

   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:

   Preliminarieslinear algebra, computer programming and mathematical software

   Number systems and errorsmachine representation of numbers, floating-point arithmetic, simple error analysis, ill-conditioned problems and unstable algorithms

   Solution of systems of linear equationsGaussian 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 approximationslinear 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

   InterpolationNewton'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

CSE 3215 4.0
Embedded Systems

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.0before 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

CSE 3311 3.0
Software Design

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.0before 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

CSE 3461 3.0
User Interfaces

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

 

Course Descriptions: 4000-Level

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

  Vernans 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 Theoryprobability, conditional probability, total probability, random variables, moments, distributions (Bernoulli, Poisson, exponential, hyperexponential, etc.)

   Stochastic ProcessesMarkov chains and birth and death processes

   Queuing TheoryM/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: Shannons 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, 2nd 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

CSE 4412 3.0
Data Mining

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 FactorsResponse Time and Display Rate; Presentation StylesBalancing 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 todays 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

 



[1] This old Atkinson CSE course is not to be confused with the current CSE 3451 3.0.

[2] Completed means passed.