CS 642Principles of Programming Languages0.50 units
An exposure to important concepts and issues in contemporary programming languages. Data types, abstraction, and polymorphism. Program structure. Lambda calculus and functional programming, logic programming, object-oriented programming. Semantics of programming languages. Critical comparison of language features and programming methodologies using examples drawn from a variety of programming languages including Lisp, Prolog, ML, Ada, Smalltalk, Icon, APL, and Lucid. Programming assignments involve the use of some of these languages.
Phases of compilation. Lexical analysis and a review of parsing. Compiler-compilers and translator writing systems. LEX and YACC. Scope rules, block structure, and symbol tables. Runtime stack management. Parameter passage mechanisms. Stack storage organization and templates. Heap storage management. Intermediate code. Code generation. Macros.
CS 645Software Requirements Specification and Analysis0.50 units
Introduction to the requirements definition phase of software development. Models, notations, and processes for software requirements identification, representation, validation, and analysis. An important component of the course is a group project: the software requirements specification of a large software system. Preference will be given to CS graduate students. All others require approval from the department.
Prerequisite: CS Graduate Level Plans - All others require permission of department.
Software design process and its models, representations of design/architecture, software architectures and design plans, design methods, design state assessment, design quality assurance, design verification. Implementation of a group project specified in CS 645.
CS 647Software Testing, Quality Assurance and Maintenance0.50 units
Systematic testing of software systems, software verification, symbolic execution, software debugging, quality assurance, measurement and prediction of software reliability, project management, software maintenance, software reuse, reverse engineering. Application to the group project from CS 645 and CS 646. Preference will be given to CS graduate students. All others require approval from
the department.
Prerequisite: CS Graduate Level Plans - All others require permission of department.
The objective of this course is to introduce students to fundamentals of building a relational database management system. The course focuses on the database engine core technology by studying topics such as storage management (data layout, disk-based data structures), indexing, query processing algorithms, query optimization, transactional concurrency control, logging and recovery. Preference will be given to CS graduate students. All other require permission from the school.
Prerequisite: CS Graduate Level Plans - All others require permission of department.
The course is intended to provide the student with an appreciation of modern computer design and its relation to system architecture, compiler technology and operating system functionality. The course places an emphasis on design based on the measurement of performance and its dependency on parallelism, efficiency, latency and resource utilization.
Intended to give students experience with tools and techniques of real-time programming, this course includes not only issues of microcomputer architecture and a real-time programming language and operating system, but also hands-on experience programming a microcomputer for applications such as process control, data acquisition and communication. .Preference will be given to CS graduate students. All others require approval from the department.
Prerequisite: CS Graduate Level Plans - All others require permission of department.
An introduction to distributed systems, emphasizing the multiple levels of software in such systems. Specific topics include fundamentals of data communications, network architecture and protocols, local-area networks, concurrency control in distributed systems, recovery in distributed systems, and clock synchronization. Preference will be given to CS graduate students. All others require approval from the department.
Prerequisite: CS Graduate Level Plans - All others require permission of department.
An introduction to network architectures and protocols, placing emphasis on protocols used in the Internet. Specific topics include application layer protocols, network programming, transport protocols, routing, multicast, data link layer issues, multimedia networking, network security, and network management.
Basic techniques of system performance evaluation. Specific topics include: performance modeling, discrete event simulation, verification and validation of simulation models, analysis of simulation output, analysis of single server queue and queueing networks, modeling of computer systems, networks, and other queueing or non-queueing systems.
Languages and their representations. Grammars-Chomsky hierarchy. Regular sets and sequential machines. Context-free grammars-normal forms, basic properties. Pushdown automata and transducers. Operations on languages. Undecidable problems in language theory. Applications to the design of programming languages and compiler construction.
The classification of problems according to the computational resources required for their solution, with emphasis on properties of feasible computations rather than on specific algorithms. Topics include: time and space complexity, tractable and intractable problems, computation using randomness, parallel computation.
Design of good algorithms and analysis of the resources they consume. Lower bounds on the resource requirements of algorithms to compute certain functions. Problems from the following areas are discussed in this light: sorting and order statistics, data structures, arithmetic computations, the NP-complete problems.
Review of basics of quantum information and computational complexity; Simple quantum algorithms; Quantum Fourier transform and Shor factoring algorithm: Amplitude amplification, Grover search algorithm and its optimality; Completely positive trace-preserving maps and Kraus representation; Non-locality and communication complexity; Physical realizations of quantum computation: requirements and examples; Quantum error-correction, including CSS codes, and elements of fault-tolerant computation; Quantum cryptography; Security proofs of quantum key distribution protocols; Quantum proof systems. Familiarity with theoretical computer science or quantum mechanics will also be an asset, though most students will not be familiar with both.
An introduction to computational problems in medical imaging. Sources of medical images (MRI, CT, ultrasound, PET) as well as reconstruction methods for MRI and CT. Image manipulation and enhancement such as denoising and deblurring. Patient motion correction and optimal image alignment. Tissue classification and organ delineation using image topology. (Note: Lab is not scheduled and students are expected to find time in open hours to complete their work. Offered: W)
CS 676Numeric Computation for Financial Modelling0.50 units
The interaction of financial modes, numerical methods, and computing environments. Basic computational aspects of option pricing and hedging. Numerical methods for stochastic differential equations, strong and weak convergence. Generating correlated random numbers. Time-stepping methods. Finite difference methods for Black-Scholes equation. Discretization, stability, convergence. Methods for portfolio optimization, effect of data errors on portfolio weights.
CS 682Computational Techniques in Biological Sequence Analysis0.50 units
Computer science principles and algortihms in biological sequence analysis. Topics include algotithms for sequence comparison, for large-scale database search in biological databases, for sequence assembly, for evolutionary tree reconstruction, for identifying important featrues in DNA and RNA sequences, and underlying computational techniques for understanding strings and trees and for making probabilistic inferences. (Heldwith CS 482).
CS 683Computational Techniques in Structural Bioinformatics0.50 units
Algorithms and techniques used in the identification and functional characterization of cellular proteins. Topics include: protein databases, gene expression analysis, protein structure prediction, protein function prediction, active site detection and ligand docking, protein-protein interaction, HTCS (High Throughput Conformational Search), and QSAR (Quantitative Structure-Activity Relationships). (Heldwith CS 483).
CS 686Introduction to Artificial Intelligence0.50 units
Goals and methods of artificial intelligence. Methods of general problem solving. Introduction to mathematical logic Mechanical theorem proving. Game playing. Natural language processing. Preference will be given to CS graduate students. All others require approvalfrom the department. Department approval will be by Undergraduate Advisor.
Prerequisite: CS Graduate Level Plans - All others require permission of department.
CS 687Introduction to Symbolic Computation0.50 units
An introduction to the use of computers for symbolic mathematical computation, involving traditional mathematical computations such as solving linear equations (exactly), analytic differentiation and integration of functions, and analytic solution of differential equations.
Software and hardware for interactive computer graphics. Implementation of device drivers, 3-D transformations, clipping, perspective, and input routines. Data structures, hidden surface removal, colour shading techniques, and some additional topics will be covered. Preference will be given to CS graduate students. All others require approval from the department.
Prerequisite: CS Graduate Level Plans - All others require permission of department.
This is an individual study course carried out under the supervision of a Computer Science faculty member. The topic should be agreed upon by both the student and the instructor. This is a credit/no credit course. Department permission will be by Coordinator of Graduate Studies.
This is an individual study course carried out under the supervision of a Computer Science faculty member. The topic should be agreed upon by both the student and the instructor. This is a grade course. Department permission will be by Coordinator of Graduate Studies.
CS 692The Social Implications of Computing0.50 units
This course is designed to consider the problems encountered by individuals, organizations and society as computer technology is adopted, with a view towards assessing possible courses of action.
Research and life skills that can help graduate students improve their academic and interpersonal competence-research methodologies, library research skills, creative and critical thinking, time management, stress management, technical reading skills, listening skills, oral communication, writing and publishing in computer science, jobs in academica versus industry.
This number is used for courses being offered on a temporary basis. Such a course may be available only once, for example to take advantage of a visiting professor's expertise, or may be offered experimentally until it is determined whether of not the course should become part of the regular course offerings. It may also be used for an individual study course carried out under the supervision of a Computer Science faculty member with the approval from the Associate Chair, Graduate Studies. This is a grade course. Preference will be given to CS graduate students. All others require approval of the Department.
Prerequisite: CS Graduate Level Plans - All others require permission of department.
Project-oriented course that covers the implementation of relational database management systems. Topics include database system architecture; managing primary and secondary storage; query processing; metadata and catalog management; language processing; query optimization and plan generation; concurrency; failures and recovery; extensibility; client-server interactions.
Management of non-relational databases, such as multimedia databases, text databases, temporal databases or spatial databases. Each offering will target a specific type of data. Topics include rationale for and common applications of non-relational database management; systems and standards; the abstract data model; data definition and manipulation languages; data storage and indexing; query processing and optimization; updates and transaction management.
CS 742Parallel and Distributed Database Systems0.50 units
Algorithms and architectures used in parallel database management systems, with a focus on relational systems. Topics include system architectures; parallel and distributed query processing; federated dtabase systems; distributed transactions; data replication.
Project-oriented course that covers optimizing compilers and the implementation of advanced programming language features. Topics include intermediate representations; data-flow, dependence, and alias analysis; optimizing transforms, register allocation, instruction scheduling; memory management, garbage collection, threads, concurrency; single and multiple inheritance, generics, templates, type inference.
Application of formal methods to the verification of computer-based systems. Algebraic and automata preliminaries. Temporal logic and model checking. Decision procedures. Mechanized theorem proving. Advanced topics chosen by the instructor.
A project-oriented course that covers the concepts in software architecture. Topics include basic concepts (components and connectors, rationale, views, architectural diagrams, team implictions, evolution, size considerations), theory underlying softeware architecture, extraction of architecture from implementation artifacts, architecture of web-based and enterprise systems, clustering of subsystems, visualization approaches to software architecture, comprehension and cognitive aspects of software architecture.
Cryptographic protocols and their application to secure communication, especially in a network setting. Identification and entity authentication; protocols for key establishment, transport, agreement and maintenance; secret sharing, broadcast encryption, tracing schemes; certificates, public-key infrastructure, PGP.
Introduction to the design and analysis of algorithms that make use of randomization. Topics include review of basic probabiloity and introduction to randomized algorithms; game theoretic techniques; uses of Markov and Chebyshev inequalities; tail inequalities; Markov chains and random walks; algebraic techniques; data structures and graph algorithms.
Introduction to the design, analysis and application of algorithms for geometric problems. Topics include convex hull algorithms in two and three dimensions; Voronoi diagrams, Delaunay triangulations, and their applications; linear programming in low dimensions; line segments, planar subdivision, and polygons; range searching.
Further exposure to the classification of problems based on their computational requirements and to mathematical tools designed to explore the structural consequences of such classifications. Topics include relativization, alternation, provably intractable problems, feasible parallel computation; fixed-parameter tractability and the W-hierarchy; Kolmogorov complexity, including algorithmic and algorithmic prefix complexity and their applications.
Fundamental problems of elementary and algebraic number theory from an algorithmic and computational complexity point of view with emphasis placed on analysis of algorithms. Topics include basic arithmetic algorithms; computation over finite fields; primality testing; algorithms for integer factorization; algorithms in number fields.
CS 775Parallel Algorithm in Scientific Computing0.50 units
Techniques for obtaining maximum parallelism in various numberical algorithms, especially those occurring when solving matrix problems and partial differential equations, and the subsequent mapping onto the computer. Topics include: parallel architecture and performance models; message passing/shared memory programming; matrix computations; fast Fourier transform; graph partitioning; domain decomposition methods.
CS 778Numerical Solution of Partial Differential Equations0.50 units
Discretization methods for partial differential equations, including finite difference, finite volume and finite element methods. Application to elliptic, hyperbolic and parabolic equations. Convergence and stability issues, properties of discrete equations, and treatment of non-linearities. Stiffness matrix assembly and use of sparse matric software. Students should have completed a course in numerical computation at the undergraduate level.
CS 779Splines and Their Use in Computer Graphics0.50 units
Spline theory and recent developments in techniques for representing, manipulating and rendering curves and surfaces constructed from splines in a graphic environment. Applications of interest include computer-aided design, synthetic image generation and animation.
A deep investigation into fundamental problems of symbolic computation. These may include algorithms for linear, non-linear, and differential systems of symbolic equations, symbolic integration, factoring polynomials, and symbolic-numeric algorithms. Covers the basic data types and structures for algebraic objects and operations. Issues in the design of computer algebra systems.
In computer graphics, 3D models are rendered through an ideal camera to a 2D image. The virtual camera is a powerful tool, controlling not only perspective and the optical path, but colour mapping as well. This course examines the notion of "colour" at different stages of the computer graphics pipeline, and describes techniques for modelling and managing colour through the virtual camera analogy. Topics include illumination, the virtual camera, colour spaces, gamut mapping and colour management. Implementation of the colour reproduction and gamut-mapping algorithms demands a number of numerical and statistical methods, including multidimensional interpolation and approximation, computational geometry, splines, principal components anlysis and optimization.
CS 782Pattern Discovery in Biomolecular Data0.50 units
This course examines, from an algorithmic point of view, the pattern discovery techniques that are currently used to extract the functional knowledge hidden in biomolecular data that is derived from DNA, RNA, proteins and their reaction products. Topics include: DNA sequence analysis, RNA structure prediction techniques, protein motif discovery techniques, protein structure prediction, analysis of expression data.
Computer understanding and generation of natural (i.e., human) languages. Basic topics in natural language understanding (syntax, semantics, pragmatics, connected discourse). Selected applications (e.g., automated language generation, machine translation, natural language processing and the Web).
Intelligence in interfaces-natural language processing, plan recognition, dialogue, generation, user modeling. Interfaces to intelligent systems-intelligent agents and multi-agent systems, information processing and data mining, knowledge-based systems.
CS 786Probabilistic Inference and Machine Learning0.50 units
Covers the fundamental principles of probabilistic inference and computational learning systems. Topics include Bayes decision and utility theory, Monte Carlo and Markov chain Monte Carlo methods; learning with complete data; Bayesian networks, Markov random fields and factor graphs; models; learning with incomplete data; computational learning and PAC learning theory.
Fundamental problems in computational vision where efficient and robust algorithms can be applied. Topics include image formation; linear systems and Fourier theory; image registration; feature detection; fitting models to data; optical flow; structure from motion; steriopsis; object recognition; high-level vision.
Project-oriented course that covers high-performance image synthesis using techniques for both real-time interactive systems and offline physically-based rendering. Topics include numerical techniques; visual perception and light; mathematical models of rendering; global illumination algorithms; real-time rendering.
Graphics input devices and interaction techniques. The pragmatic factors of various physical, logical and virtual devices, human factors of interactive systems, interaction dialogue managers.