Calendar descriptions for these courses are given below.

Formal specification of information systems. Conceptual modelling and enterprise analysis. Conceptual schema languages. Application of formal logic. Relationship to data models and data modelling. Implementation considerations. Readings from the current research literature.

There are a number of information technologies which direct the development of data models. These include: databases; object-oriented programming; expert systems; hypermedia; and text management. This course examines the basic concepts underlying each of these technologies and shows how they influence current research into the design and implementation of new database models.

Theory and practice of modern data base systems; data as a model of reality; architecture of current and proposed systems. Networks models, entity data model and relational models of data. Data independence, security, data base integrity, contention handling, data definition languages, data manipulation languages and their relation to current and proposed systems. Readings from current research literature.

This course considers operating systems for distributed architectures covering the following topics: distributed system characteristics, process synchronization, and communication, basic distributed algorithms, principles of fault tolerance, reliable broadcast, naming, file systems, load balancing, and layering.

Consists of formal lectures and the study and discussion of research papers appearing in the current literature. Students will be expected to participate in the presentation of the lecture material. Topics chosen for study will be by arrangement with the School.

Consists of formal lectures and the study and discussion of research papers appearing in the current literature. Students will be expected to participate in the presentation of the lecture material. Topics chosen for study will be by arrangement with the School.

Consists of formal lectures and the study and discussion of research papers appearing in the current literature. Students will be expected to participate in the presentation of the lecture material. Topics chosen for study will be by arrangement with the School.

Transmission systems, digital communication, network design objectives, switching techniques, topologies, routing and flow control, protocols and their design and verification, multiprocessor and local area networks. There will also be opportunities to pursue topics of individual interest.

Designing and constructing large software system: requirements analysis, architectural design, detailed design and specification, implementation, test planning, delivery, evolution. Project and configuration management issues. This course includes a team project.

Consists of formal lectures and the study and discussion of research papers appearing in the current literature. Students will be expected to participate in the presentation of the lecture material. Topics chosen for study will be by arrangement with the School.

Large uniprocessor design, including pipelining, cache management, lookahead and prefetch; array processors and algorithms; multiprocessors, conventional multiprocessors, systolic arrays, data driven and demand driven architectures.

A study of the techniques necessary for developing complete parallel systems. This includes program development techniques in a parallel setting, parallel languages, compilation and transformation techniques, and properties of parallel architectures. The emphasis is on integrating solutions to each of these stages to provide practical parallel systems.

The course will focus on implementation issues for very high level languages. It will consist of a mixture of lectures, research paper readings, seminars, and a project. Topics will include techniques for interpreting and/or compiling some selection of array-bases, functional, object-oriented, and logic programming languages.

Software system engineering. Essential elements of requirements. Natural and formal language specification. Software process models. Mathematical foundations. Model-oriented specification styles: informal (data flow, control flow, process-based, data models, object-oriented); operational (process-based, state machine, data models); set theory and logic. Property-oriented specification style: trace-based; event-based; abstract data type. Refinement of requirements to components. Tool support. Case studies.

General characteristics of designs and design methods. Survey of design methods: information hiding; object-oriented design; state machine methods; data flow design. Module specification techniques: first-order logic; algebraic specification; trace specification; weakest preconditions; the refinement calculus; abstract modeling. Transition from design to implementation.

Formal techniques: proving programs correct, checking consistency and completeness. Inspections and reviews. Unit/module testing. White box and black box testing. System integration and testing. Tool support for testing. Faults vs. failures. Verification of implementation against both requirements and design. Techniques for critical software. Trustworthiness vs. reliability. Timing analysis and verification. Safety analysis. Multi-version programming. Software quality assurance, software reliability. Debugging.

Software crisis and software process models, Software reliability and methods for reliable software, Software reliability engineering process, Software dependability, Software fault tolerance, Run-time software monitoring, Software security, Software security engineering process, Network security, Intrusion detection.

A study of methods and techniques for building programs with tools rather than manually, and the outlook that the tools-oriented approach requires. Topics include characteristics of good and bad tools, libraries of reusable modules, reusable subsystems, table-driven programming, program generators, and programming environments.

Consists of formal lectures and the study and discussion of research papers appearing in the current literature. Students will be expected to participate in the presentation of the lecture material. Topics chosen for study will be by arrangement with the School.

Introduction to computational theories of vision. Topics include image formation, measurement of image properties such as lines and edges, visual motion analysis, shape from shading, recovery of depth and surface structure, shape representations, object recognition, and the control of inference in scene interpretation.

Expressing concurrent systems using finite-state machines and Buechi automata. Expressing properties of systems: assertions, safety properties, liveness properties, temporal logic, specification patterns. Analyzing concurrent systems using model checking: algorithms, complexity, and optimizations. Academic and industrial model checking tools.

Advanced computer graphics with emphasis on physical modelling and rendering of realistic 3-d scenes. Topics to include constructive solid geometry, parametric shape representations, kinematics and dynamics, photometry and surface reflectance, and ray tracing.

**CISC-855* Robotic Systems
**

A study of computational issues in geometry and physics of robotic motion, and how sensor feedback can be incorporated into robotic systems. Topics include kinematics, dynamics, path planning, and integration of feedback control into planning algorithms.

A survey of formal and heuristic approaches to realizing problem-solving behaviour by information processing methods, including theorem-proving, heuristic search, game playing, semantic models, and learning.

Examines the techniques used in digital image processing. Topics covered include image transformations (FFT, DCT, wavelets), linear and nonlinear filtering, image compression, image restoration and enhancement, Bayesian estimation of image properties, and image registration methods. Applications examined include medical imaging, motion analysis, remote sensing imagery (satellite and aircraft), and industrial imaging (inspection).

