Course Descriptions
COMPUTER SCIENCE
COMPUTER SCIENCE


Not all of the courses listed below will necessarily be offered in any one year. A component of certain courses will be offered in conjunction with an advanced undergraduate course; in such cases the undergraduate course work will comprise one half of the graduate course.

All courses are restricted to students enrolled in the Master's II Computer Science program who have all undergraduate qualifying courses and who have approval from the instructor and Computer Science program graduate committee.

Note: Certain courses listed below require more than one term to complete. Unless such courses are officially graded as “In Progress” (IP), regulations for incomplete grades will apply (see 1.4.3).

To remove any suggestion that the word "engineering" in the context of courses in Computer Science may be taken to cover the meaning of "engineering" as used in the context of courses in Professional Engineering, it is hereby acknowledged that Software Engineering is a collection of principles, models, methods, and techniques for the development, maintenance, evolution and reuse of software that meets functional, performance and quality requirements in an economic and competitive manner.

60-510. Literature Review and Survey
The purpose of this course is to prepare students for conducting the specific research on which their thesis will be based. Students are required to complete a thorough literature search on the general area in which they intend to conduct research and to undertake extensive supervised reading. Students must submit a comprehensive survey of relevant research, together with an annotated bibliography of important papers, theses, books, and conference proceedings. The survey should include a “citation lattice” indicating clearly the major papers in the area. The bibliography should include names and current addresses of scientists working in the student's chosen area and also a list giving details of relevant forthcoming conferences and workshops relevant to the student's chosen research area. Students may not register in 60-510 until they have completed all undergraduate qualifying courses required. This is the first graduate course in which students must enrol.

60-511. Advanced Software Engineering
Development and maintenance of software systems that satisfy their specifications. Topics include integrating informal and formal software design methodologies, software reuse, and software reliability.

60-512. Software Engineering for Distributed Systems
This course introduces to the students both formal and informal techniques used in software specification, verification and testing. The concentration is put on advanced methods and techniques in dealing with large-scale distributed concurrent systems. The aim of the course is to provide graduate students the opportunity of obtaining strong background and skills in developing complex software systems for their future work in industry.

60-513. Topics in Software Engineering
Some advanced selected topics in software engineering will be discussed in this course. Topics include software quality engineering, formal methods in software verification, and reverse engineering of software.

60-520. Presentations and Tools
Students are required to present one seminar on a topic approved by the course co-ordinator. They are also required to investigate, through reading and experimentation, five equally weighted computing tools that reflect the breadth of the Computer Science discipline including, for example, parser generators, database management packages, simulators, synthesizer generators, VLSI design packages, and state-of-the-art programming languages and environments. Each student will be required to submit a report comprising summary descriptions, critical reviews and evidence of successful non-trivial use of the tools investigated. The selection of tools to be investigated will be made by the student with the approval of the course co-ordinator within the first two weeks of the term. Tool selection from the student's chosen research area may be limited. Students must commence this course in their first academic year and complete it in no more than 3 semesters. Within each of the first two semesters the student is enrolled in this course, the student must complete at least two of the remaining tools. If the student does not complete all of the course requirements in two semesters, any remaining tools must be completed in the third semester.(This course has the same weight as the other courses, but is extended over a full academic year.)

60-535. Distributed Query Processing
This course will cover topics such as algorithms and techniques for query optimization in distributed databases; methods for evaluating algorithms and experimental procedures. Each student will be required to survey a topic in the area and present a report. Students will also be required to implement algorithms and comparatively evaluate techniques.

60-536. Multimedia Databases
This course focuses on the study of basic and advanced database techniques used to manage multimedia objects in multimedia database systems. Topics covered include: motivation for multimedia databases; fundamental database implementation techniques; characteristics of multimedia applications; multidimensional access structures; image databases; movie databases; further media types such as text and audio; multimedia databases; models and languages; storage techniques; and multimedia presentations.

60-537. Database Management Systems
Current developments in selected aspects of database management. Topics covered may include data models, database languages, database logics, database machines, and transaction management.

60-538. Information Retrieval Systems
Fundamental principles and advanced topics in the design of information retrieval systems. Theoretical as well as practical aspects will be discussed.

