# Graduate Courses

The faculty has approval to offer the following courses in the academic years 2017–2018 and 2018–2019; however, not all courses are taught each semester or summer session. Students should consult the *Course Schedule* to determine which courses and topics will be offered during a particular semester or summer session. The *Course Schedule* may also reflect changes made to the course inventory after the publication of this catalog.

### Computer Science: C S

##### C S 380C. Compilers.

Basics of static analysis and transformation techniques; exploration in depth of one aspect of compilation and optimization. Three lecture hours a week for one semester. Computer Science 380C and 395T (Topic: Compilers) may not both be counted. Prerequisite: Graduate standing; Computer Science 357 and 375 are recommended.

##### C S 380D. Distributed Computing I.

Models of distributed systems; language issues, proving properties of distributed systems; time, clocks, partial ordering of events; deadlock and termination detection; diffusing computations; computing in hostile environments; distributed resource management. Three lecture hours a week for one semester. Prerequisite: Graduate standing and Computer Science 372.

##### C S 380J. Operating Systems Implementation.

Seminar about how operating systems work. Readings and discussion about classic and recent research papers. Intensive programming assignments in the construction of a prototype operating system. Three lecture hours a week for one semester. Computer Science 380J and 395T (Topic: Operating Systems Implementation) may not both be counted. Prerequisite: Graduate standing; and an undergraduate course in operating systems, networking, or distributed systems, or consent of instructor.

##### C S 380L. Advanced Operating Systems.

Study of the formal structure, design principles, organization, implementation, and performance analysis of multiprogramming and/or multiprocessor computer systems. Three lecture hours a week for one semester. Prerequisite: Graduate standing, and Computer Science 372 or consent of instructor.

##### C S 380N. Systems Modeling.

Theory and applications of Markovian models: birth-death models, queueing models, and networks of queues. Numerical methods: computational algorithms, approximation techniques, discrete-event simulation. Performance of scheduling disciplines: priority, time-sharing, multiple access. Three lecture hours a week for one semester. Prerequisite: Graduate standing and an undergraduate course in probability theory.

##### C S 380P. Parallel Systems.

Explores parallel systems, from languages to hardware, from large-scale parallel computers to multicore chips, and from traditional parallel scientific computing to modern uses of parallelism. Includes discussion of and research methods in graphics, languages, compilers, architecture, and scientific computing. Three lecture hours a week for one semester. Computer Science 380P and 395T (Topic: Parallel Systems) may not both be counted. Prerequisite: Graduate standing.

##### C S 380S. Theory and Practice of Secure Systems.

Survey of modern security, designed to introduce the basic techniques used in the design and analysis of secure systems. Three lecture hours a week for one semester. Prerequisite: Graduate standing, and Computer Science 353 and 372 or consent of instructor.

##### C S 381K. Artificial Intelligence.

Use of computers in problem solving, game playing, theorem proving, natural language understanding, and related tasks; methods of search, knowledge representation, learning, and other topics. Three lecture hours a week for one semester. Prerequisite: Graduate standing, and Computer Science 351 or consent of instructor.

##### C S 381V. Visual Recognition.

Subjects include fundamental representations, learning approaches, matching-based algorithms, human activity models for video, and large-scale recognition. Three lecture hours a week for one semester. Computer Science 381V and 395T (Topic: Visual Recognition) may not both be counted. Prerequisite: Graduate standing; a background in basic computer vision and machine learning is recommended.

##### C S 382M. Advanced Computer Architecture.

Algorithms and their realizations, special techniques for coding, addressing, and control; integration of computer units; relations between programming and design considerations. Three lecture hours a week for one semester. Prerequisite: Graduate standing.

##### C S 383C. Numerical Analysis: Linear Algebra.

Same as Computational Science, Engineering, and Mathematics 383C, Mathematics 383E, and Statistics and Data Sciences 393C. Survey of numerical methods in linear algebra: floating-point computation, solution of linear equations, least squares problems, algebraic eigenvalue problems. Three lecture hours a week for one semester. Only one of the following may be counted: Computational Science, Engineering, and Mathematics 383C, Computer Science 383C, Mathematics 383E, Statistics and Data Sciences 393C, Statistics and Scientific Computation 393C. Prerequisite: Graduate standing; Computer Science 367 or Mathematics 368K; and Mathematics 340L, 341, or consent of instructor.

##### C S 383D. Numerical Analysis: Interpolation, Approximation, Quadrature, and Differential Equations.

