ObjectivesThis program is designed to provide students with an opportunity to strengthen their knowledge in a specific area of computer science in the broad sense, and to provide a significant introduction to research. The research results will be presented in a thesis, which must be defended in an oral examination.
Academic titleMaster of Science in Computer Science
Course descriptionStudents must complete 45 credits as shown below:
* Minimum of 16 credits of courses.
* A minimum of 8 credits must be chosen from Topic Areas C01 through C08.
* Any remaining credits may be chosen from Topic Areas C09 (Software Engineering), C12 (Cognate Disciplines), or COMP 6961.
* A maximum of 4 credits can be chosen from computer science courses at the 6000 level marked with (*).
* Thesis 29 credits.
The following are one-term courses (four credits each) unless otherwise indicated.
Note: Some graduate courses are content equivalent with specific undergraduate courses. These graduate courses, indicated with (*) below, are not available for credit to students who have completed the undergraduate equivalent.
COMP 6231 Distributed Systems Design (4 credits)
Principles of Distributed Computing: Scalability, Transparency, Concurrency, Consistency, Fault Tolerance Distributed Computing Paradigms; Message Passing: Client-Server, Peer-to-Peer: Remote Procedure Call, Remote Method Invocation; Network Services, Object Request Broker, Mobile Agent; Object Space, Collaborative Applications; Distributed Computing Technologies: Inter Process Communication, Sockets, Group Communication, Distributed Objects, RMI, CORBA, Distributed (Internet) applications; HTTP, CGI, Applets, Servelets, Web Services, SOAP. Laboratory: Two hours per week. Prerequisite: COMP 5461.
COMP 6281 Computer Systems Design (4 credits)
Prerequisite: COMP 5461.
Migration from Von Neumann to parallel processing architectures: fine grained and coarse grained concurrency, multi-threaded computers, massively parallel computers, fundamental problems in hardware architecture, and memory consistency. Embedding of algorithms on shared-memory and message-passing architectures. Parallel programming environments: parallel programming models, parallel language features, and process mapping. Key concepts in distributed systems. Course project on parallel programming environments.
COMP 6351 Topics in Scientific Computation (4 credits)
Prerequisite: COMP 5611.
Selected elements of numerical methods that are central to scientific computation. The precise contents of the course may differ somewhat from one offering to the next, but will include several of the following topics: numerical solutions of initial value problems in ordinary differential equations, finite difference method, numerical stability theory, differential algebraic systems, boundary value problems in ordinary differential equations, collocation methods, introduction to the numerical solution of partial differential equations, iterative methods for linear systems, the matrix eigenvalue problem, the singular value decomposition, and the QR factorization. Projects on selected applications.
COMP 6361 Numerical Analysis of Nonlinear Equations (4 credits)
Prerequisite: COMP 5611.
An introduction to numerical algorithms for nonlinear equations, including discrete as well as continuous systems. The emphasis is on computer-aided numerical analysis rather than numerical simulation. This course is suitable for scientists and engineers with a practical interest in nonlinear phenomena. Topics include computational aspects of: homotopy and continuation methods, fixed points and stationary solutions, asymptotic stability, bifurcations, periodic solutions, transition to chaos, travelling wave solutions, discretization techniques. A variety of applications will be considered. Projects on selected applications. Numerical software packages will be available.
COMP 6411 Comparative Study of Programming Languages (4 credits)
Comparison of several high-level programming languages with respect to application areas, design, efficiency, and ease of use. The selected languages will demonstrate programming paradigms such as functional, logical, and scripting. Static and dynamic typing. Compilation and interpretation. Advanced implementation techniques.
COMP 6421 Compiler Design (*) (4 credits)
Prerequisites: COMP 5201, 5361, 5511.
Compiler organization and implementation. Programming language constructs, their syntax and semantics. Syntax directed translation, code optimization. Run-time organization of programming languages. Project.
COMP 6461 Computer Networks and Protocols (4 credits)
Prerequisite: COMP 5461.
Direct link networks: encoding, framing, error detection, flow control, example networks. Packet switching and forwarding: bridges, switches. Internetworking: Internet Protocol, routing, addressing, IPv6. End-to-end protocols: UDP, TCP. Network Management: issues, architecture, management information base (MIB), SNMP, TMN and CMIP. Network security concepts. Application-level protocols. Laboratory: Two hours per week.
COMP 6471 Software Design Methodologies (4 credits)
Prerequisite: COMP 5541.
This course covers the state-of-the-art in architectural design of software systems. The course considers commonly used software system architectures, techniques for designing and implementing these architectures, models and notations for characterizing and reasoning about architectures and design plans. Design methods, object-oriented application frameworks, design patterns, design quality assurance, coupling and cohesion measurements, design verification and documentation. Assignments include a design project.
COMP 6491 Systems Software (4 credits)
Prerequisite: COMP 5461.
Fundamental abstractions; architecture and design of the kernel of a contemporary operating system; mainstream commercial and research variants; system programming interfaces; interprocess communications; concurrent and distributed programming interfaces; interprocess communications; concurrent and distributed programming; local and network resources; management of asynchronous events; kernel programming. Software Design Projects.
COMP 6521 Advanced Database Technology and Applications (4 credits)
Prerequisite: COMP 5531.
Review of standard relational databases, query languages. Query processing and optimization. Parallel and distributed databases. Information integration. Data warehouse systems. Data mining and OLAP. Web databases and XML Active and logical databases, spatial and multimedia data management. Laboratory: Two hours per week.
COMP 6531 Foundations of the Semantic Web (4 credits)
Description Web markup languages, World Wide Web Consortium (W3C) standards, extendable markup language (XML) resource description framework (RDF), schema for markup languages, Semantic Web, ontology development, markup languages for ontologies, ontology inference layer (OIL), DARPA agents markup language (DAML), DAML+OIL, ontology web language (OWL), logical foundations of ontologies, frame languages, description logics. A Project.
COMP 6591 Introduction to Knowledge-Base Systems (4 credits)
Prerequisite: COMP 5531.
Review of first-order logic, relational algebra, and relational calculus. Fundamentals of logic programming. Logic for knowledge representation. Architecture of a knowledge-base system. Fundamentals of deductive databases. Top-down and bottom-up query processing. Some important query processing strategies and their comparison. Project or term paper on current research topics.
COMP 6611 Applications of Symbolic and Algebraic Computation (4 credits)
Prerequisites: COMP 5361, 5511.
Selected topics from recent work in the field, such as: minimal vectors in a lattice; multivariate polynomial factorization; computation of Galois groups; computation of integral bases and polynomial factorization over p-adically complete fields. Advanced techniques in symbolic and algebraic computation; computing by homomorphic images and p-adic techniques; algebraic data structures; simplification of algebraic expressions. Students will have access to symbolic/algebraic systems. Project or term paper.
COMP 6641 Theory of Computation (4 credits)
Prerequisites: COMP 5361, 5511.
General properties of algorithmic computations. Turing machines, universal Turing machines. Turing computable functions as a standard family of algorithms. Primitive recursive functions. Church’s thesis, recursive sets. Recursively enumerable sets and their properties. Rice’s theorem. Time and space complexity measures. Hierarchy of complexity measures. Axiomatic complexity theory. Project or term paper on selected topic.
COMP 6651 Algorithm Design Techniques (4 credits)
Prerequisites: COMP 5361, COMP 5511.
Mathematical preliminaries; Empirical and theoretical measures of algorithm efficiencies; Optimization techniques and algorithms including greedy algorithms, dynamic programming, and graph algorithms; Amortized analysis; String matching algorithms; NP-complete problems and approximate solutions; Probabilistic algorithms. Term project.
COMP 6661 Combinatorial Algorithms (4 credits)
Prerequisites: COMP 5361, 5511.
Representation and generation of combinatorial objects; search techniques; counting and estimation. Projects on selected applications from combinatorics and graph theory.
COMP 6671 Introduction to Symbolic and Algebraic Computation (*) (3 credits)
Prerequisites: COMP 5361, 5511.
A comparative study of several of the major symbolic mathematics systems. On-line experience with these systems will be offered depending on availability of resources. Detailed study of the implementation of fundamental algorithms and symbolic computation, emphasizing the interplay of numeric and symbolic techniques; univariate polynomial factorization; polynomial remainder sequences and discriminant computation; fast Fourier transform; Chinese remainder theorem; Monte Carlo methods.
COMP 6711 Computational Geometry (4 credits)
Prerequisite: COMP 5511 or equivalent.
Efficient algorithms and data structures to solve geometric problems. Problems discussed include convex hulls, line intersections, polygon triangulation, point location, range searching, Voronoi diagrams, Delaunay triangulations, interval trees and segment trees, arrangements, robot motion planning, binary space partitions, quadtrees, and visitility. Algorithmic methods include plane sweep, incremental insertion, randomization, divide and conquer. Emphasis will be given to computation and complexity, with applications in computer graphics, computer aided design, geographic information systems, networks, mesh generation, databases, and robot motion planning. A project.
COMP 6721 Introduction to Artificial Intelligence (*) (4 credits)
Prerequisite: COMP 5511.
Scope of AI. Heuristics. Problem solving methodology. Game playing. Reasoning by deduction and induction. Natural language processing. Laboratory: Two hours per week.
COMP 6731 Pattern Recognition (*) (3 credits)
Prerequisite: COMP 5511.
Sequential and parallel recognition methodologies. Preprocessing. Feature extraction and selection. Syntactic and statistical approaches. Discriminant function. Techniques for learning. Bayesian decision procedures. Neural nets.
COMP 6741 Introduction to Expert Systems (*) (4 credits)
Prerequisite: COMP 5511.
Basic concepts and techniques. Knowledge representation and inferencing. Building a small expert system. Knowledge engineering and large system development. Survey of tools and expert systems. The expert system market.
COMP 6751 Human Computer Interface Design (4 credits)
Prerequisite: COMP 5541 or equivalent.
Introduction to human computer interaction. User-centered design process. Analysis of user needs. User modeling. Task analysis. GUI design principles, guidelines and patterns. Tools for user interface prototyping. User interface testing and evaluation. Large project on GUI design, prototyping, and evaluation in a team oriented environment.
COMP 6761 Advanced 3D Graphics for Game Programming (4 credits)
Prerequisite: COMP 5511.
Fundamental algorithms, techniques, and software engineering principles for 3D graphics. Introduction to real-time graphics application architecture; review of basic 3D concepts of modeling, viewing, and rendering. 3D graphics functions, pipeline, and performance. Hierarchical 3D graphics. Algorithms for occlusion culling, collision detection, photorealism, shadows, and textures. Current trends and state-of-the-art graphics and physics algorithms. Laboratory: Two hours per week.
COMP 6811 Bioinformatics Algorithms (4 credits)
Prerequisite: COMP 5511.
The principal objectives of the course are to cover the major algorithms used in bioinformatics; sequence alignment, multiple sequence alignment, phylogeny; classifying patterns in sequences; secondary structure prediction; 3D structure preduction; analysis of gene expression data. This includes dynamic programming, machine learning, simulated annealing, and clustering algorithms. Algorithmic principles will be emphasized. A project.
COMP 6821 Bioinformatics Databases and Systems (4 credits)
Prerequisite: COMP 5531.
The principal objectives of the course are to survey the needs of bioinformatics for data management, knowledge management, and computational support; to provide in-depth description of an example of each kind of database and system; and to introduce advanced database technology and software technology relevant to the needs of bioinformatics. A project.
COMP 691 Topics in Computer Science I (4 credits)
Subject matter will vary from term to term and from year to year. Students may re-register for this course, providing that course content has changed. Changes in content will be indicated by the letter following the course number, e.g., COMP 691A, COMP 691B, etc.
COMP 6961 Graduate Seminar in Computer Science (1 credit)
Students will have to attend a selected set of departmental seminars and submit a comprehensive report on the topics presented in one of the seminars. This course is graded on a pass/fail basis.
COMP 7231 Distributed Computer Systems (4 credits)
Prerequisite: COMP 6281.
Models of distributed systems: topology, synchrony, failure, and buffering. Fundamental concepts: states and events, global consistency, potential-causal ordering, logical clocks, vector clocks, the FLP impossibility theorem. Naming and security. Distributed consensus: atomic commitment, clock synchronization, replication management, weight-free algorithms. Network algorithms: termination detection, deadlock detection, global snapshots and stable/ unstable predicate detection. High-level specification of distributed applications. Projects will be offered in selected topics in distributed systems.
COMP 7241 Parallel Algorithms and Architectures (4 credits)
Prerequisite: COMP 6281.
Parallel architectures; memory organization, interconnection structures, data routing techniques. Parallel algorithms; paradigms and design techniques, complexity analysis, algorithms for various computation models. Parallel and distributed programming. Course project on parallel algorithm design and implementation.
COMP 7251 Mobile Computing and Wireless Networks (4 credits)
Prerequisite: COMP 6461.
Introduction to mobile computing and wireless networks, including impact on other areas such as networks, security, privacy, and databases. Algorithmic issues in channel assignment and handoff, user location and tracker, and routing in ad hoc networks. Discussion of Mobile IP, data management for mobile computing, and wireless LANs.
COMP 7451 Semantics of Programming Languages (4 credits)
Prerequisite: COMP 6411.
The need for semantic descriptions of programming languages. Classification of semantics: operational, axiomatic, model-theoretic, algebraic, denotational. Classification of languages: procedural, functional, logic, equational. Applications: verification, construction, language design, temporal logic for distributed systems, semantics for advanced languages.
COMP 7521 Cryptography and Data Security (4 credits)
Prerequisites: COMP 5531, COMP 6651.
Traditional cryptography. Information theory. Private-key (symmetric-key) and public-key (asymmetric-key) cryptographic algorithms. Advanced Encryption Standard (Rijndael). Cryptographic hash functions. Digital signatures. Data-origin authentication and data integrity. Entity authentication. Key distribution, management, recovery, and exhaustion. Authentication protocols. Security services (confidentiality, authentication, integrity, access control, non-repudiation, and availability) and mechanisms (encryption, data-integrity mechanisms, digital signatures, keyed hashes, access-control mechanisms, challenge-response authentication, traffic padding, and routing control). Projects will be offered in selected topics in cryptography.
COMP 7531 Database Systems Principles (4 credits)
Prerequisite: COMP 6521.
Database models. Algebraic, logical, and deductive database languages. Query equivalence and optimization. Query rewriting and information integration. Incomplete information and complex values. Introduction to current research topics. Case study or project on selected topics.
COMP 7541 Heterogeneous Database Systems (4 credits)
Prerequisite: COMP 6481 or COMP 6591.
Introduction to levels of heterogeneity. Survey of real-world heterogeneous distributed database systems. Data modelling, query processing and update propagation. Transaction processing and concurrency control schemes. Maintaining semantic integrity, preservation of autonomy, and providing security. Discussion of database heterogeneity in integrated knowledge-base support for software development, CAD and other applications. Project or term paper.
COMP 7551 Advanced Topics in Knowledge-Base Systems (4 credits)
Prerequisite: COMP 6591.
Review of knowledge-base systems; advanced query optimization methods for knowledge-base systems - semantic and structural methods. New directions in knowledge-base systems - temporal, object-oriented, and probabilistic aspects of knowledge representation and processing. Some applications to engineering design, CAD, and VLSI. Project or term paper.
COMP 7651 Advanced Analysis of Algorithms (4 credits)
Prerequisite: COMP 6651.
Amortized analysis of algorithms, NP-hardness and approximation algorithms, online algorithms, randomized algorithms. Selected topics of current interest. Project or term paper.
COMP 7661 Advanced Rendering and Animation (4 credits)
Prerequisite: COMP 6761 or equivalent.
Advanced concepts in rendering and animation with emphasis on computational techniques for synthesizing complex realistic images, both static and dynamic. Topics include: overview of computer graphics techniques in games, cinema, and engineering; realistic rendering methods in real time; animation techniques including shape and character animation. A Project.
COMP 7671 Combinatorial Search Techniques (4 credits)
Prerequisite: COMP 6661.
The purpose of this course is to discuss techniques to design efficient backtrack search programs under the presence of symmetry. Topics will include the estimation of running time of a combinatorial search; heuristic and isomorphism testing; isomorph rejection; and correctness considerations. Projects on selected applications.
COMP 7741 Natural Language Interfaces (4 credits)
Prerequisite: COMP 6751.
Introduction to natural language processing. Brief overview of syntax and semantics. Parsing and generation. Differences between spoken and written text. Issues in natural language input such as anaphora, designators, ellipsis, inconsistency, implication. Review of selected NLI systems and Dialog models. Course project. Projects on selected applications.
COMP 7751 Pattern Recognition and Image Processing (4 credits)
Prerequisite: COMP 6731.
Pattern recognition and image processing techniques, advanced topics in data acquisition and digitization, feature extraction, clustering and classification schemes. Image processing, enhancement, filtering, and evaluation. Projects on selected topics of current interest. Projects on selected applications.
COMP 7761 Intelligent User Interfaces (4 credits)
Prerequisite: COMP 6751.
Knowledge representation, learning algorithms, reasoning, explanation generation, software agents and multiple agents. Applications of these concepts in the development of intelligent user interfaces. User profiles and their applications to adaptive user interfaces. Project or term paper.
COMP 7771 Computer Vision (4 credits)
Prerequisite: COMP 6731.
Perspective transformation. Three-dimensional object description. Photo- grammetry and stereovision. Reflective map: photometric stereo. Reflective map: shape from shading and texture. Motion field and optical flow. Passive navigation and structure from motion. Reconstruction of images from projections. Advanced image processing techniques and their applications. In the course project, students will implement computer vision algorithms from the literature.
COMP 791 Topics in Computer Science II (4 credits)
Subject matter will vary from term to term and from year to year. Students may re-register for this course, providing that course content has changed. Changes in content will be indicated by the letter following the course number, e.g. COMP 791A, COMP 791B, etc.
COMP 7921 Master’s Research and Thesis (30 credits)
Students are required to submit a thesis prepared under the guidance of a faculty member appointed by the Faculty Graduate Studies Committee. The thesis must represent the result of the student’s independent work undertaken after admission to the program. The thesis will be evaluated by a committee appointed by the Faculty Graduate Studies Committee.
Note: This course is available for students registered in the old option A of the M. Comp. Sc. Program before June 1, 2001.
COMP 7931 Major Report (15 credits)
This course is available only for students registered in the old option B of the Master’s program before June 1, 2001. Students taking this course must submit a major report which will be evaluated by two examiners appointed by the Faculty of Graduate Studies Committee.
COMP 7941 Master’s Research and Thesis (29 credits)
Students are required to submit a thesis prepared under the guidance of a faculty member appointed by the Faculty Graduate Studies Committee. The thesis must represent the result of the student’s independent work undertaken after admission to the program. The thesis will be evaluated by a committee appointed by the Faculty Graduate Studies Committee.
Note: This course is available for students registered in the M. Comp. Sc. Program after June 1, 2001.