60-539. Emerging Non-traditional Database Systems
Course focuses on the study of one or more advanced, new and non-traditional database system(s) like data warehousing and mining, video database systems, mobile database systems, and distributed object-oriented database systems. Topics discussed include system architecture, components, features, implementation, applications and research issues. Both theoretical and practical contributions to further improve the system under study remain part of the course objective.

60-540. Foundations of Programming Languages
Current developments in the theory and practice of programming language design and implementation. Various languages will be considered and may include imperative, applicative, logic, constraint, object-oriented, and equational languages.

60-549. Virtual Reality
This course introduces the fundamental concepts, advanced techniques, and most recent practices of virtual reality research and applications. Topics include: web-based virtual interfaces design, object and behaviour modelling, animation and physical simulation, 3D human-computer interaction, real-time rendering of multi-sensory feedback, and virtual reality tools and applications. (Prerequisite: B.Sc. (Hons., Computer Science) or permission of instructor.)

60-550. Visualization and Rendering Techniques
Current developments in computer animation and rendering techniques. Introduction to visualization methods, algorithms, design and current system models. Integrated roles of modelling, simulation and visualization.

60-551. Visual Processing
This course introduces fundamental aspects of visual processing. Topics include: image formatting, image processing, image acquisition, camera geometry, camera calibration, feature detection, 3D reconstruction, camera motion computation, feature matching, feature tracking, object recognition and vision for robotics.

60-552. Computer Graphics
Current developments in computer graphics. Topics covered will include hardware, software, interfaces, graphics standards, data structures, rendering algorithms, and visualization.

60-554. Advanced Algorithms
Methodology for developing efficient algorithms. Advanced data structures. Intractable computational problems and approximation algorithms.

60-555. Parallel Computation
Introduction to fundamental issues in parallel computation. Basic parallel computing platforms. Models of parallel computation such as shared data and message passing. Data parallel and other abstractions. Cost models and debugging. Programming for performance. Scalability. Workload balancing. Meta-computing in grid environments. Libraries and compilers. Parallel algorithms for numeric and non-numeric problems.

60-556. Parallel Runtime Systems
Introduction to fundamental issues in parallel runtime systems. Thread systems and communication libraries. VSM, I/O and checkpointing. Scheduling and load distribution, synchronization, dynamic memory management, representation. Interface to user and computer architecture. Multiple-strategy systems and configuration. (Prerequisite: B.Sc. (Hons., Computer Science) or permission of instructor.)

60-557. Computational Geometry and Its Applications
This focus of this course is on the algorithmic issues in geometry and its various applications. Topics include: basic geometric algorithms pertaining to construction of convex hull, Voronoi diagram, triangulations, and other constructions of a point set; construction of the arrangement of a set of lines and its connection with the Voronoi diagram; applications of fundamental algorithms in areas such as computer graphics, robotics and geographical information processing.

60-558. Computational Molecular Biology
This introductory course discusses the development and use of computer science techniques to help solve problems in molecular biology. The purpose is to present a representative sample of computational problems in molecular biology and some of the efficient algorithms that have been proposed to solve them. Topics include: sequence comparisons, database search, DNA fragments assembly, DNA mapping, phylogenetic trees, genome rearrangements, molecular structure prediction, DNA computing. Student will be required to investigate selected problems/methods in computational biology. (Prerequisite: B.Sc. (Hons., Computer Science) or permission of instructor.)

60-560. Advanced Computer Architecture
Current developments in computer architecture covering advanced concepts in sequential and parallel architectures. Topics include memory hierarchy, homogeneous and heterogeneous architectures, shared-memory (SMP and DSM) and distributed-memory machines (Beowulf cluster to high-end parallel machines), dataflow and multithreaded architectures, ILP and VLIW, pipelining, and vector machines. Systolic arrays and application/language specific architectures. Networks. Programming models for parallel machines. Programming for performance on different architectures.

60-561. Artificial Neural Networks
This course introduces the fundamentals of Artificial Neural Networks. Standard neural network architectures are discussed along with their associated set of learning algorithms. Application classes of neural networks are also presented. Topics include: supervised and unsupervised learning, associative learning, competitive learning, probably approximately correct learning, adaptive learning, pattern recognition, linear separability, gradient-descent and optimization. Students will be required to investigate selected architectural and/or learning models of some neural networks. (Prerequisite: B.Sc. (Hons., Computer Science) or permission of instructor.)