An introduction to the systematic construction of a compiler: grammars and languages; scanners; top-down and bottom-up parsing; run-time organization; symbol tables; internal representations; Polish notation; syntax trees; semantic routines; storage allocation; code generation; interpreters.

An introduction to statistical and structural pattern recognition. Feature extraction and the feature space. Bayes decision theory. Parametric classification. Clustering methods. Syntactic pattern description: string, tree and graph grammars; attributed grammars; stochastic grammars. Error correcting parsing; parsing of stochastic languages. Assignments include practical experience in application areas such as character recognition and document image analysis.

The course will cover historical and recent research in computer graphics. The instructor will give lectures on the physics of illumination, radiosity methods for light transport, Monte Carlo methods for light transport, visibility, and geometric problems. Students will give presentations on papers that they've chosen from the current research literature.

Consists of formal lectures and the study and discussion of research papers appearing in the current literature. Students will be expected to participate in the presentation of the lecture material. Topics chosen for study will be by arrangement with the School.

CISC-862* Cryptology and Data Security

Security and privacy in the information society. Principles and algorithms of modern cryptology with its two components: cryptography and cryptoanalysis. Protocols for secure communication; key management; authentication and validation; digital signatures. Applications of encryption as well as access and inference controls to computer networks, operating systems and data bases.

A study of the theoretical and practical issues involved in knowledge representations for artificial intelligence problem solving. Topics include procedural, logic and structural representations, as well as representations for visual and spatial reasoning. Related issues in uncertainty, search and learning will also be covered.

Consists of formal lectures and the study and discussion of research papers appearing in the current literature. Students will be expected to participate in the presentation of the lecture material. Topics chosen for study will be by arrangement with the School.

The language of while programs. Programming logics. Operational and denotational semantics. The typed and untyped lambda calculi. Recursive definitions and domain theory. Full abstraction.

Advanced topics in the design and analysis of efficient computer algorithms with an emphasis on combinatorial problems. Subjects to be studied include: algorithms for parallel computation; average case analysis; deriving lower bounds on the computational complexity of problems; the theory of NP-completeness and associated approximation algorithms.

A study of fundamental techniques for developing effective algorithms and data structures to solve geometric problems. Topics include - algorithms for computing convex hulls, triangulations, minimum spanning circles. Voronoi diagrams; point location problems; intersection problems; path planning, and hidden surface algorithms.

Consists of formal lectures and the study and discussion of research papers appearing in the current literature. Students will be expected to participate in the presentation of the lecture material. Topics chosen for study will be by arrangement with the School.

Consists of formal lectures and the study and discussion of research papers appearing in the current literature. Students will be expected to participate in the presentation of the lecture material. Topics chosen for study will be by arrangement with the School.

An introduction to graph theory, and a survey of graph theoretic algorithms as applied to classic and contemporary problems in combinatorics and computer science. Topics include: colouring, isomorphism, connectivity, network flow, matchings, planarity, shortest path problems, NP-completeness.

The design and analysis of parallel algorithms. Computational models. Complexity classes. Parallel algorithms for various problems including: basic arithmetic, sorting, searching, selection, graph theory, matrix computations, combinatorial enumeration, optimization, computational geometry, and numerical analysis.

Study of the extraction of concepts from large high-dimensional datasets. Statistical foundations; techniques such as supervised neural networks, unsupervised neural networks, decision trees, association rules, Bayesian classifiers, inductive logic programming, genetic algorithms, singular value decomposition, hierarchical clustering.

An introduction of the computational properties of neural networks. Topics may include: Learning Processes, Single Layer Perceptrons, Multilayer Perceptrons, Principal Components Analysis, and Self-Organizing Maps.

This inter-disciplinary course for students in the computational and life sciences looks at the application of computing techniques to molecular biology. Topics may include: DNA data analysis (genomics), secondary and tertiary structure analysis (nucleic acids and proteins), molecular scene analysis, evolutionary trees (phyolgenetics), and computing with DNA.

A systematic study of the known relations between the most important resource bounded complexity classes. Reductions, separation results and translation techniques. Relativized computation. Topics may include also: Circuit complexity, Kolmogorov-Chaitin complexity, Communication complexity.

Consists of formal lectures and the study and discussion of research papers appearing in the current literature. Students will be expected to participate in the presentation of the lecture material. Topics chosen for study will be by arrangement with the School.

Consists of formal lectures and the study and discussion of research papers appearing in the current literature. Students will be expected to participate in the presentation of the lecture material. Topics chosen for study will be by arrangement with the School.

Consists of formal lectures and the study and discussion of research papers appearing in the current literature. Students will be expected to participate in the presentation of the lecture material. Topics chosen for study will be by arrangement with the School.

Consists of formal lectures and the study and discussion of research papers appearing in the current literature. Students will be expected to participate in the presentation of the lecture material. Topics chosen for study will be by arrangement with the School.

Consists of formal lectures and the study and discussion of research papers appearing in the current literature. Students will be expected to participate in the presentation of the lecture material. Topics chosen for study will be by arrangement with the School.

Consists of formal lectures and the study and discussion of research papers appearing in the current literature. Students will be expected to participate in the presentation of the lecture material. Topics chosen for study will be by arrangement with the School.

This course provides an introduction to the primary and secondary sources of information in the computing science literature. The course includes work aimed at improving research skills. Students are required to submit and present a paper on a topic that relates to their research.

A major programming project is undertaken under the supervision of a School of Computing faculty member. The presentation of a seminar to describe the project is required.