skip to main content

Courses (2023-24)

Show Filters
CS 1
Introduction to Computer Programming
9 units (3-4-2)  | first, third terms

A course on computer programming emphasizing the program design process and pragmatic programming skills. It will use the Python programming language and will not assume previous programming experience. Material covered will include data types, variables, assignment, control structures, functions, scoping, compound data, string processing, modules, basic input/output (terminal and file), as well as more advanced topics such as recursion, exception handling and object-oriented programming. Program development and maintenance skills including debugging, testing, and documentation will also be taught. Assignments will include problems drawn from fields such as graphics, numerics, networking, and games. At the end of the course, students will be ready to learn other programming languages in courses such as CS 11, and will also be ready to take more in-depth courses such as CS 2 and CS 4.

Instructor: Hovik
CS 1 x
Intermediate Computer Programming
6 units (2-2-2)  | first term
Prerequisites: Enrollment by instructor permission only.

Students must be placed into this course via the CS placement test. An intermediate course on computer programming emphasizing the program design process and pragmatic programming skills. It will use the Java programming language and will assume previous programming experience such as an AP CS A course. Material will focus on more advanced topics such as recursion, exception handling and object-oriented programming. Program development and maintenance skills including debugging, testing, and documentation will also be taught. Assignments will include problems drawn from fields such as graphics, numerics, networking, and games. At the end of the course, students will be ready to learn other programming languages in courses such as CS 11, and will also be ready to take more in-depth courses such as CS 2 and CS 4

Instructor: Vanier
CS 2
Introduction to Programming Methods
9 units (3-5-1)  | second term
Prerequisites: CS 1 or equivalent.

CS 2 is a demanding course in programming languages and computer science. Topics covered include data structures, including lists, trees, and graphs; implementation and performance analysis of fundamental algorithms; algorithm design principles, in particular recursion and dynamic programming; Heavy emphasis is placed on the use of compiled languages and development tools, including source control and debugging. The course includes weekly laboratory exercises and projects covering the lecture material and program design. The course is intended to establish a foundation for further work in many topics in the computer science option.

Instructor: Blank
CS 3
Introduction to Software Design
9 units (2-6-1)  | third term
Prerequisites: CS 2 or equivalent.
CS 3 is a practical introduction to designing large programs in a low-level language. Heavy emphasis is placed on documentation, testing, and software architecture. Students will work in teams in two 5-week long projects. In the first half of the course, teams will focus on testing and extensibility. In the second half of the course, teams will use POSIX APIs, as well as their own code from the first five weeks, to develop a large software deliverable. Software engineering topics covered include code reviews, testing and testability, code readability, API design, refactoring, and documentation.
Instructor: Blank
CS 4
Fundamentals of Computer Programming
9 units (3-4-2)  | second term
Prerequisites: CS 1 or instructor's permission.

This course gives students the conceptual background necessary to construct and analyze programs, which includes specifying computations, understanding evaluation models, and using major programming language constructs (functions and procedures, conditionals, recursion and looping, scoping and environments, compound data, side effects, higher-order functions and functional programming, and object-oriented programming). It emphasizes key issues that arise in programming and in computation in general, including time and space complexity, choice of data representation, and abstraction management. This course is intended for students with some programming background who want a deeper understanding of the conceptual issues involved in computer programming.

Instructor: Vanier
Ma/CS 6/106 abc
Introduction to Discrete Mathematics
9 units (3-0-6)  | first, second, third terms
Prerequisites: for Ma/CS 6 c, Ma/CS 6 a or Ma 5 a or instructor's permission.
First term: a survey emphasizing graph theory, algorithms, and applications of algebraic structures. Graphs: paths, trees, circuits, breadth-first and depth-first searches, colorings, matchings. Enumeration techniques; formal power series; combinatorial interpretations. Topics from coding and cryptography, including Hamming codes and RSA. Second term: directed graphs; networks; combinatorial optimization; linear programming. Permutation groups; counting nonisomorphic structures. Topics from extremal graph and set theory, and partially ordered sets. Third term: syntax and semantics of propositional and first-order logic. Introduction to the Godel completeness and incompleteness theorems. Elements of computability theory and computational complexity. Discussion of the P=NP problem.
Instructors: T. Yu, Gherman, Kechris
CS 9
Introduction to Computer Science Research
1 unit (1-0-0)  | first term

This course will introduce students to research areas in CS through weekly overview talks by Caltech faculty and aimed at first-year undergraduates. More senior students may wish to take the course to gain an understanding of the scope of research in computer science. Graded pass/fail.

Instructor: Low
IDS 9
Introduction to Information and Data Systems Research
1 unit (1-0-0)  | second term

This course will introduce students to research areas in IDS through weekly overview talks by Caltech faculty and aimed at first-year undergraduates. Others may wish to take the course to gain an understanding of the scope of research in computer science. Graded pass/fail. Not offered 2023-24.

Instructor: Staff
EE/CS 10 ab
Introduction to Digital Logic and Embedded Systems
6 units (2-3-1)  | second, third terms

This course is intended to give the student a basic understanding of the major hardware and software principles involved in the specification and design of embedded systems. The course will cover basic digital logic, programmable logic devices, CPU and embedded system architecture, and embedded systems programming principles (interfacing to hardware, events, user interfaces, and multi-tasking).

Instructor: George
ACM 11
Introduction to Computational Science and Engineering
6 units (2-2-2)  | third term
Prerequisites: Ma 1 ab, Co-requisite Ma 1 c. CS 1 or prior programming experience recommended.

This course is intended to serve as a practical introduction to the methods of computational science and engineering for students in all majors. The goal is to provide students exposure to and hands-on experience with commonly-used computational methods in science and engineering, with theoretical considerations confined to a level appropriate for first-year undergraduate students. Topics covered include computational simulation by discretization in space and time, numerical solution of linear and nonlinear equations, optimization, uncertainty quantification, and function approximation via interpolation and regression. Emphasis is on understanding trade-offs between computational effort and accuracy, and on developing working knowledge of how these tools can be used to solve a wide range of problems arising in applied math, science, and engineering. Assignments and in-class activities use MATLAB. No prior experience with MATLAB expected.

Instructor: Baptista
CS 11
Computer Language Lab
3 units (0-3-0)  | first, second terms
Prerequisites: CS 1 or instructor's permission.

A self-paced lab that provides students with extra practice and supervision in transferring their programming skills to a particular programming language. The course can be used for any language of the student's choosing, subject to approval by the instructor. A series of exercises guide students through the pragmatic use of the chosen language, building their familiarity, experience, and style. More advanced students may propose their own programming project as the target demonstration of their new language skills. This course is available for undergraduate students only. Graduate students should register for CS 111. CS 11 may be repeated for credit of up to a total of nine units.

Instructor: Vanier
CS 12
Student-Taught Topics in Computing
variable units between 1 and 9  | first, second, third terms
Prerequisites: CS 1 or instructor's permission.

Each section covers a topic in computing with associated sets or projects. Sections are designed and taught by an undergraduate student under the supervision of a CMS faculty member. CS 12 may be repeated for credit of up to a total of nine units.

Instructor: Staff
CS 13
Mathematical Foundations of Computer Science
9 units (3-0-6)  | first term
Prerequisites: CS 1.
This course introduces key mathematical concepts used in computer science, and in particular it prepares students for proof-based CS courses such as CS 21 and CS 38. Mathematical topics are illustrated via applications in Computer Science. CS 1 is a co-requisite as there will be a small number of programming assignments. The course covers basic set theory, induction and inductive structures (e.g., lists and trees), asymptotic analysis, and elementary combinatorics, number theory, and graph theory. Applications include number representation, basic cryptography, basic algorithms on trees, numbers, and polynomials, social network graphs, compression, and simple error-correcting codes.
Instructor: Blank
CS 19 ab
Introduction to Computer Science in Industry
2 units (1-0-1)  | first, second terms

This course will introduce students to CS in industry through weekly overview talks by alums and engineers in industry. It is aimed at first and second year undergraduates. Others may wish to take the course to gain an understanding of the scope of computer science in industry. Additionally students will complete short weekly assignments aimed at preparing them for interactions with industry. Graded pass/fail. Part b not offered 2023-24.

Instructor: Ralph
CS 21
Decidability and Tractability
9 units (3-0-6)  | second term
Prerequisites: CS 2 (may be taken concurrently).

This course introduces the formal foundations of computer science, the fundamental limits of computation, and the limits of efficient computation. Topics will include automata and Turing machines, decidability and undecidability, reductions between computational problems, and the theory of NP-completeness.

Instructor: Umans
CS 22
Data Structures & Parallelism
9 units (3-6-0)  | second term
Prerequisites: CS 2 or instructor's permission.

CS 22 is a demanding course that covers implementation, correctness, and analysis of data structures and some parallel algorithms. This course is intended for students who have already taken a data structures course at the level of CS 2. Topics include implementation and analysis of skip lists, trees, hashing, and heaps as well as various algorithms (including string matching, parallel sorting, parallel prefix). The course includes weekly written and programming assignments covering the lecture material. Not offered 2023-24.

Instructor: Blank
CS 24
Introduction to Computing Systems
9 units (3-3-3)  | first term
Prerequisites: CS 2 and CS 3.

Basic introduction to computer systems, including hardware-software interface, computer architecture, and operating systems. Course emphasizes computer system abstractions and the hardware and software techniques necessary to support them, including virtualization (e.g., memory, processing, communication), dynamic resource management, and common-case optimization, isolation, and naming.

Instructor: Blank
CS 38
Algorithms
9 units (3-0-6)  | third term
Prerequisites: CS 2; Ma/CS 6 a or Ma 121 a; and CS 21.

This course introduces techniques for the design and analysis of efficient algorithms. Major design techniques (the greedy approach, divide and conquer, dynamic programming, linear programming) will be introduced through a variety of algebraic, graph, and optimization problems. Methods for identifying intractability (via NP-completeness) will be discussed.

Instructor: Schröder
CS 42
Computer Science Education in K-14 Settings
6 units (2-2-2)  | second, third terms

This course will focus on computer science education in K-14 settings. Students will gain an understanding of the current state of computer science education within the United States, develop curricula targeted at students from diverse backgrounds, and gain hands on teaching experience. Through readings from educational psychology and neuropsychology, students will become familiar with various pedagogical methods and theories of learning, while applying these in practice as part of a teaching group partnered with a local school or community college. Each week students are expected to spend about 2 hours teaching, 2 hours developing curricula, and 2 hours on readings and individual exercises. Pass/Fail only. May not be repeated.

Instructors: Ralph, Wierman
CS/EE/ME 75 abc
Multidisciplinary Systems Engineering
3 units (2-0-1), 6 units (2-0-4), or 9 units (2-0-7) first term; 6 units (2-3-1), 9 units (2-6-1), or 12 units (2-9-1) second and third terms  | first, second, third terms

This course presents the fundamentals of modern multidisciplinary systems engineering in the context of a substantial design project. Students from a variety of disciplines will conceive, design, implement, and operate a system involving electrical, information, and mechanical engineering components. Specific tools will be provided for setting project goals and objectives, managing interfaces between component subsystems, working in design teams, and tracking progress against tasks. Students will be expected to apply knowledge from other courses at Caltech in designing and implementing specific subsystems. During the first two terms of the course, students will attend project meetings and learn some basic tools for project design, while taking courses in CS, EE, and ME that are related to the course project. During the third term, the entire team will build, document, and demonstrate the course design project, which will differ from year to year. First-year undergraduate students must receive permission from the lead instructor to enroll.