Same as Computational Science, Engineering, and Mathematics 383D, Mathematics 383F, and Statistics and Data Sciences 393D. Survey of numerical methods for interpolation, functional approximation, integration, and solution of differential equations. Three lecture hours a week for one semester. Only one of the following may be counted: Computational Science, Engineering, and Mathematics 383D, Computer Science 383D, Mathematics 383F, Statistics and Data Sciences 393D, Statistics and Scientific Computation 393D. Prerequisite: Graduate standing; Computational Science, Engineering, and Mathematics 383C, Computer Science 383C, Mathematics 383E, or Statistics and Data Sciences 393C (or Statistics and Scientific Computation 393C); and Mathematics 427K and 365C, or consent of instructor.

##### C S 384G. Computer Graphics.

Same as Computational Science, Engineering, and Mathematics 382G. Advanced material in computer graphics, including in-depth treatments of techniques for realistic image synthesis, advanced geometric modeling methods, animation and dynamic simulation, scientific visualization, and high-performance graphics architectures. Three lecture hours a week for one semester. Computational Science, Engineering, and Mathematics 382G and Computer Science 384G may not both be counted. Prerequisite: Graduate standing; and Computer Science 354 or another introductory course in computer graphics, or equivalent background and consent of instructor.

##### C S 384M. Multimedia Systems.

Theoretical and practical issues in advanced systems, including multimedia systems, digital audio and video compression techniques, operating system and network support for digital audio and video, and multimedia conferencing systems. Three lecture hours a week for one semester. Prerequisite: Graduate standing; and either Computer Science 356 and 372 or 380D and 380L.

##### C S 384R. Geometric Modeling and Visualization.

Computational image processing, computational geometry and geometric modeling algorithms with an emphasis on spatial realism, and the programmatic use of physiological simulation and visualization to quantitatively depict how things work at the molecular, cellular, tissue, organ, and system levels. Three lecture hours a week for one semester. Computer Science 384R and 395T (Topic: Graphics, Modeling, and Visualization) may not both be counted; Computer Science 384R and 395T (Topic: Multiscale Bio-Modeling and Visualization) may not both be counted; Computer Science 384R and 395T (Topic: Physically Based Geometric Modeling) may not both be counted. Prerequisite: Graduate standing, and Computer Science 354 or consent of instructor.

##### C S 384V. Introduction to VLSI Design.

Basic techniques required to design custom negative metal oxide semiconductor digital integrated circuits. Three lecture hours a week for one semester. Prerequisite: Graduate standing, and Computer Science 352 or consent of instructor.

##### C S 386C. Dependable Computing Systems.

System models from synchronous to asynchronous, with emphasis on in-between models such as the timed asynchronous model. Control structures such as timed state-transition systems, and constraints in temporal and real-time logics. Analysis techniques such as model checking of timed systems, and extended Presburger arithmetic. Basic building blocks such as clock synchronization, synchronous atomic broadcast, time-bounded membership protocols, real-time scheduling theory, and state recovery methods. Practical implementation issues such as special operating system data structures and algorithms, open system design, and security concerns. Three lecture hours a week for one semester. Computer Science 386C and 395T (Topic: Dependable Computing Systems) may not both be counted. Prerequisite: Graduate standing, and an undergraduate course in operating systems or consent of instructor.

##### C S 386D. Database Systems.

Introduction to the principles of database systems, including fundamental ideas and algorithms used in the construction of centralized database management systems, distributed database management systems, and database machines and their roles in Internet infrastructure. Topics include data storage and indexing algorithms, query processing and optimization, concurrency control, recovery, XML and object-oriented databases, database evaluation and tuning, and recent directions in database research. Three lecture hours a week for one semester. Prerequisite: Graduate standing and Computer Science 347 and 375.

##### C S 386K. Numerical Treatment of Differential Equations.

The analysis of numerical methods for solving ordinary and partial differential equations. Three lecture hours a week for one semester. Prerequisite: Graduate standing; and , Computer Science 383D, Mathematics 368K, 383F, or consent of instructor.

##### C S 386L. Programming Languages.

Topics include formal syntax representations, program correctness, typing, and data abstraction. Features and problems in languages that allow parallelism. Exploration of different programming styles, such as imperative, functional, logic, data flow, and object-oriented programming. Three lecture hours a week for one semester. Prerequisite: Graduate standing, and Computer Science 345 or consent of instructor.

##### C S 386M. Communication Networks.

Switching techniques, network and protocol architectures, communication protocols, resource allocation problems, internetworking, design and analysis methods. Three lecture hours a week for one semester. Prerequisite: Graduate standing.

##### C S 386S. Network Protocol Security.

