Whiteboard

All Courses

This is a comprehensive list of courses offered by the Computer Science Deparment since approximatly 2011.

Courses & Curriculum Related Resources

CSD Current Courses |  Full Schedule of Classes | Undergraduate Curriculum Requirements

Bachelor's — additional information is available in the Undergraduate Catalog

Graduate Curriculum Information MSCS Handbook | Fifth Year Master's Handbook | Ph.D. Handbook

Back to Academics | Student Resources

15745
Optimizing Compilers for Modern Architectures
12

Theoretical and practical aspects of building optimizing compilers that e¿ectively exploit modern architectures. The course will begin with the fundamentals of compiler optimization, and will build upon these fundamentals to address issues in state-of-the-art commercial and research machines.

Instructor(s)

Todd Mowry

Click to read more...

Doctoral Breadth: Artificial Intelligence - (*)

15746
Storage Systems
12

Storage systems are among the most fascinating and the most important parts of computer systems. They often dominate the performance of a system, and failures of other components are frequently addressed by restarting from the data stored on them. Indeed, storage systems hold the crown jewels of most organizations: their information (from source code to Microsoft's software to the sales databases of every e-commerce site to the logs and indices driving the Big Data and ML revolution). There continues to be great demand for bright people and better solutions in this critical field of computer systems.

Instructor(s)

Gregory Ganger
George Amvrosiadis

Click to read more...

15746
Storage Systems
12

Storage systems are among the most fascinating and the most important parts of computer systems. They often dominate the performance of a system, and failures of other components are frequently addressed by restarting from the data stored on them. Indeed, storage systems hold the crown jewels of most organizations: their information (from source code to Microsoft's software to the sales databases of every e-commerce site to the logs and indices driving the Big Data and ML revolution). There continues to be great demand for bright people and better solutions in this critical field of computer systems.

Instructor(s)

George Amvrosiadis
Gregory Ganger

Click to read more...

15749
Post-von Neumann Computer Architecture
12

Computing has been dominated by von Neumann CPU architectures for seventy years. The von Neumann architecture is familiar and flexible, but it is also extremely inefficient, wasting upwards of 99% of energy. As computing is now energy-limited across all scales, from IoT to data center, von Neumann's inefficiency can no longer be tolerated. Recently, industry has adopted heterogeneous "accelerator" hardware to boost performance and efficiency. However, accelerators have limited programmability, sacrificing the main benefit of CPU architectures and putting future innovation at risk. This class will survey non-von Neumann general-purpose architectures, recent work on specialized hardware accelerators, and cutting-edge research on "programmable accelerators".

Instructor(s)

Nathan Beckmann

Click to read more...

15750
Algorithms in the Real World
12

The course covers a broad set of topics in algorithms design and analysis. The goal is to cover tools and algorithms that give students the ability to (a) recognize which tool or method to apply to problems, (b) to become reasonably proficient at using these tools, and (c) to be able to reason about the correctness and performance of the resulting algorithms. The course webpage for this semester will list the tentative list of topics to be covered; these will include basic graph algorithms, randomized algorithms, hashing and streaming, flows and linear programming, convex optimization, and linear algebraic algorithms. Please refer to https://www.cs.cmu.edu/~csd-grad/courseschedules22.html for the most recent schedule updates.

Instructor(s)

Danny Sleator
Rashmi Korlakai Vinayak

Click to read more...

Doctoral Breadth: Algorithms and Complexity - (*)

15750
Algorithms in the Real World
12

The course covers a broad set of topics in algorithms design and analysis. The goal is to cover tools and algorithms that give students the ability to (a) recognize which tool or method to apply to problems, (b) to become reasonably proficient at using these tools, and (c) to be able to reason about the correctness and performance of the resulting algorithms. The course webpage for this semester will list the tentative list of topics to be covered; these will include basic graph algorithms, randomized algorithms, hashing and streaming, flows and linear programming, convex optimization, and linear algebraic algorithms. Please refer to https://www.cs.cmu.edu/~csd-grad/courseschedules22.html for the most recent schedule updates.

Instructor(s)

Jason Li

Click to read more...

Doctoral Breadth: Algorithms and Complexity - (*)

15751
CS Theory Toolkit
12

This course will take a random walk through various mathematical topics that come in handy for theoretical computer science. It is intended mainly for students earlier in their graduate studies (or very strong undergraduates) who want to do theory research. The idea for the course comes from other courses by Arora (2002, 2007), Håstad (2004/05), Kelner (2007, 2009), and Tulsiani (2013). Students should have a solid undergraduate background in math (e.g., elementary combinatorics, graph theory, discrete probability, basic algebra/calculus) and theoretical computer science (running time analysis, big-O/Omega/Theta, P and NP, basic fundamental algorithms).

Instructor(s)

Aayush Jain
Ryan O'Donnell

Click to read more...

Doctoral Breadth: Algorithms and Complexity - (*)

15754
Spectral Graph Theory
12

A graduate course on spectral graph theory: how to establish graph structure through linear algebra, and how to exploit this connection for faster algorithms

Instructor(s)

Jason Li
Ryan O'Donnell

Click to read more...

15756
Randomized Algorithms
12

A graduate-level course on how to use randomization to design algorithms and data structures with strong provable guarantees.

Instructor(s)

William Kuszmaul

Click to read more...

Doctoral Breadth: Algorithms and Complexity - (*)

15756
Randomized Algorithms
12

A graduate-level course on how to use randomization to design algorithms and data structures with strong provable guarantees.

Instructor(s)

William Kuszmaul

Click to read more...

Doctoral Breadth: Algorithms and Complexity - (*)

15759
Special Topics in Theory: A Principled Approach to Optimization
12

This is a course giving a rigorous treatment of several topics in the theory of convex optimization. There will be a particular focus on developing intuition for how to analyze many convex optimization processes from first principles. Topics may include: gradient descent, interior point methods, linear regression, linear programming, sparsification, and more.

Click to read more...

15763
Physics-based Animation of Solids and Fluids
12

This seminar-based course delves into the heart of physics-based animations of solids and fluids, a key component in fields ranging from visual effects and VR to digital fashion. Central to this is solving partial differential equations (PDEs) using numerical methods, with applications extending to computational mechanics, robotic training, and 3D content creation. Combining lectures with student presentations, we will explore the simulation of various physical entities, such as rigid bodies, deformable bodies (open-source online book available, including Python and CUDA examples), shells, rods, liquids, and smoke, all the way from the discretization of the governing PDEs to the efficient implementation and evaluation of the numerical solvers. Students will acquire a thorough understanding of both classic and state-of-the-art methods of solids and fluids simulation in computer graphics. They will also gain insights into the existing challenges in enhancing and applying these methods within the broader field.

Instructor(s)

Minchen Li

Click to read more...

15763
Physics-based Animation of Solids and Fluids
12

This course explores physics-based animations of solids and fluids, key in fields like visual effects, VR, and digital fashion. Central to this is solving partial differential equations (PDEs) using numerical methods, with applications in areas such as computational mechanics and 3D content creation. Through lectures and student presentations on research papers, we will cover the simulation of rigid bodies, deformable bodies, shells, rods, liquids, and smoke, from PDE discretization to solver implementation. A strong background in math and programming is recommended, as students will work on advanced numerical methods. The course also includes a project where students apply their knowledge to develop and test simulations. By the end, students will understand both classic and cutting-edge methods in solids and fluids simulation, along with the challenges of advancing these techniques in the broader field.

Instructor(s)

Minchen Li

Click to read more...

15768
Discrete Differential Geometry
12

This course focuses on three-dimensional geometry processing, while simultaneously providing a first course in traditional differential geometry. Our main goal is to show how fundamental geometric concepts (like curvature) can be understood from complementary computational and mathematical points of view. This dual perspective enriches understanding on both sides, and leads to the development of practical algorithms for working with real-world geometric data. Along the way we will revisit important ideas from calculus and linear algebra, putting a strong emphasis on intuitive, visual understanding that complements the more traditional formal, algebraic treatment. The course provides essential mathematical background as well as a large array of real-world examples and applications. It also provides a short survey of recent developments in digital geometry processing and discrete differential geometry. Topics include: curves and surfaces, curvature, connections and parallel transport, exterior algebra, exterior calculus, Stokes' theorem, simplicial homology, de Rham cohomology, Helmholtz-Hodge decomposition, conformal mapping, finite element methods, and numerical linear algebra.Applications include: approximation of curvature, curve and surface smoothing, surface parameterization, vector field design, and computation of geodesic distance.

Instructor(s)

Keenan Crane

Click to read more...

Doctoral Breadth: Algorithms and Complexity - (*)

15772
Real-Time Computer Graphics
12

Real-time computer graphics is about building systems that leverage modern CPUs and GPUs to produce detailed, interactive, immersive, and high-frame-rate imagery. Students will build a state-of-the-art renderer using C++ and the Vulkan API. Topics explored will include efficient data handling strategies; culling and scene traversal; multi-threaded rendering; post-processing, depth of field, screen-space reflections; volumetric rendering; sample distribution, spatial and temporal sharing, and anti-aliasing; stereo view synthesis; physical simulation and collision detection; dynamic lights and shadows; global illumination, accelerated raytracing; dynamic resolution, "AI" upsampling; compute shaders; parallax occlusion mapping; tessellation, displacement; skinning, transform feedback; and debugging, profiling, and accelerating graphics algorithms.

Instructor(s)

James McCann

Click to read more...

15772
Real-Time Computer Graphics
12

Real-time computer graphics is about building systems that leverage modern CPUs and GPUs to produce detailed, interactive, immersive, and high-frame-rate imagery. Students will build a state-of-the-art renderer using C++ and the Vulkan API. Topics explored will include efficient data handling strategies; culling and scene traversal; multi-threaded rendering; post-processing, depth of field, screen-space reflections; volumetric rendering; sample distribution, spatial and temporal sharing, and anti-aliasing; stereo view synthesis; physical simulation and collision detection; dynamic lights and shadows; global illumination, accelerated raytracing; dynamic resolution, "AI" upsampling; compute shaders; parallax occlusion mapping; tessellation, displacement; skinning, transform feedback; and debugging, profiling, and accelerating graphics algorithms.

Instructor(s)

James McCann

Click to read more...

15772
Real-Time Computer Graphics
12

Real-time computer graphics is about building systems that leverage modern CPUs and GPUs to produce detailed, interactive, immersive, and high-frame-rate imagery. Students will build a state-of-the-art renderer using C++ and the Vulkan API. Topics explored will include efficient data handling strategies; culling and scene traversal; multi-threaded rendering; post-processing, depth of field, screen-space reflections; volumetric rendering; sample distribution, spatial and temporal sharing, and anti-aliasing; stereo view synthesis; physical simulation and collision detection; dynamic lights and shadows; global illumination, accelerated raytracing; dynamic resolution, "AI" upsampling; compute shaders; parallax occlusion mapping; tessellation, displacement; skinning, transform feedback; and debugging, profiling, and accelerating graphics algorithms.

Instructor(s)

James McCann

Click to read more...

15779
Special Topics: Advanced Topics in Machine Learning Systems (LLM Edition)
12

Machine learning (ML) techniques, especially recent advances in large language models and generative AI, have surpassed human predictive performance in a variety of real-world tasks. This success is enabled by the recent development of ML systems (e.g., PyTorch) that provide high-level programming interfaces for people to easily prototype different ML models on modern hardware platforms. In this course, we will explore the design of modern ML systems by learning how an ML model written in high-level languages is decomposed into low-level kernels and executed across heterogeneous hardware accelerators (e.g., TPUs and GPUs) in a distributed fashion. Topics covered in this course include: programming models for expressing ML models, deep learning accelerators, ML compilation, programming techniques on modern GPUs (e.g., H100 and B200), distributed training techniques, auto-parallelization, computation graph optimizations, automated kernel generation, memory optimizations, etc. The main goal of this course is to provide a comprehensive view on how existing ML systems work. Throughout this course, we will also learn the design principles behind these systems and discuss the challenges and opportunities for building future ML systems for next-generation ML applications and hardware platforms.

Instructor(s)

Zhihao Jia

Click to read more...

15780
Graduate Artificial Intelligence
12

This course provides a broad perspective on AI, with a focus on foundational principles powering modern AI. This course will cover (i) machine learning and neural networks, (ii) large language models and generative AI, (iii) search and reinforcement learning, (iv) game theory and multi-agent systems, and (v) issues of bias and unfairness in AI. The material will be presented from a mathematical perspective, with assignments emphasizing implementation alongside foundational principles.

Instructor(s)

Aditi Raghunathan

Click to read more...

Doctoral Breadth: Artificial Intelligence - (*)

15780
Graduate Artificial Intelligence
12

This course provides a broad perspective on AI, covering (i) classical approaches of search and planning useful for robotics, (ii) integer programming and continuous optimization that form the bedrock for many AI algorithms, (iii) modern machine learning techniques including deep learning that power many recent AI applications, (iv) game theory and multi-agent systems, and (v) issues of bias and unfairness in AI. In addition to understanding the theoretical foundations, we will also study modern algorithms in the research literature.

Instructor(s)

Aditi Raghunathan

Click to read more...

Doctoral Breadth: Artificial Intelligence - (*)

15780
Graduate Artificial Intelligence
12

This course provides a broad perspective on AI, covering (i) classical approaches of search and planning useful for robotics, (ii) integer programming and continuous optimization that form the bedrock for many AI algorithms, (iii) modern machine learning techniques including deep learning that power many recent AI applications, (iv) game theory and multi-agent systems, and (v) issues of bias and unfairness in AI. In addition to understanding the theoretical foundations, we will also study modern algorithms in the research literature.

Instructor(s)

Zico Kolter

Click to read more...

Doctoral Breadth: Artificial Intelligence - (*)

15783
Trustworthy AI: Theory and Practice
12

As AI systems become more capable and widely deployed, ensuring their reliability, robustness, and alignment with human intent is critical. This advanced seminar explores the principles behind building trustworthy AI, with a focus on both theoretical foundations and empirical guarantees. We will examine key challenges such as robustness to distribution shifts, adversarial attacks, data poisoning, privacy risks, and jailbreaks, as well as broader concerns in AI alignment and governance. Through a mix of foundational papers and recent advances, the class will investigate recurring themes across security, robustness, and alignment, drawing connections to classical machine learning principles and modern scaling trends. Discussions will emphasize not only what works but also why it works (or fails)—aiming to equip students with the conceptual tools to critically assess current methods and develop principled approaches for trustworthy AI. This course is designed for students interested in both theoretical insights and practical implications, bridging research in machine learning, security, and AI alignment to address some of the most pressing challenges in modern AI development. " Through a mix of foundational papers and recent advances, the class will investigate recurring themes across security, robustness, and alignment, drawing connections to classical machine learning principles and modern scaling trends. Discussions will emphasize not only what works but also why it works (or fails)—aiming to equip students with the conceptual tools to critically assess current methods and develop principled approaches for trustworthy AI. This course is designed for students interested in both theoretical insights and practical implications, bridging research in machine learning, security, and AI alignment to address some of the most pressing challenges in modern AI development.

Instructor(s)

Aditi Raghunathan

Click to read more...

Doctoral Breadth: Artificial Intelligence - (-)

15784
Cooperative AI
12

In AI and beyond, systems of multiple agents are naturally modeled using game theory. From game theory, we know that sometimes, when each agent pursues its own objectives, the outcome may be one that is bad for all agents (e.g., the Prisoner's Dilemma). Learning algorithms can indeed converge to such bad equilibria. What can be done to prevent such bad outcomes, and how should we think about designing agents in such contexts? In this course, we will approach this question from a variety of angles, ranging from traditional approaches in game theory to novel ones that fit AI better than humans.

Instructor(s)

Vincent Conitzer

Click to read more...

Doctoral Breadth: Artificial Intelligence - (-)

15789
Theoretical and Empirical Foundations of Modern Machine Learning
12

In this advanced machine learning seminar class, we tackle the typical struggle in using the modern machinery including large language models and other foundation models: what works and why? How do we make things more reliable and robust? We build a conceptual understanding of deep learning and foundation models through several different angles: standard in-distribution generalization, out-of-distribution generalization, self-supervised learning, data curation, scaling laws, alignment etc. We will read papers that contain a mix of theoretical and empirical insights with a focus on making connections to classic ideas, identifying recurring themes, and discussing avenues for future developments. The class aims to equip students with the ability to critically reason about and build a more principled understanding of current advances which will hopefully spark their own research.

Instructor(s)

Aditi Raghunathan

Click to read more...

15791
Advanced Topics in Foundations of Programming Languages
12

An advanced follow-on to 15-312 developing further ideas and results in the theory of programming languages.

Instructor(s)

Robert Harper

Click to read more...

15793
Secure Computer Systems
12

This course is broadly focused on full-stack system security and will cover the foundations of building secure systems and cryptography. During the course we will cover hardware, system software, and cryptographic primitives for building secure systems, both within the datacenter environment and in the decentralized setting. The course will focus on the cross-cutting security requirements of systems and how to bolster their security guarantees using a combination of systems and cryptographic techniques. The lectures will cover fundamental security concepts (e.g., threat models, trusted computing base), and do a deep dive into state-of-the-art attacks and defenses (e.g., speculative execution attacks). The course will span a set of hardware security topics including trusted execution environments, side-channels, hardware attacks (e.g., Meltdown, Spectre, Rowhammer), software systems such as blockchains, anonymous messaging, and secure machine learning.

Instructor(s)

Dimitrios Skarlatos
Wenting Zheng

Click to read more...

15793
Secure Computer Systems
12

This course is broadly focused on full-stack system security and will cover the foundations of building secure systems and cryptography. During the course we will cover hardware, system software, and cryptographic primitives for building secure systems, both within the datacenter environment and in the decentralized setting. The course will focus on the cross-cutting security requirements of systems and how to bolster their security guarantees using a combination of systems and cryptographic techniques. The lectures will cover fundamental security concepts (e.g., threat models, trusted computing base), and do a deep dive into state-of-the-art attacks and defenses (e.g., speculative execution attacks). The course will span a set of hardware security topics including trusted execution environments, side-channels, hardware attacks (e.g., Meltdown, Spectre, Rowhammer), software systems such as blockchains, anonymous messaging, and secure machine learning.

Instructor(s)

Dimitrios Skarlatos
Wenting Zheng

Click to read more...

15795
Topics in Algorithmic Problem Solving
12

This course aims to give implementation motivated perspectives on some algorithmic ideas that fall outside of the scopes of typical algorithms courses. It is intended for graduate students, as well as undergraduate students who have high grades in 15-451, and 15-259 or 21-325. The first half of the course will discuss floating point precision, numerical approximation schemes, heuristic search, usage of optimization packages, and vectorization. The second half will provide high-level surveys of 2-D range update & query data structures, proactive propagation, and iterative methods. Evaluations will consist of about 30 auto-graded coding tasks, plus either participation in the ICPC NAEast Programming Contest, or presentations of problem-solving reports from various OI team selections.

Instructor(s)

Richard Peng

Click to read more...

15795
Algebraic and Numerical Algorithms
12

This course will provide some implementation motivated perspectives on algebraic and numerical algorithms, and will somewhat follow the Complexity and Linear Algebra semester program at the Simons Institute in Fall 2025 (https://simons.berkeley.edu/programs/complexity-linear-algebra). It will normally meet on Wednesdays and Fridays, with some Monday meetings to fit the schedule of the program.

Instructor(s)

Richard Peng

Click to read more...

15798
Special Topic: Generative AI for Music and Audio
12

In this seminar class, we will discuss state-of-the-art methods in generative AI for music and general audio (everyday sounds, speech, bioacoustics, etc.), with applications to both generation and understanding. We will examine and compare the two primary families of methods that are used in modern audio generation research: large language models applied to discrete audio tokens, and diffusion models applied to continuous audio representations. With an eye towards offering intuitive controls for music generation, we will also examine classic methods and tasks in music information retrieval such as spectral analysis, synchronization, beat detection, and transcription. Moreover, we will explore emerging topics in generative AI for music and audio such as new architectures, training data attribution, interaction, compression, multimodality, and evaluation. Finally, we will discuss the ethical and societal implications of music generation specifically, and its potential effects on music both economically and culturally. Much of the course activity will center around (1) in-class lectures and demonstrations on small scale datasets, (2) student-led discussions of research papers, and (3) an open-ended research project.

Instructor(s)

Chris Donahue

Click to read more...

15799
Special Topics in Database Systems: Query Optimization
12

This course is a hands-on exploration of the most challenging problem in computer science: database query optimization. It will cover the classical and state-of-the-art methods and algorithms for converting SQL statements into physical query plans. Additional topics include cost models, feedback mechanisms, and adaptive query optimization. All class projects will be in the context of an open-source query optimizer service using real-world queries. The course is appropriate for graduate students in software systems and advanced undergraduates with nasty programming skills that are pursuing a database-centric lifestyle.

Instructor(s)

Andrew Pavlo

Click to read more...

15801
CS PhD Alternative Elective
varies

This number is used internally by the department to transfer approved courses for elective credit.

Click to read more...

15801
CS PhD Alternative Elective
varies

This number is used internally by the department to transfer approved courses for elective credit.

Instructor(s)

Karl Crary

Click to read more...

15801
CS PhD Alternative Elective
varies

This course number is used by the department for approved alternate electives for doctoral students.

Click to read more...

15801
CS PhD Alternative Elective
varies

This course number is used by the department for approved alternate electives for doctoral students.

Click to read more...

15802
CSD PhD Elective
varies

This course number is used for internal course transfer for approved electives outside CSD

Click to read more...

15802
CSD PhD Elective
varies

This course number is used for internal course transfer for approved electives outside CSD

Instructor(s)

Karl Crary

Click to read more...

15802
CSD PhD Elective
varies

This course number is used by the department for approved alternate electives for doctoral students.

Click to read more...

15802
CSD PhD Elective
varies

This course number is used by the department for approved alternate electives for doctoral students.

Click to read more...

15812
Programming Language Semantics
12

This lecture course introduces the foundational concepts and techniques of programming language semantics. The aim is to demonstrate the utility of a scientific approach, based on mathematics and logic, with applications to program analysis, language design, and compiler correctness. We introduce the concepts and techniques associated with the most well established and generally applicable frameworks for semantic description: the denotational, operational, and axiomatic styles of semantic description. We use semantics to analyze program behavior, guide the development of correct programs, prove correctness of a compiler, validate logics for program correctness, and derive general laws of program equivalence. We will discuss a variety of imperative and functional languages, sequential and parallel, as time permits.

Instructor(s)

Stephen Brookes

Click to read more...

Doctoral Breadth: Programming Languages - (*)

15814
Types and Programming Languages
12

The course studies the theory of type systems, with a focus on applications of type systems to practical programming languages. The emphasis is on the mathematical foundations underlying type systems and operational semantics. The course includes a broad survey of the components that make up existing type systems, and also teaches the methodology behind the design of new type systems.

Instructor(s)

Jan Hoffmann

Click to read more...

Doctoral Breadth: Programming Languages - (*)

15814
Types and Programming Languages
12

The course studies the theory of type systems, with a focus on applications of type systems to practical programming languages. The emphasis is on the mathematical foundations underlying type systems and operational semantics. The course includes a broad survey of the components that make up existing type systems, and also teaches the methodology behind the design of new type systems.

Instructor(s)

Frank Pfenning

Click to read more...

Doctoral Breadth: Programming Languages - (*)

15816
Advanced Topics in Logic: Automated Reasoning and Satisfiability
12

Automated reasoning has become a powerful technology with applications ranging from verification of hardware and software to solving long-standing open problems in mathematics. This course covers several state-of-the-art automated reasoning techniques and provides hands-on experience with research questions in this area.

Instructor(s)

Marijn Heule

Click to read more...

Doctoral Breadth: Programming Languages - (*)

15816
Advanced Topics in Logic: Automated Reasoning and Satisfiability
12

Automated reasoning has become a powerful technology with applications ranging from verification of hardware and software to solving long-standing open problems in mathematics. This course covers several state-of-the-art automated reasoning techniques and provides hands-on experience with research questions in this area.

Instructor(s)

Ruben Martins

Click to read more...

Doctoral Breadth: Programming Languages - (*)

15817
HOT Compilation
12

The course covers the implementation of compilers for higher-order typed languages such as ML and Haskell and gives an introduction to type-preserving compilation. Core topics include type checking and inference, elaboration, closure conversion, garbage collection, and translation to a low-level imperative language. Other topics may vary from year to year and include phase splitting, CPS conversion, typed assembly language, substructural and adjoint type systems, intersection types, and variable lifetimes.

Instructor(s)

Frank Pfenning

Click to read more...

15819
Special Topic: Probabilistic Programming Languages
12

Probabilistic programs are traditional computer programs that are augmented with the ability to make and constrain random choices. These techniques form the basis of Monte Carlo simulation, randomized algorithms, and statistical inference in probabilistic models from machine learning and artificial intelligence. What are the principles for developing probabilistic programming systems, and how can we use them in practice? This course provides a first introduction to probabilistic programming from theoretical and applied perspectives. The first part of the course covers foundational concepts in probabilistic language design and semantics. The second part covers algorithms and programmatic interfaces for inference, learning, and reasoning with probabilistic programs. Applications will be given in topics that range from program analysis to data science.

Instructor(s)

Feras Saad
Jan Hoffmann

Click to read more...

15819
Advanced Topics in Programming Language Theory
12

TBA

Instructor(s)

Karl Crary

Click to read more...

15821
Mobile and Pervasive Computing
12

This is a course exploring research issues in mobile computing and its close relative, pervasive computing (aka "Internet of Things (IoT)"). Many traditional areas of computer science and computer engineering are impacted by the constraints and demands of mobile and pervasive computing. The course will offer significant hands-on experience: students will work in small groups under the guidance of a mentor on a project. Each student will present a research paper from the literature in a conference-style 30-minute talk. In teams of two, students will present a short (30 minutes) overview of the commercial landscape for one of the topics covered in class. There will a brief quiz at the start of each class, based on the readings for that class. Prerequisites Knowledge of operating systems, distributed systems, and computer architecture. If in doubt, check with one of the instructors before registering.

Instructor(s)

Mahadev Satyanarayanan
Asim Smailagic

Click to read more...

Doctoral Breadth: Software Systems - (-)

15821
Mobile and Pervasive Computing
12

This is a course exploring research issues in mobile computing and its close relative, pervasive computing (aka "Internet of Things (IoT)"). Many traditional areas of computer science and computer engineering are impacted by the constraints and demands of mobile and pervasive computing. The course will offer significant hands-on experience: students will work in small groups under the guidance of a mentor on a project. Each student will present a research paper from the literature in a conference-style 30-minute talk. In teams of two, students will present a short (30 minutes) overview of the commercial landscape for one of the topics covered in class. There will a brief quiz at the start of each class, based on the readings for that class. Prerequisites Knowledge of operating systems, distributed systems, and computer architecture. If in doubt, check with one of the instructors before registering.

Instructor(s)

Mahadev Satyanarayanan
Asim Smailagic
Babu Pillai

Click to read more...

Doctoral Breadth: Software Systems - (-)

15826
Multimedia and Data Mining
12

The course covers advanced algorithms for learning, analysis, data management and visualization of large datasets. Topics include indexing for text and DNA databases, searching medical and multimedia databases by content, fundamental signal processing methods, compression, fractals in databases, data mining, privacy and security issues, rule discovery, data visualization, graph mining, stream mining.

Instructor(s)

Christos Faloutsos

Click to read more...

Doctoral Breadth: Software Systems - (-)

15826
Multimedia and Data Mining
12

The course covers advanced algorithms for learning, analysis, data management and visualization of large datasets. Topics include indexing for text and DNA databases, searching medical and multimedia databases by content, fundamental signal processing methods, compression, fractals in databases, data mining, privacy and security issues, rule discovery, data visualization, graph mining, stream mining.

Instructor(s)

Christos Faloutsos

Click to read more...

Doctoral Breadth: Software Systems - (-)

15827
Foundations of Blockchains and Distributed Consensus
12

In this course, you will learn the mathematical foundations of distributed consensus as well as how to construct consensus protocols and prove them secure. We will motivate distributed consensus with a modern narrative, and yet we will cover the classical theoretical foundations of consensus.

Click to read more...

15850
Advanced Algorithms
12

An intensive graduate course on the design and analysis of algorithms.

Instructor(s)

Jason Li

Click to read more...

15851
Algorithms for Big Data
12

With the growing number of massive datasets in applications such as machine learning and numerical linear algebra, classical algorithms for processing such datasets are often no longer feasible. In this course we will cover algorithmic techniques, models, and lower bounds for handling such data. A common theme is the use of randomized methods, such as sketching and sampling, to provide dimensionality reduction. In the context of optimization problems, this leads to faster algorithms, and we will see examples of this in the form of least squares regression and low rank approximation of matrices and tensors, as well as robust variants of these problems. In the context of distributed algorithms, dimensionality reduction leads to communication-efficient protocols, while in the context of data stream algorithms, it leads to memory-efficient algorithms. We will study some of the above problems in such models, such as low rank approximation, but also consider a variety of classical streaming problems such as counting distinct elements, finding frequent items, and estimating norms. Finally we will study lower bound methods in these models showing that many of the algorithms we covered are optimal or near-optimal. Such methods are often based on communication complexity and information-theoretic arguments.

Instructor(s)

David Woodruff

Click to read more...

Doctoral Breadth: Algorithms and Complexity - (*)

15851
Algorithms for Big Data
12

With the growing number of massive datasets in applications such as machine learning and numerical linear algebra, classical algorithms for processing such datasets are often no longer feasible. 

In this course we will cover algorithmic techniques, models, and lower bounds for handling such data. A common theme is the use of randomized methods, such as sketching and sampling, to provide dimensionality reduction. In the context of optimization problems, this leads to faster algorithms, and we will see examples of this in the form of least squares regression and low rank approximation of matrices and tensors, as well as robust variants of these problems. In the context of distributed algorithms, dimensionality reduction leads to communication-efficient protocols, while in the context of data stream algorithms, it leads to memory-efficient algorithms. We will study some of the above problems in such models, such as low rank approximation, but also consider a variety of classical streaming problems such as counting distinct elements, finding frequent items, and estimating norms. Finally we will study lower bound methods in these models showing that many of the algorithms we covered are optimal or near-optimal. Such methods are often based on communication complexity and information-theoretic arguments.

Instructor(s)

David Woodruff

Click to read more...

Doctoral Breadth: Algorithms and Complexity - (*)

15852
Parallel and Concurrent Algorithms
12

TBD

Instructor(s)

Guy Blelloch

Click to read more...

15852
Parallel and Concurrent Algorithms
12

This is an advanced course on the theory, and some practice, of parallel and concurrent algorithms. We will start by discussing models and then go through a variety of topics including algorithms for sorting, strings, graphs, and geometry. The focus will be on so-called work-efficient algorithms (i.e. algorithms that do more work than their sequential counterpart). The goal is both to get a broad view of the techniques used to design of such algorithms, as well as going into some depth on a handful of recent breakthroughs in the design of parallel algorithms. We will discuss practical implementations of most of the algorithms we cover.

Instructor(s)

Guy Blelloch

Click to read more...

Doctoral Breadth: Algorithms and Complexity - (*)

15853
Theory of Markov Processes: Selected Topics with Applications in ML and GenAI
12

Markov processes are a fundamental mathematical concept with broad applications, including emerging fields such as reinforcement learning and diffusion models. This course is structured into two parts. Part I covers the core theory of Markov processes, including discrete-time and continuous-time Markov chains, as well as Markov processes with continuous state space such as diffusion processes. Part II builds on the core theory and covers selected topics in the theoretical foundation of reinforcement learning and diffusion models in generative AI.

Instructor(s)

Weina Wang

Click to read more...

15856
Introduction to Cryptography
12

This course is aimed as an introduction to modern cryptography. This course will be a mix of applied and theoretical cryptography.

Instructor(s)

Aayush Jain

Click to read more...

Doctoral Breadth: Algorithms and Complexity - (*)

15856
Introduction to Cryptography
12

This course is aimed as an introduction to modern cryptography. This course will be a mix of applied and theoretical cryptography.

Instructor(s)

Aayush Jain

Click to read more...

Doctoral Breadth: Algorithms and Complexity - (*)