Instructor: Chung
ACM 80 abc
Undergraduate Thesis
9 units  | first, second, third terms
Prerequisites: instructor's permission, which should be obtained sufficiently early to allow time for planning the research.

Individual research project, carried out under the supervision of a member of the ACM faculty (or other faculty as approved by the ACM undergraduate option representative). Projects must include significant design effort. Written report required. Open only to upper class students. Not offered on a pass/fail basis.

Instructor: Staff
CS 80 abc
Undergraduate Thesis
9 units  | first, second, third terms
Prerequisites: instructor's permission, which should be obtained sufficiently early to allow time for planning the research.

Individual research project, carried out under the supervision of a member of the computer science faculty (or other faculty as approved by the computer science undergraduate option representative). Projects must include significant design effort. Written report required. Open only to upperclass students. Not offered on a pass/fail basis.

Instructor: Staff
ACM 81 abc
Undergraduate Projects in Applied and Computational Mathematics
Units are assigned in accordance with work accomplished  | first, second, third terms
Prerequisites: Consent of supervisor is required before registering.

Supervised research or development in ACM by undergraduates. The topic must be approved by the project supervisor, and a formal final report must be presented on completion of research. Graded pass/fail.

Instructor: Staff
CS 81 abc
Undergraduate Projects in Computer Science
Units are assigned in accordance with work accomplished 
Prerequisites: Consent of supervisor is required before registering.

Supervised research or development in computer science by undergraduates. The topic must be approved by the project supervisor, and a formal final report must be presented on completion of research. This course can (with approval) be used to satisfy the project requirement for the CS major. Graded pass/fail.

Instructor: Staff
CDS 90 abc
Senior Thesis in Control and Dynamical Systems
9 units (0-0-9)  | first, second, third terms
Prerequisites: CDS 110 or CDS 112 (may be taken concurrently).

Research in control and dynamical systems, supervised by a Caltech faculty member. The topic selection is determined by the adviser and the student and is subject to approval by the CDS faculty. First and second terms: midterm progress report and oral presentation during finals week. Third term: completion of thesis and final presentation. Not offered on a pass/fail basis.

Instructor: Staff
CS 90
Undergraduate Reading in Computer Science
Units are assigned in accordance with work accomplished 
Prerequisites: Consent of supervisor is required before registering.

Supervised reading in computer science by undergraduates. The topic must be approved by the reading supervisor, and a formal final report must be presented on completion of the term. Graded pass/fail.

Instructor: Staff
ACM 95/100 ab
Introductory Methods of Applied Mathematics for the Physical Sciences
12 units (4-0-8)  | second, third terms
Prerequisites: Ma 1 abc, Ma 2 or equivalents.

Complex analysis: analyticity, Laurent series, contour integration, residue calculus. Ordinary differential equations: linear initial value problems, linear boundary value problems, Sturm-Liouville theory, eigenfunction expansions, transform methods, Green's functions. Linear partial differential equations: heat equation, separation of variables, Laplace equation, transform methods, wave equation, method of characteristics, Green's functions.

Instructors: Hoffmann, Meiron
ACM/IDS 101 ab
Methods of Applied Mathematics
12 units (4-4-4)  | first, second terms
Prerequisites: Math 2/102 and ACM 95 ab or equivalent.

First term: Brief review of the elements of complex analysis and complex-variable methods. Asymptotic expansions, asymptotic evaluation of integrals (Laplace method, stationary phase, steepest descents), perturbation methods, WKB theory, boundary-layer theory, matched asymptotic expansions with first-order and high-order matching. Method of multiple scales for oscillatory systems. Second term: Applied spectral theory, special functions, generalized eigenfunction expansions, convergence theory. Gibbs and Runge phenomena and their resolution. Chebyshev expansion and Fourier Continuation methods. Review of numerical stability theory for time evolution. Fast spectrally-accurate PDE solvers for linear and nonlinear Partial Differential Equations in general domains. Integral-equations methods for linear partial differential equation in general domains (Laplace, Helmholtz, Schroedinger, Maxwell, Stokes). Homework problems in both 101 a and 101 b include theoretical questions as well as programming implementations of the mathematical and numerical methods studied in class.

Instructor: Bruno
CS 101
Special Topics in Computer Science
Units in accordance with work accomplished  | Offered by announcement.
Prerequisites: CS 21 and CS 38, or instructor's permission.

The topics covered vary from year to year, depending on the students and staff. Primarily for undergraduates.

Instructor: Bouman
CS 102 abc
Seminar in Computer Science
3, 6, or 9 units as arranged with the instructor 

Instructor's permission required.

Instructor: Staff
CS 103 abc
Reading in Computer Science
3, 6, or 9 units as arranged with the instructor 

Instructor's permission required.

Instructor: Staff
ACM/IDS 104
Applied Linear Algebra
9 units (3-1-5)  | first term
Prerequisites: Ma 1 abc, some familiarity with MATLAB, e.g. ACM 11 is desired.

This is an intermediate linear algebra course aimed at a diverse group of students, including junior and senior majors in applied mathematics, sciences and engineering. The focus is on applications. Matrix factorizations play a central role. Topics covered include linear systems, vector spaces and bases, inner products, norms, minimization, the Cholesky factorization, least squares approximation, data fitting, interpolation, orthogonality, the QR factorization, ill-conditioned systems, discrete Fourier series and the fast Fourier transform, eigenvalues and eigenvectors, the spectral theorem, optimization principles for eigenvalues, singular value decomposition, condition number, principal component analysis, the Schur decomposition, methods for computing eigenvalues, non-negative matrices, graphs, networks, random walks, the Perron-Frobenius theorem, PageRank algorithm.

Instructor: Zuev
ACM 105
Applied Real and Functional Analysis
9 units (3-0-6)  | second term
Prerequisites: Ma 2, Ma 108 a, ACM/IDS 104 or equivalent.

This course is about the fundamental concepts in real and functional analysis that are vital for many topics and applications in mathematics, physics, computing and engineering. The aim of this course is to provide a working knowledge of functional analysis with an eye especially for aspects that lend themselves to applications. The course gives an overview of the interplay between different functional spaces and focuses on the following three key concepts: Hahn-Banach theorem, open mapping and closed graph theorem, uniform boundedness principle. Other core concepts include: normed linear spaces and behavior of linear maps, completeness, Banach spaces, Hilbert spaces, Lp spaces, duality of normed spaces and dual operators, dense subspaces and approximations, hyperplanes, compactness, weak and weak* convergence. More advanced topics include: spectral theory, compact operators, theory of distributions (generalized functions), Fourier analysis, calculus of variations, Sobolev spaces with applications to PDEs, weak solvability theory of boundary value problems. Not offered 2023-24.

Instructor: Leong
ACM/EE 106 ab
Introductory Methods of Computational Mathematics
12 units (3-0-9)  | first, second terms
Prerequisites: For ACM/EE 106 a, Ma 1 abc, Ma 2, Ma 3, ACM 11; for ACM/EE 106 b, ACM 95/100 ab or equivalent.

The sequence covers the introductory methods in both theory and implementation of numerical linear algebra, approximation theory, ordinary differential equations, and partial differential equations. The linear algebra parts cover basic methods such as direct and iterative solution of large linear systems, including LU decomposition, splitting method (Jacobi iteration, Gauss-Seidel iteration); eigenvalue and vector computations including the power method, QR iteration and Lanczos iteration; nonlinear algebraic solvers. The approximation theory includes data fitting; interpolation using Fourier transform, orthogonal polynomials and splines; least square method, and numerical quadrature. The ODE parts include initial and boundary value problems. The PDE parts include finite difference and finite element for elliptic/parabolic/hyperbolic equations. Study of numerical PDE will include stability analysis. Programming is a significant part of the course.

Instructor: Hou
CMS/ACM/IDS 107 ab
Linear Analysis with Applications
12 units (3-0-9)  | first, second terms
Prerequisites: ACM/IDS 104 or equivalent, Ma 1b or equivalent.
Part a: Covers the basic algebraic, geometric, and topological properties of normed linear spaces, inner-product spaces and linear maps. Emphasis is placed both on rigorous mathematical development and on applications to control theory, data analysis and partial differential equations. Topics: Completeness, Banach spaces (l_p, L_p), Hilbert spaces (weighted l_2, L_2 spaces), introduction to Fourier transform, Fourier series and Sobolev spaces, Banach spaces of linear operators, duality and weak convergence, density, separability, completion, Schauder bases, continuous and compact embedding, compact operators, orthogonality, Lax-Milgram, Spectral Theorem and SVD for compact operators, integral operators, Jordan normal form. Part b: Continuation of ACM 107a, developing new material and providing further details on some topics already covered. Emphasis is placed both on rigorous mathematical development and on applications to control theory, data analysis and partial differential equations.Topics: Review of Banach spaces, Hilbert spaces, Linear Operators, and Duality, Hahn-Banach Theorem, Open Mapping and Closed Graph Theorem, Uniform Boundedness Principle, The Fourier transform (L1, L2, Schwartz space theory), Sobolev spaces (W^s,p, H^s), Sobolev embedding theorem, Trace theorem Spectral Theorem, Compact operators, Ascoli Arzela theorem, Contraction Mapping Principle, with applications to the Implicit Function Theorem and ODEs, Calculus of Variations (differential calculus, existence of extrema, Gamma-convergence, gradient flows) Applications to Inverse Problems (Tikhonov regularization, imaging applications).
Instructors: Leong, Stuart
ACM 109
Mathematical Modelling
9 units (3-0-6)  | third term

Prerequisites ACM 95/100 ab or equivalent. This course gives an overview of different mathematical models used to describe a variety of phenomena arising in the biological, engineering, physical and social sciences. Emphasis will be placed on the principles used to develop these models, and on the unity and cross-cutting nature of the mathematical and computational tools used to study them. Applications will include quantum, atomistic and continuum modeling of materials; epidemics, reacting-diffusing systems; crowd modeling and opinion formation. Mathematical tools will include ordinary, partial and stochastic differential equations, as well as Markov chains and other stochastic processes. Not offered 2023-24.

Instructor: Stuart
CDS 110
Analysis and Design of Feedback Control Systems
9 units (3-3-3)  | third term
Prerequisites: Ma 1 abc and Ma 2/102 or equivalents.
An introduction to analysis and design of feedback control systems in the time and frequency domain, with an emphasis on state space methods, robustness, and design tradeoffs. Linear input/output systems, including input/output response via convolution, reachability, and observability. State feedback methods, including eigenvalue placement, linear quadratic regulators, and model predictive control. Output feedback including estimators and two-degree of freedom design. Input/output modeling via transfer functions and frequency domain analysis of performance and robustness, including the use of Bode and Nyquist plots. Robustness, tradeoffs and fundamental limits, including the effects of external disturbances and unmodeled dynamics, sensitivity functions, and the Bode integral formula.
Instructor: Murray
HPS/Pl/CS 110
Causation and Explanation
9 units (3-0-6)  | second term

An examination of theories of causation and explanation in philosophy and neighboring disciplines. Topics discussed may include probabilistic and counterfactual treatments of causation, the role of statistical evidence and experimentation in causal inference, and the deductive-nomological model of explanation. The treatment of these topics by important figures from the history of philosophy such as Aristotle, Descartes, and Hume may also be considered.