60-562. Computational Grid Systems
Introduction to computational grid system goals; issues in requirements acquisition and design, specification and development; computing, networking and institutional infrastructure development; relationship to cluster and super-computing approaches; mechanisms and approaches to account management; grid adaptation of programming model; information service provision and delivery; measurement and analysis of end-to-end performance of parallel and distributed applications; analysis and monitoring tools; issues related to remote access and transparency; resource scheduling and management; and, security issues in authentication, authorization and data integrity. (Prerequisite: B.Sc. (Hons., Computer Science) or permission of instructor.)

60-567. Advanced Computer Networks
Topics will include modern, high-speed broadband networks, optical networks, and wireless communications. Theoretical, as well as practical aspects will be discussed.

60-568. Advanced Internet Systems
This course covers the internet design philosophy and its protocols, such as IPv4, IPv6, TCP and RTP/RTCP. Topics include emerging Internet multimedia services, Quality of Service (QoS), scheduling and policing mechanisms, routing, resource reservation, reliable multicast, flow and congestion control, integrated services, differentiated services, and adaptive applications. (Prerequisite: B.Sc. (Hons., Computer Science) or permission of instructor.)

60-570. Introduction to Artificial Intelligence
This course covers fundamental concepts in Artificial Intelligence including problem solving, knowledge representation and reasoning, planning, learning and natural language understanding. (Prerequisite: B.Sc. (Hons., Computer Science) or permission of instructor.)

60-572. Topics in Artificial Intelligence
Students will study in depth selected fundamental topics in artificial Intelligence. The focus will be on theories, techniques and algorithms. (Prerequisite: 60-570 or permission of the instructor.)

60-573. Natural Language Processing and Understanding
This course covers the basic linguistic, logical and AI approaches to the development of natural language understanding systems. Topics covered include: syntactic/parsing strategies, formal semantics, pragmatics and the resolution of various types of ambiguities. Inference strategies involved in the resolution of ambiguities at the pragmatic level include a detailed discussion of the representation of and reasoning with commonsense knowledge. The course also includes the implementation of natural language interfaces and the application of linguistic approaches to the development of intelligent text retrieval systems. (Prerequisite: 60-570 or permission of the instructor.)

60-574. Machine Learning
This course is a general introduction to Machine Learning. Topics include: Concept learning, Decision Tree Learning, Artificial Neural Networks, Bayesian Learning, Computational Learning Theory, Instance-Based Learning, Genetic Algorithms, Learning Sets of Rules, Analytical Learning, and Reinforcement Learning. (Prerequisite: B.Sc. (Hons., Computer Science) or permission of instructor.)

60-575. Knowledge Representation and Reasoning
This course covers advanced topics in knowledge representation and reasoning including Non-monotonic logic, Temporal and spatial representation and reasoning, Probabilistic approaches, Belief and decision networks, and an overview of the applications of these formalisms to diagnosis, navigation and decision making. (Prerequisite: B.Sc. (Hons., Computer Science) or permission of instructor.)

60-576. Advanced Search Methods
This course covers advanced search methods including, for example, gradient-descent family of search methods, hill climbing, simulated annealing, evolutionary search, tabu search, hybrid techniques, adaptive techniques, constraint satisfaction search, forward checking, consistency enforcement and adversarial search (two player games). (Prerequisite: B.Sc. (Hons., Computer Science) or permission of instructor.)

60-579. Topics in Applied Artificial Intelligence
Topics in artificial intelligence focussing on intelligent systems and applications. Topics will be selected from areas such as intelligent agents, intelligent tutoring systems, knowledge acquisition, intelligent scheduling, embedded intelligence, constraints satisfaction techniques, and knowledge discovery. (Prerequisite: 60-570 or permission of the instructor.)

60-588. Advanced Programming Languages
Current developments in the design, application, and implementation of pure lazy functional programming languages.

60-590. Directed Special Studies
With approval of the graduate program coordinator, a student may undertake to write an original paper on a specialized topic which would enhance his or her program of study. The course will involve directed supervised reading and informal discussion with the graduate supervisor. The work undertaken in fulfilling the requirements for this course will not be counted directly for credit in the evaluation of 60-797 (M.Sc. Thesis).

60-592. Selected Topics
Selected advanced topics in computer science.

60-797. M.Sc. Thesis
Students may not register in 60-797 until they have completed 60-510.