Techniques and research in Internet and network security. Three lecture hours a week for one semester. Computer Science 386S and 395T (Topic: Secure Network Protocols) may not both be counted. Prerequisite: Graduate standing.

##### C S 386W. Wireless Networking.

Fundamental concepts and principles of wireless network technologies and protocol design, ranging from physical layer to application layer, and in-depth studies of current wireless research. Three lecture hours a week for one semester. Computer Science 386W and 395T (Topic: Wireless Networking) may not both be counted. Prerequisite: Graduate standing.

##### C S 388. Natural Language Processing.

Computational methods for syntactic and semantic analysis of structures representing meanings of natural language; study of current natural language processing systems; methods for computing outlines and discourse structures of descriptive text. Three lecture hours a week for one semester. Prerequisite: Graduate standing, and a course in artificial intelligence or consent of instructor.

##### C S 388C. Combinatorics and Graph Theory.

Counting, matching theory, extremal set theory, Ramsey theory, probabilistic method, linear algebra method, coding theory. Applications to computer science, including randomized algorithms. Three lecture hours a week for one semester. Prerequisite: Graduate standing, and Computer Science 336 or the equivalent or consent of instructor. An understanding of elementary proof and counting techniques is assumed.

##### C S 388F. Automata and Formal Languages.

Formal grammars, languages and related classes of automata, language hierarchies, operations on languages, decidability, related complexity issues, closure properties, other classes of automata. Three lecture hours a week for one semester. Prerequisite: Graduate standing, and Linguistics 340 or consent of instructor.

##### C S 388G. Algorithms: Techniques and Theory.

Sorting and searching algorithms, graph algorithms, algorithm design techniques, lower bound theory, fast Fourier transforms, NP-completeness. Three lecture hours a week for one semester. Prerequisite: Graduate standing, and Computer Science 357 or the equivalent or consent of instructor.

##### C S 388H. Cryptography.

Surveys the foundations of cryptography from formal notions of security to fundamental protocols, including one-way functions, encryption, pseudorandom generators, signature schemes, and zero-knowledge. Three lecture hours a week for one semester. Prerequisite: Graduate standing, and Computer Science 353 or consent of instructor.

##### C S 388L. Introduction to Mathematical Logic.

Introduction to some of the principal topics of mathematical logic: propositional and predicate calculus; Goedel's completeness theorem; first-order theories; formalizing mathematical reasoning; first-order arithmetic; recursive functions; Goedel's incompleteness theorems; axiomatic set theory. Three lecture hours a week for one semester. Prerequisite: Graduate standing and experience in abstract mathematical thinking.

##### C S 388M. Communication Complexity.

Covers the most important models of communication complexity and their applications, including recent research results and various open problems. Three lecture hours a week for one semester. Computer Science 388M and 395T (Topic: Communication Complexity) may not both be counted. Prerequisite: Graduate standing.

##### C S 388P. Parallel Algorithms.

Parallel algorithm design on shared memory machines (PRAMs); parallel complexity results; lower bounds; relationship of PRAM model to other models of parallel computation. Three lecture hours a week for one semester. Prerequisite: Graduate standing; and Computer Science 357 or the equivalent, or Computer Science 388G, or consent of instructor.

##### C S 388R. Randomized Algorithms.

The design and analysis of efficient randomized algorithms. Three lecture hours a week for one semester. Computer Science 388R and 395T (Topic: Randomized Algorithms) may not both be counted. Prerequisite: Graduate standing, and Computer Science 357 or consent of instructor.

##### C S 388S. Formal Semantics and Verification.

Sequential execution: partial and total correctness; deductive, operational, and denotational semantics; formal derivation of programs; parallel execution: partial correctness, deadlock, and starvation; methodology, parallel versus distributed execution. Three lecture hours a week for one semester. Prerequisite: Graduate standing and consent of instructor.

##### C S 388T. Theory of Computation.

Models of computation, decidability, complexity theory, relations between complexity classes, reductions, and completeness; NP-complete problems, randomized computation; approximability; circuit complexity; parallel computation. Three lecture hours a week for one semester. Prerequisite: Graduate standing; and Computer Science 353 or 357 or consent of instructor.

##### C S 389L. Automated Logical Reasoning.

Subjects include automated reasoning techniques for propositional logic, first-order logic, linear arithmetic over reals and integers, theory of uninterpreted functions, and combinations of these theories. Examines automated logical reasoning both from a theoretical and practical perspective, giving a hands-on experience building useful tools, such as SAT and SMT solvers. Three lecture hours a week for one semester. Computer Science 389L and 395T (Topic: Automated Logical Reasoning) may not both be counted. Prerequisite: Graduate standing.