Instructor: Eberhardt
CS 111
Graduate Programming Practicum
3 units (0-3-0)  | first, second terms
Prerequisites: CS 1 or equivalent.

A self-paced lab that provides students with extra practice and supervision in transferring their programming skills to a particular programming language. The course can be used for any language of the student's choosing, subject to approval by the instructor. A series of exercises guide the student through the pragmatic use of the chosen language, building their familiarity, experience, and style. More advanced students may propose their own programming project as the target demonstration of their new language skills. This course is available for graduate students only. CS 111 may be repeated for credit of up to a total of nine units. Undergraduates should register for CS 11.

Instructor: Vanier
Ec/ACM/CS 112
Bayesian Statistics
9 units (3-0-6)  | second term
Prerequisites: Ma 3, ACM/EE/IDS 116 or equivalent.

This course provides an introduction to Bayesian Statistics and its applications to data analysis in various fields. Topics include: discrete models, regression models, hierarchical models, model comparison, and MCMC methods. The course combines an introduction to basic theory with a hands-on emphasis on learning how to use these methods in practice so that students can apply them in their own work. Previous familiarity with frequentist statistics is useful but not required.

Instructor: Rangel
CMS/ACM/IDS 113
Mathematical Optimization
12 units (3-0-9)  | first term
Prerequisites: ACM 11 and ACM 104, or instructor's permission.
This class studies mathematical optimization from the viewpoint of convexity. Topics covered include duality and representation of convex sets; linear and semidefinite programming; connections to discrete, network, and robust optimization; relaxation methods for intractable problems; as well as applications to problems arising in graphs and networks, information theory, control, signal processing, and other engineering disciplines.
Instructor: Chandrasekaran
CS 115
Functional Programming
9 units (3-4-2)  | third term
Prerequisites: CS 1 and CS 4.

This course is a both a theoretical and practical introduction to functional programming, a paradigm which allows programmers to work at an extremely high level of abstraction while simultaneously avoiding large classes of bugs that plague more conventional imperative and object-oriented languages. The course will introduce and use the lazy functional language Haskell exclusively. Topics include: recursion, first-class functions, higher-order functions, algebraic data types, polymorphic types, function composition, point-free style, proving functions correct, lazy evaluation, pattern matching, lexical scoping, type classes, and modules. Some advanced topics such as monad transformers, parser combinators, dynamic typing, and existential types are also covered.

Instructor: Vanier
ACM/EE/IDS 116
Introduction to Probability Models
9 units (3-1-5)  | first term
Prerequisites: Ma 3 or EE 55, some familiarity with MATLAB, e.g. ACM 11, is desired.

This course introduces students to the fundamental concepts, methods, and models of applied probability and stochastic processes. The course is application oriented and focuses on the development of probabilistic thinking and intuitive feel of the subject rather than on a more traditional formal approach based on measure theory. The main goal is to equip science and engineering students with necessary probabilistic tools they can use in future studies and research. Topics covered include sample spaces, events, probabilities of events, discrete and continuous random variables, expectation, variance, correlation, joint and marginal distributions, independence, moment generating functions, law of large numbers, central limit theorem, random vectors and matrices, random graphs, Gaussian vectors, branching, Poisson, and counting processes, general discrete- and continuous-timed processes, auto- and cross-correlation functions, stationary processes, power spectral densities.

Instructor: Zuev
CS 116
Reasoning about Program Correctness
9 units (3-0-6)  | first term
Prerequisites: CS 1 or equivalent.

This course presents the use of logic and formal reasoning to prove the correctness of sequential and concurrent programs. Topics in logic include propositional logic, basics of first-order logic, and the use of logic notations for specifying programs. The course presents a programming notation and its formal semantics, Hoare logic and its use in proving program correctness, predicate transformers and weakest preconditions, and fixed-point theory and its application to proofs of programs. Not offered 2023-24.

Instructor: Staff
CMS/ACM 117
Probability Theory and Computational Mathematics
12 units (3-0-9)  | first term
Prerequisites: ACM 104 and ACM 116; or instructor's permission.
This course offers a rigorous introduction to probability theory with applications to computational mathematics. Emphasis is placed on nonasymptotic properties of probability models, rather than classical limit theorems. Topics include measure theory, integration, product measures, probability spaces, random variables and expectation, moments, Lp spaces, orthogonality, independence, concentration inequalities, distances between probability measures, the Berry-Esseen theorem, conditional expectation, and conditioning for Gaussian families.
Instructor: Tropp
Ma/CS 117 abc
Computability Theory
9 units (3-0-6)  | first, second, third terms
Prerequisites: Ma 5 or equivalent, or instructor's permission.

Various approaches to computability theory, e.g., Turing machines, recursive functions, Markov algorithms; proof of their equivalence. Church's thesis. Theory of computable functions and effectively enumerable sets. Decision problems. Undecidable problems: word problems for groups, solvability of Diophantine equations (Hilbert's 10th problem). Relations with mathematical logic and the Gödel incompleteness theorems. Decidable problems, from number theory, algebra, combinatorics, and logic. Complexity of decision procedures. Inherently complex problems of exponential and superexponential difficulty. Feasible (polynomial time) computations. Polynomial deterministic vs. nondeterministic algorithms, NP-complete problems and the P = NP question. Not offered 2023-24.

ACM 118
Stochastic Processes and Regression
12 units (3-0-9)  | second term
Prerequisites: CMS/ACM/IDS 107 or equivalent, CMS 117 or equivalent, or permission of the instructor.

Stochastic processes: Branching processes, Poisson point processes, Determinantal point processes, Dirichlet processes and Gaussian processes (including the Brownian motion). Regression: Gaussian vectors, spaces, conditioning, processes, fields and measures will be presented with an emphasis on linear regression. Kernel and variational methods in numerical approximation, signal processing and learning will also be covered through their connections with Gaussian process regression.

Instructor: Owhadi
CS 118
Automata-Theoretic Software Analysis
9 units (3-3-3)  | second term

An introduction to the use of automata theory in the formal analysis of both concurrent and sequentially executing software systems. The course covers the use of logic model checking with linear temporal logic and interactive techniques for property-based static source code analysis.

