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
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 - (*)
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 - (*)
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 - (*)
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 - (*)
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 - (-)
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...
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...
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...
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...
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)
Wenting Zheng
Click to read more...
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...
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...
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...
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...
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...
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...
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...
This course number is used by the department for approved alternate electives for doctoral students.
Click to read more...
This course number is used by the department for approved alternate electives for doctoral students.
Click to read more...
This number is used internally by the department to transfer approved courses for elective credit.
Instructor(s)
Karl Crary
Click to read more...
This number is used internally by the department to transfer approved courses for elective credit.
Instructor(s)
Karl Crary
Click to read more...
This number is used internally by the department to transfer approved courses for elective credit.
Click to read more...
This course number is used by the department for approved alternate electives for doctoral students.
Click to read more...
This course number is used by the department for approved alternate electives for doctoral students.
Click to read more...
This course number is used by the department for approved alternate electives for doctoral students.
Click to read more...
This course number is used for internal course transfer for approved electives outside CSD
Instructor(s)
Karl Crary
Click to read more...
This course number is used for internal course transfer for approved electives outside CSD
Instructor(s)
Karl Crary
Click to read more...
This course number is used for internal course transfer for approved electives outside CSD
Click to read more...
This course number is used by the department for approved alternate electives for doctoral students.
Click to read more...
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 - (*)
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 - (*)
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 - (*)
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 - (*)
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 - (*)
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 - (*)
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 - (*)
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...
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...
TBA
Instructor(s)
Karl Crary
Click to read more...
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)
Babu Pillai
Mahadev Satyanarayanan
Click to read more...
Doctoral Breadth: Software Systems - (-)
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 - (-)
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 - (-)
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 - (-)
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 - (-)
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 - (-)
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...
This graduate course provides an introduction to substructural logics, such as linear, ordered, affine, bunched, or separation logic, with an emphasis on their applications in computer science. This includes the design and theory of programming constructs for concurrent message-passing computation and techniques for specifying and reasoning about programming languages in the form of substructural operational semantics.
Instructor(s)
Frank Pfenning
Click to read more...
An intensive graduate course on the design and analysis of algorithms.
Instructor(s)
Jason Li
Click to read more...
Doctoral Breadth: Algorithms and Complexity - (-)
An intensive graduate course on the design and analysis of algorithms.
Instructor(s)
Jason Li
Click to read more...
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 - (*)
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 - (*)
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 - (*)
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...
Potential topics: Models and Time Hierarchy Theorem. Nondeterminism, padding, Hopcroft-Paul-Valiant Theorem. Circuits and advice. Randomized classes. Cook-Levin Theorem and SAT. Nondeterministic Time Hierarchy Theorem, and nondeterministic models. Oracles, alternation, and the Polynomial Time Hierarchy. Kannan's Theorem, Karp-Lipton, and PH vs. constant-depth circuits. Time-Space tradeoffs for SAT. Randomized classes vs. PH. Interactive proofs and the AM hierarchy. NP in BPP implies PH in BPP, and Boppana-Hastad-Zachos. BCGKT Theorem and Cai's Theorem. Counting classes and the permanent. Valiant's Theorem. Algebraic Complexity. IP = PSPACE and interactive proofs. Instance checkers and Santhanam's Theorem. Random restrictions and AC0 lower bounds for parity. Monotone circuit lower bounds. Razborov-Smolensky lower bounds for AC0[p]. Valiant-Vazirani and Toda Theorems. Beigel-Tarui Theorem. Hardness vs. Randomness and Nisan-Wigderson. Hardness amplification and derandomization. Williams's Theorem. Natural proofs and barriers.
Instructor(s)
Ryan O'Donnell
Click to read more...
Doctoral Breadth: Algorithms and Complexity - (-)
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 - (*)
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 - (*)
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 - (*)
In designing computer systems one is usually constrained by certain performance requirements and limitations. For example, one might need to guarantee a response time SLA or certain throughput requirement, while at the same time staying within a power budget or cost budget. On the other hand, one often has many choices: One fast disk, or two slow ones? More memory, or a faster processor? A fair scheduler or one that minimizes mean response time? For multi-server systems, one can choose from a wide array of load balancing policies, a wide array of migration policies, capacity provisioning schemes, power management policies ... The possibilities are endless. The best choices are often counter-intuitive. Ideally, one would like to have answers to these questions before investing the time and money to build a system. This class will introduce students to analytic stochastic modeling with the aim of answering the above questions.
Instructor(s)
Mor Harchol-Balter
Click to read more...
Doctoral Breadth: Algorithms and Complexity - (*)
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 - (*)