##### C S 389M. Principles of Object-Oriented Software Technology.

Fundamental principles of object-oriented software engineering, including design and implementation of object-oriented analysis methods, software architectures, translators of high-level programming language representations, translations to multiple-software architectures. Three lecture hours a week for one semester. Prerequisite: Graduate standing, Computer Science 371S or the equivalent, and consent of instructor.

##### C S 389R. Recursion and Induction I.

The development of a formal theory for reasoning about computer programs, with emphasis on recursively defined functions in the LISP style and proof by mathematical induction. Heavy emphasis on student discovery and presentation of proofs. Three lecture hours a week for one semester. Prerequisite: Graduate standing.

##### C S 390D. Distributed Computing II.

Synchronous and asynchronous algorithms, with particular emphasis on notations for expressing the algorithms and logics for reasoning about them. Algorithms from a variety of application areas and for a variety of architectures. Three lecture hours a week for one semester. Prerequisite: Graduate standing and Computer Science 380D.

##### C S 391D. Data Mining: A Mathematical Perspective.

Mathematical and statistical aspects of data mining. Topics include supervised learning (regression, classification, support vector machines) and unsupervised learning (clustering, principal components analysis, dimensionality reduction). Uses technical tools that draw from linear algebra, multivariate statistics, and optimization. Three lecture hours a week for one semester. Computer Science 391D and 395T (Topic: Data Mining: A Statistical Learning Perspective) may not both be counted. Prerequisite: Graduate standing, and Mathematics 341 or the equivalent.

##### C S 391K. Artificial Intelligence II.

Advanced course in artificial intelligence. Topics include planning, probabilistic reasoning, truth maintenance, abduction, model-based diagnosis, and speech recognition. Three lecture hours a week for one semester. Prerequisite: Graduate standing, and Computer Science 381K or equivalent knowledge of artificial intelligence and LISP.

##### C S 391L. Machine Learning.

Computing systems that automatically improve their performance with experience, including various approaches to inductive classification such as version space, decision tree, rule-based, neural network, Bayesian, and instance-based methods; as well as computational learning theory, explanation-based learning, and knowledge refinement. Three lecture hours a week for one semester. Prerequisite: Graduate standing, and Computer Science 381K or equivalent knowledge of artificial intelligence and LISP.

##### C S 392C. Methods and Techniques for Parallel Programming.

Models of parallel fundamental concepts for representation of parallel computation structures, study of representative parallel programming languages, formulation of languages and translation methods, translation of parallel programs to multiple targets, laboratory exercises in parallel programming. Three lecture hours a week for one semester. Prerequisite: Graduate standing and consent of instructor.

##### C S 392F. Automated Software Design.

Model driven engineering; metamodels, UML diagrams, constraints, transformations, software product lines, feature models, feature modularity, category theory, functors, commuting diagrams, program algebras, feature interactions, multi-dimensional separation of concerns, design-by-transformation, parallel software architectures, correct-by-construction, architecture refinement, optimization, and extension, program refactorings, design patterns, refactoring scripts. Three lecture hours a week for one semester. Computer Science 392F and 395T (Topic: Feature-Oriented Programming) may not both be counted. Prerequisite: Graduate standing, and a basic knowledge of Java, compilers and grammars, and object-oriented design methods.

##### C S 393C. Agent-Based Electronic Commerce.

Focuses on the intersection of computer science (including multiagent systems and machine learning), economics, and game theory. Explores economic mechanisms of exchange suitable for use by automated intelligent agents, including auctions and auction theory, game theory and mechanism design, and autonomous bidding agents. Students demonstrate programming proficiency in a trading agent competition. Three lecture hours a week for one semester. Computer Science 393C and 395T (Topic: Agent-Based Electronic Commerce) may not both be counted. Prerequisite: Graduate standing.

##### C S 393D. Topics in Numerical Analysis.

Recent topics have included numerical methods in ordinary differential equations, numerical methods in partial differential equations, computational problems in linear algebra, numerical solution of systems of equations, numerical methods in functional approximation, numerical integration. Three lecture hours a week for one semester. May be repeated for credit when the topics vary. Prerequisite: Graduate standing and consent of instructor.

##### C S 393N. Numerical Solution of Elliptic Partial Differential Equations.

Same as Mathematics 393N. The numerical solution of large systems of linear algebraic equations arising in the solution of elliptic partial differential equations by discretization methods. Three lecture hours a week for one semester. Computational Science, Engineering and Mathematics 393N and Mathematics 393N may not both be counted. Prerequisite: Graduate standing; and Computational Science, Engineering, and Mathematics 383K , Computer Science 386K, Mathematics 387C, or consent of instructor.