Instructor: Holzmann
EE/CS 119 abc
Advanced Digital Systems Design
9 units (3-3-3)  | first, second terms
Prerequisites: EE/CS 10 a or CS 24.
Advanced digital design as it applies to the design of systems using PLDs and ASICs (in particular, gate arrays and standard cells). The course covers both design and implementation details of various systems and logic device technologies. The emphasis is on the practical aspects of ASIC design, such as timing, testing, and fault grading. Topics include synchronous design, state machine design, arithmetic circuit design, application-specific parallel computer design, design for testability, CPLDs, FPGAs, VHDL, standard cells, timing analysis, fault vectors, and fault grading. Students are expected to design and implement both systems discussed in the class as well as self-proposed systems using a variety of technologies and tools.
Instructor: George
CS/Ph 120
Quantum Cryptography
9 units (3-0-6)  | first term
Prerequisites: Ma 1 b, Ph 2 b or Ph 12 b, CS 21, CS 38 or equivalent recommended (or instructor's permission).

This course is an introduction to quantum cryptography: how to use quantum effects, such as quantum entanglement and uncertainty, to implement cryptographic tasks with levels of security that are impossible to achieve classically. The course covers the fundamental ideas of quantum information that form the basis for quantum cryptography, such as entanglement and quantifying quantum knowledge. We will introduce the security definition for quantum key distribution and see protocols and proofs of security for this task. We will also discuss the basics of device-independent quantum cryptography as well as other cryptographic tasks and protocols, such as bit commitment or position-based cryptography. Not offered 2023-24.

Instructor: Staff
CS/IDS 121
Relational Databases
9 units (3-0-6)  | second term
Prerequisites: CS 1 or equivalent.

Introduction to the basic theory and usage of relational database systems. It covers the relational data model, relational algebra, and the Structured Query Language (SQL). The course introduces the basics of database schema design and covers the entity-relationship model, functional dependency analysis, and normal forms. Additional topics include other query languages based on the relational calculi, data-warehousing and dimensional analysis, writing and using stored procedures, working with hierarchies and graphs within relational databases, and an overview of transaction processing and query evaluation. Extensive hands-on work with SQL databases.

Instructor: Hovik
CMS/ACM/EE 122
Mathematical Optimization
12 units (3-0-9)  | first term
Prerequisites: ACM 11 and ACM 104, or instructor's permission.

This class studies mathematical optimization from the viewpoint of convexity. Topics covered include duality and representation of convex sets; linear and semidefinite programming; connections to discrete, network, and robust optimization; relaxation methods for intractable problems; as well as applications to problems arising in graphs and networks, information theory, control, signal processing, and other engineering disciplines.

Instructor: Chandrasekaran
CS 124
Operating Systems
12 units (3-6-3)  | third term
Prerequisites: CS 24.

This course explores the major themes and components of modern operating systems, such as kernel architectures, the process abstraction and process scheduling, system calls, concurrency within the OS, virtual memory management, and file systems. Students must work in groups to complete a series of challenging programming projects, implementing major components of an instructional operating system. Most programming is in C, although some IA32 assembly language programming is also necessary. Familiarity with the material in CS 24 is strongly advised before attempting this course.

Instructor: Pinkston
EE/CS/MedE 125
Digital Circuit Design with FPGAs and VHDL
9 units (3-6-0)  | third term
Prerequisites: EE/CS 10 or equivalent.

Study of programmable logic devices (FPGAs). Detailed study of the VHDL language, accompanied by tutorials of popular synthesis and simulation tools. Review of combinational circuits (both logic and arithmetic), followed by VHDL code for combinational circuits and corresponding FPGA-implemented designs. Review of sequential circuits, followed by VHDL code for sequential circuits and corresponding FPGA-implemented designs. Review of finite state machines, followed by VHDL code for state machines and corresponding FPGA-implemented designs. Final project. The course includes a wide selection of real-world projects, implemented and tested using FPGA boards. Not offered 2023-24.

Instructor: Staff
EE/Ma/CS 126 ab
Information Theory
9 units (3-0-6)  | first, second terms
Prerequisites: Ma 3.

Shannon's mathematical theory of communication, 1948-present. Entropy, relative entropy, and mutual information for discrete and continuous random variables. Shannon's source and channel coding theorems. Mathematical models for information sources and communication channels, including memoryless, Markov, ergodic, and Gaussian. Calculation of capacity and rate-distortion functions. Universal source codes. Side information in source coding and communications. Network information theory, including multiuser data compression, multiple access channels, broadcast channels, and multiterminal networks. Discussion of philosophical and practical implications of the theory. This course, when combined with EE 112, EE/Ma/CS/IDS 127, EE/CS 161, and EE/CS/IDS 167, should prepare the student for research in information theory, coding theory, wireless communications, and/or data compression.

Instructors: Effros, Hamkins
IDS/Ec/PS 126
Applied Data Analysis
9 units (3-0-6)  | first term
Prerequisites: Ma 3/103 or ACM/EE/IDS 116, Ec 122 or IDS/ACM/CS 157 or Ma 112 a.

Fundamentally, this course is about making arguments with numbers and data. Data analysis for its own sake is often quite boring, but becomes crucial when it supports claims about the world. A convincing data analysis starts with the collection and cleaning of data, a thoughtful and reproducible statistical analysis of it, and the graphical presentation of the results. This course will provide students with the necessary practical skills, chiefly revolving around statistical computing, to conduct their own data analysis. This course is not an introduction to statistics or computer science. I assume that students are familiar with at least basic probability and statistical concepts up to and including regression.

Instructor: Katz
AM/ACM 127
Calculus of Variations
9 units (3-0-6)  | third term
Prerequisites: ACM 95/100.

First and second variations; Euler-Lagrange equation; Hamiltonian formalism; action principle; Hamilton-Jacobi theory; stability; local and global minima; direct methods and relaxation; isoperimetric inequality; asymptotic methods and gamma convergence; selected applications to mechanics, materials science, control theory and numerical methods.

Instructor: Bhattacharya
EE/Ma/CS/IDS 127
Error-Correcting Codes
9 units (3-0-6)  | third term
Prerequisites: EE 55 or equivalent.
This course develops from first principles the theory and practical implementation of the most important techniques for combating errors in digital transmission and storage systems. Topics include highly symmetric linear codes, such as Hamming, Reed-Muller, and Polar codes; algebraic block codes, such as Reed-Solomon and BCH codes, including a self-contained introduction to the theory of finite fields; and low-density parity-check codes. Students will become acquainted with encoding and decoding algorithms, design principles and performance evaluation of codes.
Instructor: Kostina
CS 128
Interactive Theorem Proving
9 units (3-0-6)  | second term
Prerequisites: CS 4 or instructor's permission.

This course introduces students to the modern practice of interactive tactic-based theorem proving using the Coq theorem prover. Topics will be drawn from logic, programming languages and the theory of computation. Topics will include: proof by induction, lists, higher-order functions, polymorphism, dependently-typed functional programming, constructive logic, the Curry-Howard correspondence, modeling imperative programs, and other topics if time permits. Students will be graded partially on attendance and will be expected to participate in proving theorems in class.

Instructor: Vanier
ME/CS/EE 129
Experimental Robotics
9 units (1-7-1)  | third term
Prerequisites: some experience with (i) Python programming (CS1, CS2, or equivalent), (ii) Hardware, Sensors, and Signal Processing (EE/ME7, ME8, EE1, or similar), and/or (iii) Robotic Devices (ME13, ME72, or related), as evidenced to the instructor. Not recommended for first-year students.
This course covers the foundations of experimental realization on robotic systems. This includes software infrastructure to operate physical hardware, integrate various sensor modalities, and create robust autonomous behaviors. Using the Python programming language, assignments will explore techniques from simple polling to interrupt driven and multi-threaded architectures, ultimately utilizing the Robotic Operating System (ROS). Developments will be integrated on mobile robotic systems and demonstrated in the context of class projects.
Instructor: Niemeyer
CS 130
Software Engineering
9 units (3-3-3)  | second term
Prerequisites: CS 2 and CS 3 (or equivalent).

This course presents a survey of software engineering principles relevant to all aspects of the software development lifecycle. Students will examine industry best practices in the areas of software specification, development, project management, testing, and release management, including a review of the relevant research literature. Assignments give students the opportunity to explore these topics in depth. Programming assignments use Python and Git, and students should be familiar with Python at a CS 1 level, and Git at a CS 2/CS 3 level, before taking the course.

Instructor: Pinkston
CDS 131
Linear Systems Theory
12 units (3-0-9)  | first term
Prerequisites: Ma 1 b, Ma 2, ACM/IDS 104 or equivalent (may be taken concurrently).
Basic system concepts; state-space and I/O representation. Properties of linear systems, including stability, performance, robustness. Reachability, observability, minimality, state and output-feedback. Brief introduction to optimal control and control of networked and nonlinear systems. Motivating case studies from tech, biology, neuroscience, and medical systems.
Instructor: Doyle
CS 131
Programming Languages
9 units (3-0-6)  | third term
Prerequisites: CS 4.

CS 131 is a course on programming languages and their implementation. It teaches students how to program in a number of simplified languages representing the major programming paradigms in use today (imperative, object-oriented, and functional). It will also teach students how to build and modify the implementations of these languages. Emphasis will not be on syntax or parsing but on the essential differences in these languages and their implementations. Both dynamically-typed and statically-typed languages will be implemented. Relevant theory will be covered as needed. Implementations will mostly be interpreters, but some features of compilers will be covered if time permits. Enrollment limited to 30 students.

Instructor: Vanier
CS 132
Web Development
9 units (3-0-6)  | third term
Prerequisites: CS 1 or equivalent.

Covers full-stack web development with HTML5, CSS, client-side JS (ES6) and server-side JS (Node.js/Express) for web API development. Concepts including separation of concerns, the client-server relationship, user experience, accessibility, and security will also be emphasized throughout the course. Assignments will alternate between formal and semi-structured student-driven projects, providing students various opportunities to apply material to their individual interests. No prior web development background is required, though students who have prior experience may still benefit from learning best practices and HTML5/ES6 standards.

Instructor: Hovik
ME/CS/EE 133 ab
Robotics
9 units (3-2-4)  | first, second terms
Prerequisites: ME/CS/EE 129, or Python programming experience, evidenced to instructor.

The course develops the core concepts of robotics. The first quarter focuses on classical robotic manipulation, including topics in rigid body kinematics and dynamics. It develops planar and 3D kinematic formulations and algorithms for forward and inverse computations, Jacobians, and manipulability. The second quarter transitions to planning, navigation, and perception. Topics include configuration space, sample-based planners, A* and D* algorithms, to achieve collision-free motions. Course work transitions from homework and programming assignments to more open-ended team-based projects.

Instructor: Niemeyer
ME/CS/EE 134
Robotic Systems
9 units (1-7-1)  | second term
Prerequisites: ME/CS/EE 133 a, or with permission of instructor.

This course builds up, and brings to practice, the elements of robotic systems at the intersection of hardware, kinematics and control, computer vision, and autonomous behaviors. It presents selected topics from these domains, focusing on their integration into a full sense-think-act robot. The lectures will drive team-based projects, progressing from building custom robotic arms (5 to 7 degrees of freedom) to writing all necessary software (utilizing the Robotics Operating system, ROS). Teams are required to implement and customize general concepts for their selected tasks. Working systems will autonomously operate and demonstrate their capabilities during final presentations.

Instructor: Niemeyer
EE/CS/EST 135
Power System Analysis
9 units (3-3-3)  | first term
Prerequisites: EE 44, Ma 2, or equivalent.

We are at the beginning of a historic transformation to decarbonize our energy system. This course introduces the basics of power systems analysis: phasor representation, 3-phase transmission system, transmission line models, transformer models, per-unit analysis, network matrix, power flow equations, power flow algorithms, optimal powerflow (OPF) problems, unbalanced power flow analysis and optimization,swing dynamics and stability.

Instructor: Low
EE/Ma/CS/IDS 136
Information Theory and Applications
9 units (3-0-6)  | third term
Prerequisites: EE 55 or equivalent.
This class introduces information measures such as entropy, information divergence, mutual information, information density, and establishes the fundamental importance of those measures in data compression, statistical inference, and error control. The course does not require a prior exposure to information theory; it is complementary to EE 126a.
Instructor: Kostina
CS 137
Real-World Algorithm Implementation
12 units (0-3-9)  | third term
Prerequisites: CS 24.

This course introduces algorithms in the context of their usage in the real world. The course covers compression, semi-numerical algorithms, RSA cryptography, parsing, and string matching. The goal of the course is for students to see how to use theoretical algorithms in real-world contexts, focusing both on correctness and the nitty-gritty details and optimizations. Students will choose to implement projects based on depth in an area or breadth to cover all the topics.

Instructor: Blank
CS 138
Computer Algorithms
9 units (3-0-6)  | third term

This course is identical to CS 38. Only graduate students for whom this is the first algorithms course are allowed to register for CS 138. See the CS 38 entry for prerequisites and course description.

Instructor: Schröder
CMS/CS/IDS 139
Analysis and Design of Algorithms
12 units (3-0-9)  | first term
Prerequisites: Ma 2, Ma 3, Ma/CS 6 a, CS 21, CS 38/138, and ACM/EE/IDS 116 or CMS/ACM/EE 122 or equivalent.

This course develops core principles for the analysis and design of algorithms. Basic material includes mathematical techniques for analyzing performance in terms of resources, such as time, space, and randomness. The course introduces the major paradigms for algorithm design, including greedy methods, divide-and-conquer, dynamic programming, linear and semidefinite programming, randomized algorithms, and online learning.

Instructor: Mahadev
Ma/ACM/IDS 140 ab
Probability
9 units (3-0-6)  | second, third terms
Prerequisites: For 140 a, Ma 108 b is strongly recommended.

Overview of measure theory. Random walks and the Strong law of large numbers via the theory of martingales and Markov chains. Characteristic functions and the central limit theorem. Poisson process and Brownian motion. Topics in statistics. Part b not offered 2023-24.

Instructor: Vigneaux
CS 141
Hack Society: Projects from the Public Sector
9 units (0-0-9)  | third term
Prerequisites: CS/IDS 142, 143, CMS/CS/EE/IDS 144, or permission from instructor.

There is a large gap between the public and private sectors' effective use of technology. This gap presents an opportunity for the development of innovative solutions to problems faced by society. Students will develop technology-based projects that address this gap. Course material will offer an introduction to the design, development, and analysis of digital technology with examples derived from services typically found in the public sector. Not offered 2023-24.

Instructor: Ralph
CS/IDS 142
Distributed Computing
9 units (3-2-4)  | first term
Prerequisites: CS 24, CS 38.

Programming distributed systems. Mechanics for cooperation among concurrent agents. Programming sensor networks and cloud computing applications. Applications of machine learning and statistics by using parallel computers to aggregate and analyze data streams from sensors. Not offered 2023-24.

Instructor: Staff
Ma/ACM 142 ab
Ordinary and Partial Differential Equations
9 units (3-0-6)  | second, third terms
Prerequisites: Ma 108; Ma 109 is desirable.

The mathematical theory of ordinary and partial differential equations, including a discussion of elliptic regularity, maximal principles, solubility of equations. The method of characteristics.

Instructors: Marcolli, Looi
CS/EE/IDS 143
Networks: Algorithms & Architecture
12 units (3-4-5)  | third term
Prerequisites: Ma 2, Ma 3, Ma/CS 6 a, and CS 38, or instructor permission.
Social networks, the web, and the internet are essential parts of our lives, and we depend on them every day. CS/EE/IDS 143 and CMS/CS/EE/IDS 144 study how they work and the "big" ideas behind our networked lives. In this course, the questions explored include: Why is an hourglass architecture crucial for the design of the Internet? Why doesn't the Internet collapse under congestion? How are cloud services so scalable? How do algorithms for wireless and wired networks differ? For all these questions and more, the course will provide a mixture of both mathematical analysis and hands-on labs. The course expects students to be comfortable with graph theory, probability, and basic programming.
Instructor: Wierman
CMS/CS/EE/IDS 144
Networks: Structure & Economics
12 units (3-4-5)  | second term
Prerequisites: Ma 2, Ma 3, Ma/CS 6 a, and CS 38, or instructor permission.
Social networks, the web, and the internet are essential parts of our lives, and we depend on them every day. CS/EE/IDS 143 and CMS/CS/EE/IDS 144 study how they work and the "big" ideas behind our networked lives. In this course, the questions explored include: What do networks actually look like (and why do they all look the same)?; How do search engines work?; Why do epidemics and memes spread the way they do?; How does web advertising work? For all these questions and more, the course will provide a mixture of both mathematical analysis and hands-on labs. The course expects students to be comfortable with graph theory, probability, and basic programming.
Instructor: Mazumdar
CS/EE 145
Projects in Networking
9 units (0-0-9)  | third term
Prerequisites: Either CMS/CS/EE/IDS 144 or CS/IDS 142 in the preceding term, or instructor permission.

Students are expected to execute a substantial project in networking, write up a report describing their work, and make a presentation.

Instructor: Wierman
CS/EE 146
Control and Optimization of Networks
9 units (3-3-3)  | second term
Prerequisites: Ma 2, Ma 3 or instructor's permission.

This is a research-oriented course meant for undergraduates and beginning graduate students who want to learn about current research topics in networks such as the Internet, power networks, social networks, etc. The topics covered in the course will vary, but will be pulled from current research in the design, analysis, control, and optimization of networks.

Instructor: Low
EE/CS 147
Digital Ventures Design
9 units (3-3-3)  | first term

This course aims to offer the scientific foundations of analysis, design, development, and launching of innovative digital products and study elements of their success and failure. The course provides students with an opportunity to experience combined team-based design, engineering, and entrepreneurship. The lectures present a disciplined step-by-step approach to develop new ventures based on technological innovation in this space, and with invited speakers, cover topics such as market analysis, user/product interaction and design, core competency and competitive position, customer acquisition, business model design, unit economics and viability, and product planning. Throughout the term students will work within an interdisciplinary team of their peers to conceive an innovative digital product concept and produce a business plan and a working prototype. The course project culminates in a public presentation and a final report. Every year the course and projects focus on a particular emerging technology theme. Not offered 2023-24.

EE/CNS/CS 148
Advanced Topics in Vision: Large Language and Vision Models
12 units (3-0-9)  | third term
Prerequisites: undergraduate calculus, linear algebra, statistics, computer programming, machine learning. Experience programming in Python, Numpy and PyTorch.
The class will focus on large language models (LLMs) and language-and-vision models, as well as on generative methods for artificial intelligence (AI). Topics include deep neural networks,transformers, large language models, generative adversarial networks, diffusion models, and applications of such architectures and methods to image analysis, image synthesis, and text-to-image translation.
Instructors: Perona, Gkioxari
CS/Ec 149
Algorithmic Economics
9 units (3-0-6)  | third term

This course will equip students to engage with active research at the intersection of social and information sciences, including: algorithmic game theory and mechanism design; auctions; matching markets; and learning in games.

Instructor: Niemeyer
CS/IDS 150 ab
Probability and Algorithms
9 units (3-0-6)  | first, third terms
Prerequisites: part a: CS 38 and Ma 5 abc; part b: part a or another introductory course in discrete probability.

Part a: The probabilistic method and randomized algorithms. Deviation bounds, k-wise independence, graph problems, identity testing, derandomization and parallelization, metric space embeddings, local lemma. Part b: Further topics such as weighted sampling, epsilon-biased sample spaces, advanced deviation inequalities, rapidly mixing Markov chains, analysis of boolean functions, expander graphs, and other gems in the design and analysis of probabilistic algorithms. Parts a & b are given in alternate years. Not offered 2023-24.

Instructor: Schulman
CS 151
Complexity Theory
12 units (3-0-9)  | third term
Prerequisites: CS 21 and CS 38, or instructor's permission.

This course describes a diverse array of complexity classes that are used to classify problems according to the computational resources (such as time, space, randomness, or parallelism) required for their solution. The course examines problems whose fundamental nature is exposed by this framework, the known relationships between complexity classes, and the numerous open problems in the area. Not offered 2023-24.

Instructor: Umans
CS 152
Introduction to Cryptography
12 units (3-0-9)  | first term
Prerequisites: Ma 1 b, CS 21, CS 38 or equivalent recommended.

This course is an introduction to the foundations of cryptography. The first part of the course introduces fundamental constructions in private-key cryptography, including one-way functions, pseudo-random generators and authentication, and in public-key cryptography, including trapdoor one-way functions, collision-resistant hash functions and digital signatures. The second part of the course covers selected topics such as interactive protocols and zero knowledge, the learning with errors problem and homomorphic encryption, and quantum cryptography: quantum money, quantum key distribution. The course is mostly theoretical and requires mathematical maturity. There will be a small programming component. Not offered 2023-24.

Instructor: Vidick
CS/IDS 153
Current Topics in Theoretical Computer Science
9 units (3-0-6)  | first, second, third terms
Prerequisites: CS 21 and CS 38, or instructor's permission.

May be repeated for credit, with permission of the instructor. Students in this course will study an area of current interest in theoretical computer science. The lectures will cover relevant background material at an advanced level and present results from selected recent papers within that year's chosen theme. Students will be expected to read and present a research paper.

Instructors: Mahadev, Schulman, Umans
ACM/IDS 154
Inverse Problems and Data Assimilation
9 units (3-0-6)  | second term
Prerequisites: Basic differential equations, linear algebra, probability and statistics: ACM/IDS 104, ACM/EE 106 ab, ACM/EE/IDS 116, IDS/ACM/CS 157 or equivalent.

Models in applied mathematics often have input parameters that are uncertain; observed data can be used to learn about these parameters and thereby to improve predictive capability. The purpose of the course is to describe the mathematical and algorithmic principles of this area. The topic lies at the intersection of fields including inverse problems, differential equations, machine learning and uncertainty quantification. Applications will be drawn from the physical, biological and data sciences.

Instructors: Baptista, Carlson
CMS/CS/CNS/EE/IDS 155
Machine Learning & Data Mining
12 units (3-3-6)  | second term
Prerequisites: CS/CNS/EE 156 a. Having a sufficient background in algorithms, linear algebra, calculus, probability, and statistics, is highly recommended.
This course will cover popular methods in machine learning and data mining, with an emphasis on developing a working understanding of how to apply these methods in practice. The course will focus on basic foundational concepts underpinning and motivating modern machine learning and data mining approaches. We will also discuss recent research developments.
Instructor: Yue
CS/CNS/EE 156 ab
Learning Systems
9 units (3-1-5)  | first, third terms
Prerequisites: Ma 2 and CS 2, or equivalent.

Introduction to the theory, algorithms, and applications of automated learning. How much information is needed to learn a task, how much computation is involved, and how it can be accomplished. Special emphasis will be given to unifying the different approaches to the subject coming from statistics, function approximation, optimization, pattern recognition, and neural networks.

Instructor: Abu-Mostafa
IDS/ACM/CS 157
Statistical Inference
9 units (3-2-4)  | third term
Prerequisites: ACM/EE/IDS 116, Ma 3.

Statistical Inference is a branch of mathematical engineering that studies ways of extracting reliable information from limited data for learning, prediction, and decision making in the presence of uncertainty. This is an introductory course on statistical inference. The main goals are: develop statistical thinking and intuitive feel for the subject; introduce the most fundamental ideas, concepts, and methods of statistical inference; and explain how and why they work, and when they don't. Topics covered include summarizing data, fundamentals of survey sampling, statistical functionals, jackknife, bootstrap, methods of moments and maximum likelihood, hypothesis testing, p-values, the Wald, Student's t-, permutation, and likelihood ratio tests, multiple testing, scatterplots, simple linear regression, ordinary least squares, interval estimation, prediction, graphical residual analysis.

Instructor: Zuev
IDS/ACM/CS 158
Fundamentals of Statistical Learning
9 units (3-3-3)  | second term
Prerequisites: ACM/IDS 104, ACM/EE/IDS 116, IDS/ACM/CS 157.
The main goal of the course is to provide an introduction to the central concepts and core methods of statistical learning, an interdisciplinary field at the intersection of applied mathematics, statistical inference, and machine learning. The course focuses on the mathematics and statistics of methods developed for learning from data. Students will learn what methods for statistical learning exist, how and why they work (not just what tasks they solve and in what built-in functions they are implemented), and when they are expected to perform poorly. The course is oriented for upper level undergraduate students in IDS, ACM, and CS and graduate students from other disciplines who have sufficient background in linear algebra, probability, and statistics. The course is a natural continuation of IDS/ACM/CS 157 and it can be viewed as a statistical analog of CMS/CS/CNS/EE/IDS 155. Topics covered include elements of statistical decision theory, regression and classification problems, nearest-neighbor methods, curse of dimensionality, linear regression, model selection, cross-validation, subset selection, shrinkage methods, ridge regression, LASSO, logistic regression, linear and quadratic discriminant analysis, support-vector machines, tree-based methods, bagging, and random forests.
Instructor: Zuev
CS/CNS/EE/IDS 159
Advanced Topics in Machine Learning
9 units (3-0-6)  | third term
Prerequisites: CS 155; strong background in statistics, probability theory, algorithms, and linear algebra; background in optimization is a plus as well.

This course focuses on current topics in machine learning research. This is a paper reading course, and students are expected to understand material directly from research articles. Students are also expected to present in class, and to do a final project.

Instructor: Yue
EE/CS/IDS 160
Fundamentals of Information Transmission and Storage
9 units (3-0-6)  | second term
Prerequisites: EE 55 or equivalent.

Basics of information theory: entropy, mutual information, source and channel coding theorems. Basics of coding theory: error-correcting codes for information transmission and storage, block codes, algebraic codes, sparse graph codes. Basics of digital communications: sampling, quantization, digital modulation, matched filters, equalization.

Instructor: Hassibi
EE/CS 161
Big Data Networks
9 units (3-0-6)  | third term
Prerequisites: Linear Algebra ACM/IDS 104 and Introduction to Probability Models ACM/EE/IDS 116 or their equivalents.

Next generation networks will have tens of billions of nodes forming cyber-physical systems and the Internet of Things. A number of fundamental scientific and technological challenges must be overcome to deliver on this vision. This course will focus on (1) How to boost efficiency and reliability in large networks; the role of network coding, distributed storage, and distributed caching; (2) How to manage wireless access on a massive scale; modern random access and topology formation techniques; and (3) New vistas in big data networks, including distributed computing over networks and crowdsourcing. A selected subset of these problems, their mathematical underpinnings, state-of-the-art solutions, and challenges ahead will be covered. Not offered 2023-24.

CS/IDS 162
Data, Algorithms and Society
9 units (3-0-6)  | second term
Prerequisites: CS 38 and CS 155 or 156 a.

This course examines algorithms and data practices in fields such as machine learning, privacy, and communication networks through a social lens. We will draw upon theory and practices from art, media, computer science and technology studies to critically analyze algorithms and their implementations within society. The course includes projects, lectures, readings, and discussions. Students will learn mathematical formalisms, critical thinking and creative problem solving to connect algorithms to their practical implementations within social, cultural, economic, legal and political contexts. Enrollment by application. Taught concurrently with VC 72 and can only be taken once as CS/IDS 162 or VC 72.

Instructor: Ralph
CS 164
Compilers
9 units (3-0-6)  | first term
Prerequisites: CS 4 or instructor's permission. CS 24 and CS 131 are strongly recommended but not required. Limit 20 students.

This course covers the construction of compilers: programs which convert program source code to machine code which is directly executable on modern hardware. The course takes a bottom-up approach: a series of compilers will be built, all of which generate assembly code for x86 processors, with each compiler adding features. The final compiler will compile a full-fledged high-level programming language to assembly language. Topics covered include register allocation, conditionals, loops and dataflow analysis, garbage collection, lexical scoping, and type checking. This course is programming intensive. All compilers will be written in the OCaml programming language.

Instructor: Vanier
CS/CNS/EE/IDS 165
Foundations of Machine Learning and Statistical Inference
12 units (3-3-6)  | second term
Prerequisites: CMS/ACM/EE 122, ACM/EE/IDS 116, CS 156 a, ACM/CS/IDS 157 or instructor's permission.

The course assumes students are comfortable with analysis, probability, statistics, and basic programming. This course will cover core concepts in machine learning and statistical inference. The ML concepts covered are spectral methods (matrices and tensors), non-convex optimization, probabilistic models, neural networks, representation theory, and generalization. In statistical inference, the topics covered are detection and estimation, sufficient statistics, Cramer-Rao bounds, Rao-Blackwell theory, variational inference, and multiple testing. In addition to covering the core concepts, the course encourages students to ask critical questions such as: How relevant is theory in the age of deep learning? What are the outstanding open problems? Assignments will include exploring failure modes of popular algorithms, in addition to traditional problem-solving type questions.

Instructor: Anandkumar
CS/EE/IDS 166
Computational Cameras
12 units (3-3-6)  | third term
Prerequisites: ACM 104 or ACM 107 or equivalent.

Computational cameras overcome the limitations of traditional cameras, by moving part of the image formation process from hardware to software. In this course, we will study this emerging multi-disciplinary field at the intersection of signal processing, applied optics, computer graphics, and vision. At the start of the course, we will study modern image processing and image editing pipelines, including those encountered on DSLR cameras and mobile phones. Then we will study the physical and computational aspects of tasks such as coded photography, light-field imaging, astronomical imaging, medical imaging, and time-of-flight cameras. The course has a strong hands-on component, in the form of homework assignments and a final project. In the homework assignments, students will have the opportunity to implement many of the techniques covered in the class. Example homework assignments include building an end-to-end HDR (High Dynamic Range) imaging pipeline, implementing Poisson image editing, refocusing a light-field image, and making your own lensless "scotch-tape" camera.

Instructor: Bouman
EE/CS/IDS 167
Introduction to Data Compression and Storage
9 units (3-0-6)  | third term
Prerequisites: Ma 3 or ACM/EE/IDS 116.

The course will introduce the students to the basic principles and techniques of codes for data compression and storage. The students will master the basic algorithms used for lossless and lossy compression of digital and analog data and the major ideas behind coding for flash memories. Topics include the Huffman code, the arithmetic code, Lempel-Ziv dictionary techniques, scalar and vector quantizers, transform coding; codes for constrained storage systems. Given in alternate years; not offered 2023-24.

ME/CS/EE 169
Mobile Robots
9 units (1-7-1)  | third term
Prerequisites: ME/CS/EE 133 b, or with permission of instructor.

Mobile robots need to perceive their environment and localize themselves with respect to maps thereof. They further require planners to move along collision-free paths. This course builds up mobile robots in team-based projects. Teams will write all necessary software from low-level hardware I/O to high level algorithms, using the robotic operating system (ROS). The final systems will autonomously maneuver to reach their goals or track various objectives.

Instructor: Niemeyer
ACM/EE/IDS 170
Mathematics of Signal Processing
12 units (3-0-9)  | third term
Prerequisites: ACM/IDS 104, CMS/ACM/EE 122, and ACM/EE/IDS 116; or instructor's permission.

This course covers classical and modern approaches to problems in signal processing. Problems may include denoising, deconvolution, spectral estimation, direction-of-arrival estimation, array processing, independent component analysis, system identification, filter design, and transform coding. Methods rely heavily on linear algebra, convex optimization, and stochastic modeling. In particular, the class will cover techniques based on least-squares and on sparse modeling. Throughout the course, a computational viewpoint will be emphasized. Not offered 2023-24.

Instructor: Hassibi
CS/CNS 171
Computer Graphics Laboratory
12 units (3-6-3)  | first term
Prerequisites: Extensive programming experience and proficiency in linear algebra, starting with CS 2 and Ma 1 b.

This is a challenging course that introduces the basic ideas behind computer graphics and some of its fundamental algorithms. Topics include graphics input and output, the graphics pipeline, sampling and image manipulation, three-dimensional transformations and interactive modeling, basics of physically based modeling and animation, simple shading models and their hardware implementation, and some of the fundamental algorithms of scientific visualization. Students will be required to perform significant implementations.

Instructor: Barr
CS/CNS 174
Computer Graphics Projects
12 units (3-6-3)  | third term
Prerequisites: Extensive programming experience, CS/CNS 171 or instructor's permission.

This laboratory class offers students an opportunity for independent work including recent computer graphics research. In coordination with the instructor, students select a computer graphics modeling, rendering, interaction, or related algorithm and implement it. Students are required to present their work in class and discuss the results of their implementation and possible improvements to the basic methods. May be repeated for credit with instructor's permission. Not offered 2023-24.

Instructor: Barr
EE/CS/MedE 175
Advanced Topics in Digital Design with FPGAs and VHDL
9 units (3-6-0)  | third term
Prerequisites: EE/CS/MedE 125 or equivalent.

Quick review of the VHDL language and RTL concepts. Dealing with sophisticated, multi-dimensional data types in VHDL. Dealing with multiple time domains. Transfer of control versus data between clock domains. Clock division and multiplication. Using PLLs. Dealing with global versus local and synchronous versus asynchronous resets. How to measure maximum speed in FPGAs (for both registered and unregistered circuits). The (often) hard task of time closure. The subtleties of the time behavior in state machines (a major source of errors in large, complex designs). Introduction to simulation. Construction of VHDL testbenches for automated testing. Dealing with files in simulation. All designs are physically implemented using FPGA boards. Not offered 2023-24.

Instructor: Staff
CS 176
Computer Graphics Research
9 units (3-3-3)  | second term
Prerequisites: CS/CNS 171, or 173, or 174.

The course will go over recent research results in computer graphics, covering subjects from mesh processing (acquisition, compression, smoothing, parameterization, adaptive meshing), simulation for purposes of animation, rendering (both photo- and nonphotorealistic), geometric modeling primitives (image based, point based), and motion capture and editing. Other subjects may be treated as they appear in the recent literature. The goal of the course is to bring students up to the frontiers of computer graphics research and prepare them for their own research. Not offered 2023-24.

Instructor: Staff
CS/ACM 177 ab
Discrete Differential Geometry: Theory and Applications
9 units (3-3-3)  | second term

Working knowledge of multivariate calculus and linear algebra as well as fluency in some implementation language is expected. Subject matter covered: differential geometry of curves and surfaces, classical exterior calculus, discrete exterior calculus, sampling and reconstruction of differential forms, low dimensional algebraic and computational topology, Morse theory, Noether's theorem, Helmholtz-Hodge decomposition, structure preserving time integration, connections and their curvatures on complex line bundles. Applications include elastica and rods, surface parameterization, conformal surface deformations, computation of geodesics, tangent vector field design, connections, discrete thin shells, fluids, electromagnetism, and elasticity. Part b not offered 2023-24.

Instructor: Schröder
CS/IDS 178
Numerical Algorithms and their Implementation
9 units (3-3-3)  | third term
Prerequisites: CS 2.

This course gives students the understanding necessary to choose and implement basic numerical algorithms as needed in everyday programming practice. Concepts include: sources of numerical error, stability, convergence, ill-conditioning, and efficiency. Algorithms covered include solution of linear systems (direct and iterative methods), orthogonalization, SVD, interpolation and approximation, numerical integration, solution of ODEs and PDEs, transform methods (Fourier, Wavelet), and low rank approximation such as multipole expansions. Not offered 2023-24.

Instructor: Staff
CS 179
GPU Programming
9 units (3-3-3)  | third term
Prerequisites: Good working knowledge of C/C++.

Some experience with computer graphics algorithms preferred. The use of Graphics Processing Units for computer graphics rendering is well known, but their power for general parallel computation is only recently being explored. Parallel algorithms running on GPUs can often achieve up to 100x speedup over similar CPU algorithms. This course covers programming techniques for the Graphics processing unit, focusing on visualization and simulation of various systems. Labs will cover specific applications in graphics, mechanics, and signal processing. The course will use nVidia's parallel computing architecture, CUDA. Labwork requires extensive programming.

Instructor: Barr
ACM/IDS 180 ab
Multiscale Modeling
12 units (3-0-9)  | first, third terms
Prerequisites: CMS 107, CMS 117 or explicit email permission from instructor.

Part a: Multiscale methodology for partial differential equations (PDEs) and for stochastic differential equations (SDEs). Basic theory of underlying PDEs; basic theory of Gaussian processes; basic theory of SDEs; multiscale expansions. Part b: Transition from quantum to continuum modeling of materials. Schrodinger equation and semi-classical limit; molecular dynamics and kinetic theory; kinetic theory, Boltzmann equation and continuum mechanics. Not offered 2023-24.

Instructor: Stuart
CS 180
Master’s Thesis Research
Units (total of 45) are determined in accordance with work accomplished 
Instructor: Staff
Bi/BE/CS 183
Introduction to Computational Biology and Bioinformatics
9 units (3-0-6)  | second term
Prerequisites: Bi 8, CS 2, Ma 3; or BE/Bi 103 a; or instructor's permission.

Biology is becoming an increasingly data-intensive science. Many of the data challenges in the biological sciences are distinct from other scientific disciplines because of the complexity involved. This course will introduce key computational, probabilistic, and statistical methods that are common in computational biology and bioinformatics. We will integrate these theoretical aspects to discuss solutions to common challenges that reoccur throughout bioinformatics including algorithms and heuristics for tackling DNA sequence alignments, phylogenetic reconstructions, evolutionary analysis, and population and human genetics. We will discuss these topics in conjunction with common applications including the analysis of high throughput DNA sequencing data sets and analysis of gene expression from RNA-Seq data sets.

Instructor: Staff
ESE/Ge/Bi/IDS 184
Computational Tools for Decoding Microbial Ecosystems
9 units (3-0-6)  | second term
Microbes, the most diverse and abundant organisms on Earth, are critical to the daily functioning of humans as well as the life-sustaining biogeochemical cycles. This course provides an in-depth exploration of the fascinating world of environmental microbiology and genomics, with a special emphasis on computational approaches for systems-level analysis of microbial communities and their interactions. The course will delve into the diverse roles of microorganisms in environmental processes ranging from nutrient and biogeochemical cycling to predicting the impacts of climate change. It will introduce students to a wide range of computational tools and techniques used in the analysis of microbial genomic data. Topics covered include: microbial community structure and functioning; interactions among microbes and their environment; and the influence of the environment in shaping and driving microbial evolution. Through a combination of lectures, discussions, and hands-on computational exercises, students will gain skills in analyzing, interpreting and visualizing large scale community metagenomic (DNA) and metatranscriptomic (RNA) data from environmental ecosystems. Students will also explore how these computational approaches can be applied to address real-world environmental challenges, broaden understanding of the genetic and metabolic diversity of the microorganisms to better manage ecosystem function, the value of this biodiversity for adaptation to natural and anthropogenic perturbations. Prior experience in Environmental microbiology, shell scripting and python while encouraged is not required.
Instructor: Karthikeyan
CNS/Bi/EE/CS/NB 186
Vision: From Computational Theory to Neuronal Mechanisms
12 units (4-4-4)  | Second term

Lecture, laboratory, and project course aimed at understanding visual information processing, in both machines and the mammalian visual system. The course will emphasize an interdisciplinary approach aimed at understanding vision at several levels: computational theory, algorithms, psychophysics, and hardware (i.e., neuroanatomy and neurophysiology of the mammalian visual system). The course will focus on early vision processes, in particular motion analysis, binocular stereo, brightness, color and texture analysis, visual attention and boundary detection. Students will be required to hand in approximately three homework assignments as well as complete one project integrating aspects of mathematical analysis, modeling, physiology, psychophysics, and engineering. Given in alternate years; offered 2023-24.

Instructors: Meister, Perona, Shimojo
CNS/Bi/Ph/CS/NB 187
Neural Computation
9 units (3-0-6)  | third term
Prerequisites: introductory neuroscience (Bi 150 or equivalent); mathematical methods (Bi 195 or equivalent); scientific programming.

This course aims at a quantitative understanding of how the nervous system computes. The goal is to link phenomena across scales from membrane proteins to cells, circuits, brain systems, and behavior. We will learn how to formulate these connections in terms of mathematical models, how to test these models experimentally, and how to interpret experimental data quantitatively. The concepts will be developed with motivation from some of the fascinating phenomena of animal behavior, such as: aerobatic control of insect flight, precise localization of sounds, sensing of single photons, reliable navigation and homing, rapid decision-making during escape, one-shot learning, and large-capacity recognition memory. Not offered 2023-2024.

Instructors: Meister, Rutishauser
ACM 190
Reading and Independent Study
Units by arrangement 

Graded pass/fail only.

Instructor: Staff
CDS 190
Independent Work in Control and Dynamical Systems
Units to be arranged  | first, second, third terms
Prerequisites: CDS 110.

Research project in control and dynamical systems, supervised by a CDS faculty member.

Instructor: Staff
BE/CS/CNS/Bi 191 ab
Biomolecular Computation
9 units (3-0-6) a; (2-4-3) b  | second, third terms
Prerequisites: None. Recommended: BE/ChE 163, CS 21, or equivalent.

This course investigates computation by molecular systems, emphasizing models of computation based on the underlying physics, chemistry, and organization of biological cells. We will explore programmability, complexity, simulation of, and reasoning about abstract models of chemical reaction networks, molecular folding, molecular self-assembly, and molecular motors, with an emphasis on universal architectures for computation, control, and construction within molecular systems. If time permits, we will also discuss biological example systems such as signal transduction, genetic regulatory networks, and the cytoskeleton; physical limits of computation, reversibility, reliability, and the role of noise, DNA-based computers and DNA nanotechnology. Part a develops fundamental results; part b is a reading and research course: classic and current papers will be discussed, and students will do projects on current research topics.

Instructor: Winfree
BE/CS 196 ab
Design and Construction of Programmable Molecular Systems
a is 12 units (2-4-6) second term; b is 9 units (2-4-3) third term  | second, third terms
Prerequisites: none.
This course will introduce students to the conceptual frameworks and tools of computer science as applied to molecular engineering, as well as to the practical realities of synthesizing and testing their designs in the laboratory. In part a, students will design and construct DNA circuits and self-assembled DNA nanostructures, as well as quantitatively analyze the designs and the experimental data. Students will learn laboratory techniques including fluorescence spectroscopy and atomic force microscopy and will use software tools and program in Mathematica. Part b is an open-ended design and build project requiring instructor's permission for enrollment. Enrollment in part a is limited to 24 students, and part b limited to 8 students.
Instructor: Qian
IDS 197
Undergraduate Reading in the Information and Data Sciences
Units are assigned in accordance with work accomplished  | first, second, third terms
Prerequisites: Consent of supervisor is required before registering.

Supervised reading in the information and data sciences by undergraduates. The topic must be approved by the reading supervisor and a formal final report must be presented on completion of the term. Graded pass/fail.

Instructor: Staff
IDS 198
Undergraduate Projects in Information and Data Sciences
Units are assigned in accordance with work accomplished  | first, second, third terms
Prerequisites: Consent of supervisor is required before registering.

Supervised research in the information and data sciences. The topic must be approved by the project supervisor and a formal report must be presented upon completion of the research. Graded pass/fail.

Instructor: Staff
IDS 199
Undergraduate thesis in the Information and Data Sciences
9 units (1-0-8)  | first, second, third terms
Prerequisites: instructor's permission, which should be obtained sufficiently early to allow time for planning the research.

Individual research project, carried out under the supervision of a faculty member and approved by the option representative. Projects must include significant design effort and a written Report is required. Open only to upperclass students. Not offered on a pass/fail basis.

Instructor: Staff
ACM 201
Partial Differential Equations
12 units (4-0-8)  | first term
Prerequisites: ACM 95/100 ab, ACM/IDS 101 ab, ACM 11 or equivalent.

This course offers an introduction to the theory of Partial Differential Equations (PDEs) commonly encountered across mathematics, engineering and science. The goal of the course is to study properties of different classes of linear and nonlinear PDEs (elliptic, parabolic and hyperbolic) and the behavior of their solutions using tools from functional analysis with an emphasis on applications. We will discuss representative models from different areas such as: heat equation, wave equation, advection-reaction-diffusion equation, conservation laws, shocks, predator prey models, Burger's equation, kinetic equations, gradient flows, transport equations, integral equations, Helmholtz and Schrödinger equations and Stoke's flow. In this course you will use analytical tools such as Gauss's theorem, Green's functions, weak solutions, existence and uniqueness theory, Sobolev spaces, well-posedness theory, asymptotic analysis, Fredholm theory, Fourier transforms and spectral theory. More advanced topics include: Perron's method, applications to irrotational flow, elasticity, electrostatics, special solutions, vibrations, Huygens' principle, Eikonal equations, spherical means, retarded potentials, water waves, various approximations, dispersion relations, Maxwell equations, gas dynamics, Riemann problems, single- and double-layer potentials, Navier-Stokes equations, Reynolds number, potential flow, boundary layer theory, subsonic, supersonic and transonic flow. Not offered 2023-24.

Instructor: Staff
ACM/IDS 204
Topics in Linear Algebra and Convexity
9 units (3-0-6)  | second term
Prerequisites: CMS 107a and CMS/ACM 122; or instructor's permission.

The content of this course varies from year to year among advanced subjects in linear algebra, convex analysis, and related fields. Specific topics for the class include matrix analysis, operator theory, convex geometry, or convex algebraic geometry. Lectures and homework will require the ability to understand and produce mathematical proofs. Not offered 2023-24.

Instructor: Tropp
ACM 206
Topics in Computational Mathematics
9 units (3-0-6)  | third term
Prerequisites: ACM 106 ab; linear algebra at the level of ACM 104 or ACM 107; probability theory at the level of ACM 116 or ACM 117; some programming experience.

This course provides an introduction to Monte Carlo methods with applications in Bayesian computing and rare event sampling. Topics include Markov chain Monte Carlo (MCMC), Gibbs samplers, Langevin samplers, MCMC for infinite-dimensional problems, convergence of MCMC, parallel tempering, umbrella sampling, forward flux sampling, and sequential Monte Carlo. Emphasis is placed both on rigorous mathematical development and on practical coding experience. Not offered 2023-24.

Instructor: Tropp
ACM 210
Numerical Methods for PDEs
9 units (3-0-6)  | third terms
Prerequisites: ACM 11, 106 or instructor's permission.

Finite difference and finite volume methods for hyperbolic problems. Stability and error analysis of nonoscillatory numerical schemes: i) linear convection: Lax equivalence theorem, consistency, stability, convergence, truncation error, CFL condition, Fourier stability analysis, von Neumann condition, maximum principle, amplitude and phase errors, group velocity, modified equation analysis, Fourier and eigenvalue stability of systems, spectra and pseudospectra of nonnormal matrices, Kreiss matrix theorem, boundary condition analysis, group velocity and GKS normal mode analysis; ii) conservation laws: weak solutions, entropy conditions, Riemann problems, shocks, contacts, rarefactions, discrete conservation, Lax-Wendroff theorem, Godunov's method, Roe's linearization, TVD schemes, high-resolution schemes, flux and slope limiters, systems and multiple dimensions, characteristic boundary conditions; iii) adjoint equations: sensitivity analysis, boundary conditions, optimal shape design, error analysis. Interface problems, level set methods for multiphase flows, boundary integral methods, fast summation algorithms, stability issues. Spectral methods: Fourier spectral methods on infinite and periodic domains. Chebyshev spectral methods on finite domains. Spectral element methods and h-p refinement. Multiscale finite element methods for elliptic problems with multiscale coefficients. Not offered 2023-24.

