Queen's School of Computing

Calendar Descriptions of Graduate Courses

Note: More detailed curricula for all the courses offered this year are available from the appropriate instructor or from the Coordinator of Graduate Studies.

Calendar descriptions for these courses are given below.

CISC-802* Logic Based Information Modelling

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.

CISC-831* Database Models

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.

CISC-832* Data Base Management Systems

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.

CISC-833* Advanced Operating Systems

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.

CISC-834* Topics in Computer Science

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-835* Topics in Computer Systems

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-836* Topics in Software Systems

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-837* Computer Networks

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.

CISC-838* Software Engineering

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.

CISC-839* Topics in Information Systems

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-841* Advanced Computer Architecture

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.

CISC-842* Parallel Languages and 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.

CISC-843* Very High Level Programming Language Processors

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.

CISC-845* Requirements of Specification and Design

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.

CISC-846* Software Design and Implementation

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.

CISC-847* Software Verification and Validation

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.

CISC-848* Software Reliability and Security

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.

CISC-849* Software Engineering Environments

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.

CISC-850* Topics in Computer Applications and 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.

CISC-852* Computational Vision

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.

CISC-853* Computer-aided Verification of Software Systems

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.

CISC-854* Computer Graphics

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.

CISC-856* Artificial Intelligence

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.
CISC-857* Image Processing

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

CISC-858* Programming Language Processors

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.

CISC-859* Pattern Recognition

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.

CISC-861* Advanced Graphics

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.

CISC-860* Topics in Programming Languages

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.

CISC-863* Knowledge Representation

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.

CISC-864* Topics in Robotics and Perceptions

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-865* Introduction to Programming-Language Theory

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

CISC-867* Algorithm Design and Analysis

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.

CISC-868* Computational Geometry

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.

CISC-869* Advanced Topics in Programming-Language Theory

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-870* Topics in Theoretical Aspects of Computing

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-871* Algorithmic Graph Theory

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.

CISC-872* Parallel Algorithms

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.

CISC-873* Data Mining

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.

CISC-874* Foundations of Neural Networks

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.

CISC-875* Bioinformatics

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.

CISC-876* Computational Complexity

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.

CISC-877* Topics in Information Systems II

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-878* Topics in Computer Applications and Algorithms II

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-879* Topics in Theoretical Aspects of Computing II

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-880* Topics in Software Systems II

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-881* Topics in Biomedical Computing I

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-882* Topics in Biomedical Computing II

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-897* Research Topics in Computer Science

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.

CISC-898 Master's Project

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.

CISC-899 Master's Thesis

CISC-999 Ph.D. Thesis