##### C S 393R. Autonomous Robots.

Covers the steps necessary to create and program fully functional teams of autonomous robots, including locomotion, object manipulation, vision (segmentation and object detection), localization, inter-robot communication, Kalman filters and control theory, individual behavior creation, and multiagent coordination and strategic reasoning. Three lecture hours a week for one semester. Computer Science 393R and 395T (Topic: Autonomous Robots) may not both be counted. Prerequisite: Graduate standing.

##### C S 394C. Algorithms for Computational Biology.

Algorithm design in computational molecular biology, with a focus on multiple sequence alignment and phylogeny (evolutionary history) reconstruction. Topics include the design and analysis of algorithms under probabilistic models of evolution, heuristics, and exact solutions for NP-hard optimization problems. Three lecture hours a week for one semester. Computer Science 394C and 395T (Topic: Algorithms for Computational Biology) may not both be counted. Prerequisite: Graduate standing, and Computer Science 357 or the equivalent.

##### C S 394F. Knowledge Representation and Reasoning.

Surveys the research and practice of building knowledge systems, including knowledge representation, automated reasoning, knowledge acquisition, and explanation generation. Three lecture hours a week for one semester. Prerequisite: Graduate standing; and Computer Science 381K or the equivalent or consent of instructor.

##### C S 394N. Neural Networks.

Biological information processing; architectures and algorithms for supervised learning, self-organization, reinforcement learning, and neuro-evolution; theoretical analysis; hardware implementations and simulators; applications in engineering, artificial intelligence, and cognitive science. Three lecture hours a week for one semester. Prerequisite: Graduate standing and consent of instructor.

##### C S 394P. Automatic Programming.

Automatic generation of computer programs from high-level specifications. Program analysis, optimization, and transformation; partial evaluation; object-oriented programming; transformation of formal specifications; specialization of generic procedures; views. Three lecture hours a week for one semester. Prerequisite: Graduate standing. Computer Science 375 and 381K are recommended.

##### C S 394R. Reinforcement Learning: Theory and Practice.

Introduces the theory and practice of modern reinforcement learning, with emphasis on temporal difference learning algorithms. Three lecture hours a week for one semester. Computer Science 394R and 395T (Topic: Reinforcement Learning: Theory and Practice) may not both be counted. Prerequisite: Graduate standing.

##### C S 195, 295, 395. Conference Course.

For each semester hour of credit earned, one lecture hour a week for one semester. Offered on the credit/no credit basis only. May be repeated for credit when the topics vary. Offered on the credit/no credit basis only. Prerequisite: Graduate standing and consent of instructor.

##### C S 195L, 295L, 395L. Conference Course.

For each semester hour of credit earned, one lecture hour a week for one semester. May be repeated for credit when the topics vary. Prerequisite: Graduate standing and consent of instructor.

##### C S 195T, 395T. Topics in Computer Science.

From eight to fifteen topics are offered each semester. One or three lecture hours a week for one semester. May be repeated for credit when the topics vary. Prerequisite: Graduate standing; additional prerequisites vary with the topic.

**Topic 1: Parallel Computations.**

##### C S 396. Research Practice and Experience.

Open only to those in their first two years as graduate students in computer science. Designed to provide an early research experience for new doctoral students in computer science. Students conduct an independent research project and present the results. Individual instruction. May not be counted toward a master's degree in computer science. Offered on the credit/no credit basis only. Prerequisite: Graduate standing.

##### C S 396M. Advanced Networking Protocols.

Topics include routing, multiple access, internetworking, security, performance models, and verification methods. Three lecture hours a week for one semester. Prerequisite: Graduate standing.

##### C S 698. Thesis.

The equivalent of three lecture hours a week for two semesters. Offered on the credit/no credit basis only. Prerequisite: For 698A, graduate standing in computer science and consent of the graduate adviser; for 698B, Computer Science 698A.

##### C S 398T. Supervised Teaching in Computer Science.

Supervised teaching experience, and seminar focused on curriculum construction and teaching methods. Three lecture hours a week for one semester. Offered on the credit/no credit basis only. Prerequisite: Graduate standing and appointment as a teaching assistant.

##### C S 399R, 699R, 999R. Dissertation.

Offered on the credit/no credit basis only. Prerequisite: Admission to candidacy for the doctoral degree.

##### C S 399W, 699W, 999W. Dissertation.

Offered on the credit/no credit basis only. Prerequisite: Computer Science 399R, 699R, or 999R.