Winter 2017 Graduate Calendar


COMPUTER SCIENCE: COURSES

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 Faculty Regulations - Grading and Dropping Courses.

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 and references of important papers, theses, books, and conference proceedings. The bibliography should include names and current addresses of scientists working in the student's chosen area.

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-515. Middleware and Web Engineering
This course introduces software engineering concepts, principles and techniques in middleware and web-based systems. Selected topics include, but are not limited to: architecture design; web modelling in UML; testing techniques in web applications; software monitoring with CORBA interceptors; distributed object systems using CORBA; formal methods in message-oriented middleware.

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. 3D Animation and Data Visualization
Introduction to visualization methods, especially in the context of 3D modeling and 3D animation; 3D geometric modeling, 3D computer animation; forward/inverse kinematics and rigid body dynamic techniques for animation. Students will learn interactive modeling/animation tools and their use to produce motion for animations.

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. Topics in Bioinformatics
The purpose of this course is to present a representative sample of computational problems in molecular biology, bioinformatics, genomics and proteomics and efficient algorithms to solve them. Topics may include: molecular biology, sequence alignment, genomics database, protein structure protein interaction, phylogenetic analysis, RNA structure, gene regulation, functional genomics, microarrays . Student will be required to investigate selected problems/methods in computational biology and bioinformatics. (Prerequisite: B.Sc. (Hons., Computer Science) or permission of instructor.)

60-559. Machine Learning and Optimization
Focusing on several central learning problems, this course presents important machine learning techniques, such as supervised, semi-supervised, and unsupervised learning, and probabilistic model building; topics include decision trees, neural networks, Bayesian learning, instance based learning, and reinforcement learning. Optimization topics include: simulated annealing, tabu search or evolutionary algorithms, gradient methods, constraint optimization, ant-colony optimization, and other heuristic search methods. Efficiencies and limitations of each of these will be discussed and the correlation between the different approaches will be highlighted. (Prerequisites – B.Sc. [Hons, Computer Science] or with the permission of the 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 multi-threaded 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-564 Security and Privacy on the Internet
This course introduces the issues of security in public distributed networks. Topics include: security planning, policies and procedures, threats and strategies, security services and mechanisms, digital rights; topics in Internet related to security and privacy; secure protocols, DES, AES; public key algorithms; VPN; Internet sniffing and scanning tools; intrusion detection, intrusion analysis and tools; viruses and enterprise anti-virus tools; other applications such as digital cash, code signing and anonymous e-mail.

60-567. Advanced Computer Networks
This course will cover developments in modern communication networks. Topics may include: link-level design issues; network routing; network optimization and resource allocation; wireless networks and mobile IP; ATM technology; switching hardware; optical communications; and fault-tolerant networks.

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-569 Semantic Web
The Semantic Web is an extension of the current world wide web in which information is given well-defined, machine-understandable meaning, thus enabling computers and people to work in cooperation. This course introduces both theoretical and practical aspects in semantic web. Topics will include: languages and representation issues in semantic web; cooperative software agents; web service technology; and information integration theory and practice.

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. Pattern Recognition
This course is a general introduction to
Pattern Recognition. Topics may include: Bayesian learning and classification, estimation, distance-based classifiers, linear and nonlinear methods, support vector machines, kernels, dimensionality reduction, feature extraction and selection, clustering, classifier evaluation. (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-611. Advanced Software Engineering Topics
This course addresses current practices in medium to large-scale software development projects. A comprehensive overview of important design patterns is provided, with emphasis on practical aspects of software analysis and design methodology, implementation techniques and system development paradigms, as well as software testing and verification practices. Strong technical communication and process documentation, including those associated with standard and agile practices, are a particular focus of the course. (This course is restricted to students in the Master of Applied Computing program.)

60-615. Advanced Database Topics
This course will introduce students to advanced topics in database design and information retrieval. Topics covered may include DBMS three-schema level architectures, data models (e.g., relational, object-oriented model), query languages (e.g. Oracle SQL, PL/SQL), file organization and indexing, transaction management, concurrency control, security and recovery procedures, information retrieval on the internet, and other advanced topics (e.g. online analytical processing -- OLAP, data warehouses and data mining).

60-634. Internet Applications and Distributed Systems
This course will introduce students to the latest tools and technologies for developing internet applications. Topics covered may include a review of client/server model and applications, multi-tier software architecture, content management systems, dynamic server-side applications, principles of parallel programming and distributed systems and techniques for solving complex problems using distributed systems. (This course is restricted to students in the Master of Applied Computing program.)

60-654. Advanced Computing Concepts
This course covers advanced topics in principles and applications of algorithm design and analysis, programming techniques, advanced data structures, languages, compilers and translators, regular expressions, grammars, computing and intractability. Cases studies and applications in current programming languages are explored in class and labs. (This course is restricted to students in the Master of Applied Computing program.)

60-656. Advanced Systems Programming
This course explores advanced topics in software development techniques for systems programming in the context of the Unix environments for different platforms, ranging from handheld devices to mainframes. Topics include; overview of Unix/Linux and Android operating systems, Shell programming, process control and communication, multi-threading, internet client/server application and service development.

60-667. Networking and Data Security
This course will introduce students to the fundamental concepts of computer networks, with an emphasis on network security. Topics will cover fundamental principles and protocols of computer networks, types of security threats and vulnerabilities and a variety of techniques for addressing security issues, such as security protocols, firewalls, intrusion detection/prevention. (This course is restricted to students in the Master of Applied Computing program.)

60-699. Project/Internship
This course will provide supervised experience in completing an approved software project. The focus will be on the application of technical knowledge and skills to a specific project and development of other transferable skills. Students may have the opportunity to complete their project in an approved career-related setting. (6.0 credit course.)

60-701. Work Term
The Work Term is offered on a Pass/Non-Pass basis. It provides the opportunity for students to enhance academic learning with valuable industrial experience, and to develop transferable skills in an applied setting. Students need departmental permission to enrol in the work term, and must have successfully completed a minimum of one-semester full-time study in the graduate program. (Pre-requisite: Departmental permission).

60-797. M.Sc. Thesis

60-798. Doctoral Dissertation Research
An original research investigation, the results of which will be embodied in a concisely written dissertation conforming in style and format to a recognized journal in the field of specification. The dissertation should be of the highest quality possible and suitable for publication. In no case may this course be used for credit toward fulfilling the course requirements in the Ph.D. program.