Instructor: Staff
CDS 212
Optimal Control and Estimation
9 units (3-0-6)  | third term
Prerequisites: CDS 110 (or equivalent) and CDS 131.

Advanced topics in optimization-based design of control, optimal control, and estimation/filtering. Optimal control theory using calculus of variations, Hamilton-Jacobi-Bellman equation, Pontryagin's maximum principle, and optimal control applications including reinforcement learning and model predictive control. Kalman filtering, Bayesian filtering, and nonlinear filtering methods for autonomous systems.

Instructor: Chung
ACM/IDS 213
Topics in Optimization
9 units (3-0-6)  | third term
Prerequisites: ACM/IDS 104, CMS/ACM/EE 122.

Material varies year-to-year. Example topics include discrete optimization, convex and computational algebraic geometry, numerical methods for large-scale optimization, and convex geometry. Not offered 2023-24.

Instructor: Staff
ACM/IDS 216
Markov Chains, Discrete Stochastic Processes and Applications
9 units (3-0-6)  | second term
Prerequisites: ACM/EE/IDS 116 or equivalent.

Stable laws, Markov chains, classification of states, ergodicity, von Neumann ergodic theorem, mixing rate, stationary/equilibrium distributions and convergence of Markov chains, Markov chain Monte Carlo and its applications to scientific computing, Metropolis Hastings algorithm, coupling from the past, martingale theory and discrete time martingales, rare events, law of large deviations, Chernoff bounds.

