16:198:500
Light Seminar in Computer Science (1)
Several sections are offered each semester, introducing students to research activities inside the department. Format varies.
Required for all new full-time students in Ph.D. program.
|
16:198:503
Computational Thinking (4)
Development of three important kinds of programs
through hands-on case studies: an interpreter for a programming language; a web interface to a database; and a reinforcement-learning
agent capable of perception, deliberation, and action. The theoretical background to such programs, including representation, complexity, and computability, and an introduction to the history and culture of the field.
Stone. This course may not be taken for credit toward the M.S. and Ph.D. degrees in computer science. It is primarily intended for cognitive science students who do not have undergraduate degrees in computer science.
|
16:198:504
Computational Modeling (4)
A hands-on introduction to computational modeling as a
methodology for explaining the behavior of complex and intelligent
systems.
Stone. This course may not be taken for credit toward the M.S. and Ph.D. degrees in computer science. It is primarily intended for cognitive science students who do not have undergraduate degrees in computer science.
|
16:198:505
Computer Structures (3)
Hardware subsystems. Computer organization, memory systems, arithmetic, I/O, control, data communications, parallel processors, RISC architectures, and other topics of current interest.
Prerequisite: Admission requirements.
|
16:198:507
Advanced Computer Architecture (3)
Advanced topics in computer architecture, including advanced processor design, models and workload characteristics for multiprocessor systems, memory and cache coherence and consistency, multiprocessor architecture, and I/O.
Prerequisite: 16:198:505.
|
16:198:508
Formal Languages and Automata (3)
Provides a rigorous mathematical framework for two general areas: language
description and computation. Examines the relation between the two
and considers practical applications from computer science and linguistics. Computability theory and complexity theory are also introduced.
|
16:198:509
Foundations of Computer Science (3)
Introduction to first-order logic, emphasizing methods used in computer science. Introduction to mathematical models of computation, especially deterministic and nondeterministic Turing machines, computability theory, and space and time complexity theory; P and NP.
Prerequisite: Admission requirements.
|
16:198:510
Numerical Analysis (3)
Derivation, analysis, and application of methods used to solve numerical problems with computers; solution of equations by iteration, approximation of functions, differentiation and quadrature, differential equations, linear equations and matrices, least squares.
Prerequisites: Ability to program; a minimum of four semesters of undergraduate mathematics, including calculus and linear algebra.
|
16:198:512
Introduction to Data Structures and Algorithms (3)
Offered as a bridge course for graduate students from
other departments to prepare them to include computer science electives in
their graduate work. It also is suitable for a computer science master of science
student who has not taken a solid algorithm classes in his or her undergraduate
study. The course studies a variety of useful algorithms and analyzes their
complexity to gain insight into principles and
data structures useful in algorithm design.
|
16:198:513
Design and Analysis of Data Structures and Algorithms I (3)
Worst case, average case, and amortized analysis. Data structures: search trees, hash tables, heaps, Fibonacci heaps, union-find. Algorithms: string matching, sorting and ordering statistics, graph algorithms; NP-completeness.
Prerequisites: Admission requirements; familiarity with Prim and Kruskal minimum spanning tree algorithms and Dijkstra shortest-path algorithm.
|
16:198:514
Design and Analysis of Data Structures and Algorithms II (3)
Advanced data structures, approximation algorithms, probabilistic and randomized algorithms, number-theoretic algorithms, and parallel computation.
Prerequisite: 16:198:513.
|
16:198:515
Programming Languages and Compilers I (3)
LR parsing; attributed grammars; code generation; types and polymorphism; programming language paradigms: logic, functional, object-oriented; data abstraction; formal semantics: axiomatic l-calculus, denotational.
Prerequisites: A first course in compilers (equivalent to 01:198:415) and 16:198:513 (both are possible corequisites with permission of instructor).
|
16:198:516
Programming Languages and Compilers II (3)
Advanced topics in compiler design and modern programming language paradigms chosen from optimization, especially register allocation methods; data flow analysis techniques, including interprocedural analysis; parallelization of sequential programs; incremental compilation.
Prerequisite: 16:198:515.
|
16:198:518
Operating Systems Design (3)
To convey a thorough understanding of the basics of an operating system by studying
techniques and algorithms for providing services in a computer system, and to understand
implementation aspects of popular systems by means of case studies.
|
16:198:519
Operating Systems Theory (3)
Operating system basics; process management; synchronization, memory management; interprocess communication, network protocols, RPC, client-server architectures; file systems and distributed file systems; scheduling and security; current trends and case studies.
Prerequisite: 01:198:416 or 16:198:505 or equivalent.
|
16:198:520
Introduction to Artificial Intelligence (3)
Overview of artificial intelligence. Basic problems and methods; deductive inference, declarative programming, heuristic search; reasoning and representation in perception, planning, and learning.
Prerequisite: Admission requirements.
|
16:198:521
Linear Programming (3)
Linear inequalities, extreme points and rays, fundamental theorems. Optimality and duality. Geometric view. Primal and dual simplex methods. Degeneracy. Primal-dual method. Sensitivity. Basis factorization, implementation issues. Column generation. Structured models. Network simplex method and unimodularity. Polynomial-time algorithms for linear programming.
Prerequisites: Linear algebra and admission requirements.
|
16:198:522
Network and Combinatorial Optimization Algorithms (3)
Negative and minimum mean cycles. Maximum flows and minimum cuts. Combinatorial implications. Dynamic trees and scaling. Parametric flows. Minimum cost-flow networks. Generalized, multiterminal, and multicommodity flows. Sparsest cuts. Nonbipartite cardinality and weighted matching. T-joins. Spanning trees and matroids. Approximation algorithms.
Prerequisites: 16:198:503 or 513 or equivalent, elementary knowledge of linear programming, or permission of instructor.
|
16:198:523
Computer Graphics (3)
Introduction to computer image synthesis: modeling, animation, rendering, and geometric techniques. Topics include geometric transformations, modeling hierarchies, viewing and visibility, animation techniques, curve and surface design, lighting, shading, and ray tracing.
Prerequisites: 01:198:323, 344, 16:198:510 or 513; fluency in C or C++.
|
16:198:524
Nonlinear Programming Algorithms (3)
Convex sets and functions. Unconstrained and constrained optimization. First- and second-order optimality conditions. Duality theory. Conjugate and quasi-Newton methods. Line search and feasible direction methods. Quadratic programming, linear complementarity. Approaches to global optimization. Karmarkar's algorithm. Path-following Newton methods. Matrix scaling.
Prerequisites: 16:198:521 or equivalent; four semesters of calculus.
|
16:198:525
Brain-Inspired Computing (3)
Offers the opportunity to discover, and understand, how the human brain
computes to achieve intelligent behavior and how this knowledge guides the
development of new computational algorithms that mimic the neural activity. Introduces the use of computational methods for modeling the brain activity
from the micro (neural) to the macro (behavioral) level. Combines
theoretical lectures and hands-on tutorials on brain simulation environments
such as NEURON, NEST, Brian, and the Virtual Brain. At the end, students are expected to have expanded their knowledge of how the brain solves simple problems on the visual and motor domain, and how one can develop neuro-inspired algorithms to tackle emergent problems in computer science.
|
16:198:526
Advanced Numerical Analysis (3)
In-depth analysis of selected topics from the following: linear algebraic systems; computation of eigenvalues and eigenvectors; numerical solution of initial- and boundary-value problems for ordinary differential equations; spline and Fourier approximation.
Prerequisite: 16:198:510 or equivalent.
|
16:198:527
Computer Methods for Partial Differential Equations (3)
Principles of advanced numerical analysis and computer programming for the solution of partial differential equations. Introduction to finite element methods. Theory of stability and accuracy of methods for hyperbolic, parabolic, and elliptic problems. Emphasis on applications in science and engineering.
Prerequisites: Background in numerical analysis, computer programming, and elementary theory of partial differential equations.
|
16:198:528
Parallel Numerical Computing (3)
Analysis of numerical algorithms for a variety of parallel architectures. Parallelization of existing algorithms. Mapping of algorithms onto various architectures. Techniques for developing fast parallel numerical algorithms. Algorithms implemented on existing simulators or actual parallel machines.
Prerequisites: Numerical algorithms (01:198:323 or 16:198:510) and nonnumerical algorithms (01:198:344 or 16:198:503); basics of Unix, Fortran, or C.
|
16:198:529
Computational Geometry (3)
Design and analysis of algorithms for geometric problems. Topics include proof of lower bounds, convex hulls, searching and point location, plane sweep and arrangements of lines, Voronoi diagrams, intersection problems, decomposition and partitioning, farthest-pairs and closest-pairs, curved and rectilinear geometry.
Prerequisite: 16:198:513. Recommended: 16:198:514.
|
16:198:530
Principles of Artificial Intelligence (3)
Introduction to current research problems and methods in artificial intelligence. Models of real-world tasks, including uncertainty, reward, and causality; model-based reasoning for perception and action. Overview of current research applications.
Prerequisite: 01:198:440 or permission of instructor.
|
16:198:531
Artificial Intelligence Software: Techniques and Languages (3)
Programming tools needed to write or understand AI systems. Search, pattern matching, LISP, logic programming, objects and frames, and rules.
Prerequisite: 16:198:520.
|
16:198:532
Foundations of Knowledge Representation (3)
Knowledge representation problems in AI, with an emphasis on the use of logical techniques. Computational logic. Modal logics of time, action, knowledge, and belief. Formal analysis of reasoning that is not strictly deductive (e.g., nonmonotonic reasoning, abductive reasoning). Approaches to tractable reasoning.
Prerequisites: 16:198:509, 520, or permission of instructor.
|
16:198:533
Natural Language Processing (3)
Survey of models and reasoning required in computational systems that use natural language to communicate. Linguistic description and computational models of syntax, semantics, discourse, and conversation. Algorithms for parsing, generation, dialogue management, and collaboration.
Prerequisite: 16:198:530 or permission of instructor.
|
16:198:534
Computer Vision (3)
Provides an understanding of processes involved in formation of images of visual scenes; examines how computational approaches for transforming, estimating, or recognizing such images are formulated and implemented. Course also looks at where these methods can and have been applied. Stresses implementation and practical use of a wide variety of vision algorithms.
Prerequisite: 16:198:530 or permission of instructor.
|
16:198:535
Pattern Recognition Theory and Applications (3)
Pattern recognition as an inductive process, statistical classification, parametric and nonparametric methods, adaptive methods, error estimation, applications in image processing, character, speech recognition, and diagnostic decision making.
Prerequisite: 16:198:530.
|
16:198:536
Machine Learning (3)
Survey of machine learning, including decision-tree and rule-learning systems, neural networks, Bayesian approaches, nearest neighbor methods, PAC-learning, genetic algorithms, reinforcement learning, and inductive logic programming.
Prerequisite: 16:198:530 or permission of instructor.
|
16:198:538
Complexity of Computation (3)
Complexity classes, reducibilities, and complete sets. Relationships between time and space complexity, between serial and parallel computation, and among deterministic, probabilistic, and nondeterministic computation. Complexity theoretic notions of randomness.
Prerequisites: 16:198:509, 513.
|
16:198:539
Database Systems Implementation (3)
Implementing components of relational database systems (DBMS): record storage,
indexing structures, query evaluation, joins algorithms, query
optimization. Understanding and administering a DBMS: security,
concurrency control, and crash recovery. Tuning DBMS for performance.
Recent advances in data management: text-based information retrieval,
web search, cloud computing, column store systems. This class focuses on data management from a database administrator's, or implementer's,
perspective.
This course does not count as category B for Ph.D. students.
|
16:198:540
Combinatorial Methods in Complexity Theory (3)
Lower bounds in circuit, communication, and proof complexity. Interactive proof systems, approximation, and consequences.
Prerequisites: 16:198:509, 513.
|
16:198:541
Database Systems (3)
Relational data model. Relational query languages and their expressiveness. Dependency theory and relational normalization. Physical database design. Deductive databases and object-oriented databases. Optimization of relational queries.
Prerequisites: 01:198:336 or equivalent; 16:198:513. Recommended: 16:198:509 or equivalent.
|
16:198:545
Distributed Systems (3)
Basic mechanisms for building distributed systems (remote-procedure call, synchronization, transactions), components of distributed operating systems (file systems, distributed shared memory), and issues in wide-area distributed systems (security, wide-area clustering).
Prerequisite: 16:198:519.
|
16:198:546
Computer System Security (3)
Classic attacks, defenses, and techniques to build secure systems.
|
16:198:547
The Security and Dependability of Distributed Systems (3)
Foundations of secure distributed computing,
including: cryptographic tools, PKI, distributed access-control, trust over the internet, fault tolerance, system management, framing
distributed systems, reasoning about distributed systems.
|
16:198:552
Computer Networks (3)
Computer network protocols and architecture. Protocol design. Internetworking and TCP/IP. Medium access, routing, and traffic control. Network security. Integrated and differentiated services. Network programming. Network simulation.
Prerequisite: 01:198:416.
|
16:198:553
Design of Internet Services (3)
Internet applications, services, and programming models. Middleware, proxy caches, and directory services. Web server architecture and commodity clustering systems for scalable services. Electronic commerce. Multimedia streaming. Internet security and firewalls.
Prerequisite: 16:198:552.
|
16:198:554,555
Capstone I,II (3,3)
Capstone project.
|
16:198:580
Topics in Computers in Biomedicine (3)
Survey of computational methods in biology or medicine; topics vary from instructor to instructor and may include computational molecular biology, medical reasoning, and imaging.
Prerequisite: 16:198:513 or 520, depending on the semester, or permission of instructor.
|
16:198:587
Expert Systems (3)
Scope and characterization of expert systems. Consultation processes and expertise. Knowledge acquisition and representation. Methods of inference under uncertainty and problem-solving strategies. Review of existing expert systems and specialized languages.
Prerequisites: 16:198:530 and permission of instructor.
|
16:198:594
Topics in Programming Languages (3)
Advanced topics in the design and implementation of programming languages (e.g., compiling for parallel architectures, data-flow analysis and its applications, very high-level program optimization, automatic programming, and theory of programming languages).
Prerequisite: 16:198:515.
|
16:198:596
Topics in the Foundations of Computer Science (3)
Careful study of papers on the topic selected for the given semester. Examples include parallelism and zero-knowledge proofs, randomness and information theory, probabilistic aspects of computation, and topics in complexity theory.
Prerequisites: 16:198:509 and, depending on the topic, 16:198:538 and/or 539 and/or 540.
|
16:198:598
Topics in Artificial Intelligence (3)
A special topics course covering particular areas of research in artificial intelligence.
Prerequisite: 16:198:530 or permission of instructor.
|
16:198:601,602,603,604,605,606
Selected Problems in Computer Science (BA,BA,BA,BA,BA,BA)
In-depth study of a topic chosen by the student and professor.
Prerequisite: 6 graduate credits in computer science with grades of B+ or better.
|
16:198:671,672,673,674,675,676
Seminar in Computer Science (3,3,3,3,3,3)
Current research. Several seminars are given each semester.
Prerequisite: For advanced graduate students who have at least 18 graduate credits in computer science.
|
16:198:701,702,703
Research in Computer Science (BA,BA,BA)
Prerequisite: Permission of thesis adviser. For students working on their master's theses or doctoral dissertations.
|
16:198:704,705,706
(F,S,Su) Research in Computer Science--M.S. Thesis (BA,BA,BA)
|