Instructor: Owhadi
ACM 217
Advanced Topics in Probability
9 units (3-0-6)  | second term
Prerequisites: CMS 107a and CMS/ACM 117; or instructor's permission.
Topic varies by year. 2023-24: Random matrix theory. This class introduces some fundamental random matrix models with applications in computational mathematics, statistics, signal processing, algorithms, and other areas. The focus is on finite-dimensional examples and comparisons with ideal models. Specific topics may include the independent sum model, matrix concentration inequalities, geometric random matrix theory, classical ensembles and their limiting spectral properties, universality laws, and free probability. Lectures and homework will require the ability to understand and produce mathematical proofs.
Instructor: Tropp
Ph/CS 219 abc
Quantum Computation
9 units (3-0-6)  | first, second, third terms
Prerequisites: Ph 125 ab or equivalent.

The theory of quantum information and quantum computation. Overview of classical information theory, compression of quantum information, transmission of quantum information through noisy channels, quantum error-correcting codes, quantum cryptography and teleportation. Overview of classical complexity theory, quantum complexity, efficient quantum algorithms, fault-tolerant quantum computation, physical implementations of quantum computation.

Instructors: Kitaev, Preskill
CDS 231
Robust Control Theory
9 units (3-2-4)  | second term
Prerequisites: CMS/ACM/IDS 107, CMS/ACM/EE 122, and CDS 131 (or equivalents).
Scalable analysis and synthesis of robust control systems. Motivation throughout from case studies in tech, neuro, bio, med, and socioeconomic networks. Co-design of sparse and limited (delayed, localized, quantized, saturating, noisy) sensing, communications, computing, and actuation using System Level Synthesis (SLS). Layering, localization, and distributed control. Computational scalability exploiting sparsity and structure. Uncertainty, including noise, disturbances, parametric uncertainty, unmodeled dynamics, and structured uncertainty (LTI/LTV). Tradeoffs, robustness versus efficiency, conservation laws and hard limits in time and frequency domain. Advanced topics, depending on class interest, can include interplay between automation, optimization, control, modeling and system identification, and machine learning, and nonlinear dynamics and sum of squares, global stability, regions of attraction.
Instructor: Doyle
Ae/ACM/ME 232 ab
Computational Fluid Dynamics
9 units (3-0-6)  | first, second terms
Prerequisites: Ae/APh/CE/ME 101 abc or equivalent; ACM 100 ab or equivalent; ACM 104.

Development and analysis of algorithms used in the solution of fluid mechanics problems. Numerical analysis of discretization schemes for partial differential equations including interpolation, integration, spatial discretization, systems of ordinary differential equations; stability, accuracy, aliasing, Gibbs and Runge phenomena, numerical dissipation and dispersion; boundary conditions. Survey of finite difference, finite element, finite volume and spectral approximations for the numerical solution of the incompressible and compressible Euler and Navier-Stokes equations, including shock-capturing methods.

Instructors: Meiron, Pullin
CDS 232
Nonlinear Dynamics
9 units (3-0-6)  | second term
Prerequisites: CMS/ACM/IDS 107 and CDS 231.

This course studies nonlinear dynamical systems beginning from first principles. Topics include: existence and uniqueness properties of solutions to nonlinear ODEs, stability of nonlinear systems from the perspective of Lyapunov, and behavior unique to nonlinear systems; for example: stability of periodic orbits, Poincaré maps and stability/invariance of sets. The dynamics of robotic systems will be used as a motivating example.

Instructor: Ames
CDS 233
Nonlinear Control
9 units (3-0-6)  | third term
Prerequisites: CDS 231 and CDS 232.

This course studies nonlinear control systems from Lyapunov perspective. Beginning with feedback linearization and the stabilization of feedback linearizable system, these concepts are related to control Lyapunov functions, and corresponding stabilization results in the context of optimization based controllers. Advanced topics that build upon these core results will be discussed including: stability of periodic orbits, controller synthesis through virtual constraints, safety-critical controllers, and the role of physical constraints and actuator limits. The control of robotic systems will be used as a motivating example.

Instructor: Ames
ME/CDS/EE 234 ab
Advanced Robotics: Planning
9 units (3-3-3)  | second, third terms
Prerequisites: ME/CS/EE 133 b, or equivalent. ME/CS/EE 133 a preferred.

Advanced topics in robotic motion planning and navigation, including inertial navigation, simultaneous localization and mapping, Markov Decision Processes, Stochastic Receding Horizon Control, Risk-Aware planning, robotic coverage planning, and multi-robot coordination. Course work will consist of homework, programming projects, and labs. Given in alternate years. Not offered 2023-2024.

ME/CDS 235 ab
Advanced Robotics: Kinematics
9 units (3-3-3)  | second, third terms
Prerequisites: ME/CS/EE 133 a, or equivalent.

Advanced topics in robot kinematics and robotic mechanisms. Topics include a Lie Algebraic viewpoint on kinematics and robot dynamics, a review of robotic mechanisms, and a detailed development of robotic grasping and manipulation. Given in alternate years.

Instructor: Burdick
CDS 242
Hybrid Systems: Dynamics and Control
9 units (3-2-4)  | third term
Prerequisites: CDS 231 and CDS 232.

This class studies hybrid dynamical systems: systems that display both discrete and continuous dynamics. This includes topics on dynamic properties unique to hybrid system: stability types, hybrid periodic orbits, Zeno equilibria and behavior. Additionally, the nonlinear control of these systems will be considered in the context of feedback linearization and control Lyapunov functions. Applications to mechanical systems undergoing impacts will be considered, with a special emphasis on bipedal robotic walking. Not offered 2023-24.

Instructor: Staff
CDS 243
Adaptive Control
4 units (2-0-2)  | third term
Prerequisites: CDS 231 and CDS 232.

Specification and design of control systems that operate in the presence of uncertainties and unforeseen events. Robust and optimal linear control methods, including LQR, LQG and LTR control. Design and analysis of model reference adaptive control (MRAC) for nonlinear uncertain dynamical systems with extensions to output feedback. Given in alternate years. Not offered 2023-24.

Instructor: Staff
CDS 244
System Identification
4 units (2-0-2)  | third term
Prerequisites: CDS 231 and CDS 232.

Mathematical treatment of system identification methods for dynamical systems, with applications. Nonlinear dynamics and models for parameter identification. Gradient and least-squares estimators and variants. System identification with adaptive predictors and state observers. Parameter estimation in the presence of non-parametric uncertainties. Introduction to adaptive control. Not offered 2023-24.

Instructor: Staff
CDS 245
Data-driven Control
9 units (3-0-6)  | third term
Prerequisites: CDS 131 and CDS 232.

Mathematical treatment of data-driven machine learning methods for controlling robotic and dynamical systems with various uncertainties. Gradient and least-squares estimators and variants for dynamical systems for system identification and residual learning. Adaptive control methods for online adaptation and combination with deep learning. Learning-based control certificates such as neural Lyapunov functions and neural contraction metrics. Not offered 2023-24.

Instructor: Chung
CMS/Ec 248
Topics in Learning and Games
9 units (3-0-6)  | first term

This course is an advanced topics course intended for graduate students with a background in optimization, linear systems theory, probability and statistics, and an interest in learning, game theory, and decision making more broadly. We will cover the basics of game theory including equilibrium notions and efficiency, learning algorithms for equilibrium seeking, and discuss connections to optimization, machine learning, and decision theory. While there will be some initial overview of game theory, the focus of the course will be on modern topics in learning as applied to games in both cooperative and non-cooperative settings. We will also discuss games of partial information and stochastic games as well as hierarchical decision-making problems (e.g., incentive and information design).

Instructor: Mazumdar
Ae/CDS/ME 251 ab
Closed Loop Flow Control
9 units (3-0-6 a, 1-6-1 b)  | second, third term
Prerequisites: ACM 100 abc, Ae/APh/CE/ME 101 abc or equivalent.

This course seeks to introduce students to recent developments in theoretical and practical aspects of applying control to flow phenomena and fluid systems. Lecture topics in the second term drawn from: the objectives of flow control; a review of relevant concepts from classical and modern control theory; high-fidelity and reduced-order modeling; principles and design of actuators and sensors. Third term: laboratory work in open- and closed-loop control of boundary layers, turbulence, aerodynamic forces, bluff body drag, combustion oscillations and flow-acoustic oscillations. Not offered 2023-24

ACM 256
Special Topics in Applied Mathematics
9 units (3-0-6)  | second term
Prerequisites: Familiarity with analysis and probability, e.g. ACM 105 and ACM 116 is desired.

Measure transport is a rich mathematical topic at the intersection of analysis, probability and optimization. The core idea behind this theory is to rearrange the mass of a reference measure to match a target measure. In particular, optimal transport seeks a rearrangement that transports mass with minimal cost. The theory of optimal transport dates back to Monge in 1781, with significant advancements by Kantorovich in 1942 and later in the '90s, e.g. by Brenier. In recent years, measure transport has become an indispensable tool for representing probability distributions and for defining measures of similarity between distributions. These methods enjoy applications in image retrieval, signal and image representation, inverse problems, cancer detection, texture and color modelling, shape and image registration, and machine learning, to name a few. This class will introduce the foundations of measure transport, present its connections and applications in various fields, and lastly explore modern computational methods for finding discrete and continuous transport maps, e.g. Sinkhorn's algorithm and normalizing flows. Not offered 2023-24.

Instructor: Staff
ACM 257
Special Topics in Financial Mathematics
9 units (3-0-6)  | third term
Prerequisites: ACM 95/100 or instructor's permission.

A basic knowledge of probability and statistics as well as transform methods for solving PDEs is assumed. This course develops some of the techniques of stochastic calculus and applies them to the theory of financial asset modeling. The mathematical concepts/tools developed will include introductions to random walks, Brownian motion, quadratic variation, and Ito-calculus. Connections to PDEs will be made by Feynman-Kac theorems. Concepts of risk-neutral pricing and martingale representation are introduced in the pricing of options. Topics covered will be selected from standard options, exotic options, American derivative securities, term-structure models, and jump processes. Not offered 2023-24.

Instructor: Staff
ACM 270
Advanced Topics in Applied and Computational Mathematics
Hours and units by arrangement  | first, second, third terms

Advanced topics in applied and computational mathematics that will vary according to student and instructor interest. May be repeated for credit.

Instructor: Staff
CDS 270
Advanced Topics in Systems and Control
Hours and units by arrangement; third term 

Topics dependent on class interests and instructor. May be repeated for credit. Not offered 2023-24.

CMS 270
Advanced Topics in Computing and Mathematical Sciences
Units by arrangement  | second term

Advanced topics that will vary according to student and instructor interest. May be repeated for credit. Not offered 2023-24.

Instructor: Staff
CS 274 abc
Topics in Computer Graphics
9 units (3-3-3)  | first, second, third terms
Prerequisites: instructor's permission.

Each term will focus on some topic in computer graphics, such as geometric modeling, rendering, animation, human-computer interaction, or mathematical foundations. The topics will vary from year to year. May be repeated for credit with instructor's permission. Not offered 2023-24.

Instructor: Staff
CS 280
Research in Computer Science
Units in accordance with work accomplished 

Approval of student's research adviser and option adviser must be obtained before registering.

Instructor: Staff
CS 282 abc
Reading in Computer Science
6 units or more by arrangement  | first, second, third terms

Instructor's permission required.

Instructor: Staff
CS 286 abc
Seminar in Computer Science
3, 6, or 9 units, at the instructor's discretion 

Instructor's permission required.

Instructor: Staff
CS 287
Center for the Mathematics of Information Seminar
3, 6, or 9 units, at the instructor's discretion  | first, second, third terms

Instructor's permission required. Not offered 2023-24.

Instructor: Staff
CMS 290 abc
Computing and Mathematical Sciences Colloquium
1 unit  | first, second, third terms
Prerequisites: Registration is limited to graduate students in the CMS department only.

This course is a research seminar course covering topics at the intersection of mathematics, computation, and their applications. Students are asked to attend one seminar per week (from any seminar series on campus) on topics related to computing and mathematical sciences. This course is a requirement for first-year PhD students in the CMS department.

Instructor: Hoffmann
ACM 300
Research in Applied and Computational Mathematics
Units by arrangement 
Instructor: Staff
CDS 300 abc
Research in Control and Dynamical Systems
Hours and units by arrangement 

Research in the field of control and dynamical systems. By arrangement with members of the staff, properly qualified graduate students are directed in research.

Instructor: Staff
CMS 300
Research in Computing and Mathematical Sciences
Hours and units by arrangement 

Research in the field of computing and mathematical science. By arrangement with members of the staff, properly qualified graduate students are directed in research.

Instructor: Staff