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

15697
Graduate Reading and Research
varies

This course number is intended to be used to register for master's degree reading and research units.

Instructor(s)

Angy Malloy
Andrew Pavlo
Ruben Martins
Dave Eckhardt

Click to read more...

15697
Graduate Reading and Research
varies

Research course for students pursuing a thesis in the 5th Year Master of Science Program. Working 1 on 1 with faculty and their graduate students.

Instructor(s)

Ruben Martins
Dave Eckhardt

Click to read more...

15697
Graduate Reading and Research
varies

Research course for students pursuing a thesis in the 5th Year Master of Science Program. Working 1 on 1 with faculty and their graduate students.

Instructor(s)

Ruben Martins

Dave Eckhardt
David O'Hallaron

Click to read more...

15697
Graduate Reading and Research
varies

Research course for students pursuing a thesis in the 5th Year Master of Science Program. Working 1 on 1 with faculty and their graduate students.

Instructor(s)

Angy Malloy
Ruben Martins
Dave Eckhardt

Click to read more...

15697
Graduate Reading and Research
varies

This course number is intended to be used to register for master's degree reading and research units.

Instructor(s)

Ruben Martins

Dave Eckhardt

Click to read more...

15697
Graduate Reading and Research
varies

No course description provided.

Instructor(s)

Dave Eckhardt
Ruben Martins

Click to read more...

15697
Graduate Reading and Research
varies

This course number is for registering for reading and research while working on research and your dissertation.

Instructor(s)

Dave Eckhardt
David O'Hallaron

Click to read more...

15698
MSCS Research Thesis
varies

This course is for students in the "MSCS" course-based Computer Science master's program who are participating in the thesis option. Students will be automatically wait-listed pending program approval of a thesis proposal (contact your academic advisor for details).

Click to read more...

15698
MSCS Research Thesis
varies

This course is for students in the "MSCS" course-based Computer Science master's program who are participating in the thesis option. Students will be automatically wait-listed pending program approval of a thesis proposal (contact your academic advisor for details).

Instructor(s)

Dave Eckhardt
David O'Hallaron

Click to read more...

15698
MSCS Research Thesis
varies

This course is for students in the "MSCS" course-based Computer Science master's program who are participating in the thesis option. Students will be automatically wait-listed pending program approval of a thesis proposal (contact your academic advisor for details).

Instructor(s)

Dave Eckhardt
Ruben Martins

Click to read more...

15698
MSCS Research Thesis
varies

This course is for students in the "MSCS" course-based Computer Science master's program who are participating in the thesis option. Students will be automatically wait-listed pending program approval of a thesis proposal (contact your academic advisor for details).

Instructor(s)

Ruben Martins
Dave Eckhardt

Click to read more...

15698
MSCS Research Thesis
varies

This course is for students in the "MSCS" course-based Computer Science master's program who are participating in the thesis option. Students will be automatically wait-listed pending program approval of a thesis proposal (contact your academic advisor for details).

Instructor(s)

Dave Eckhardt
Ruben Martins

Click to read more...

15698
MSCS Research Thesis
varies

This course is for students in the "MSCS" course-based Computer Science master's program who are participating in the thesis option. Students will be automatically wait-listed pending program approval of a thesis proposal (contact your academic advisor for details).

Instructor(s)

Ruben Martins
Dave Eckhardt

Click to read more...

15698
MSCS Research Thesis
varies

This course is for students in the "MSCS" course-based Computer Science master's program who are participating in the thesis option. Students will be automatically wait-listed pending program approval of a thesis proposal (contact your academic advisor for details).

Instructor(s)

Ruben Martins
Dave Eckhardt
David O'Hallaron

Click to read more...

15698
MSCS Research Thesis
varies

This course is for students in the "MSCS" course-based Computer Science master's program who are participating in the thesis option. Students will be automatically wait-listed pending program approval of a thesis proposal (contact your academic advisor for details).

Instructor(s)

Ruben Martins
Dave Eckhardt

Click to read more...

15698
MSCS Research Thesis
varies

This course is for students in the "MSCS" course-based Computer Science master's program who are participating in the thesis option. Students will be automatically wait-listed pending program approval of a thesis proposal (contact your academic advisor for details).

Instructor(s)

Ruben Martins
Dave Eckhardt

Click to read more...

15698
MSCS Research Thesis
varies

This course is for students in the "MSCS" course-based Computer Science master's program who are participating in the thesis option. Students will be automatically wait-listed pending program approval of a thesis proposal (contact your academic advisor for details).

Instructor(s)

Dave Eckhardt
Ruben Martins

Click to read more...

15712
Advanced Operating Systems and Distributed Systems
12

This is a graduate course in operating systems. The course will consist of a reading/lecture/discussion component and a project component. The class will cover approximately 40 research papers. Some of these papers will introduce students to the basic principles on which modern operating systems and distributed systems are based. Others will cover more recent work to explore the state of the art and observe the evolution of these systems over time.

Instructor(s)

David Andersen
Peter Steenkiste

Click to read more...

Doctoral Breadth: Software Systems - (*)

15712
Advanced Operating Systems and Distributed Systems
12

This is a graduate course in operating systems. The course will consist of a reading/lecture/discussion component and a project component. The class will cover approximately 40 research papers. Some of these papers will introduce students to the basic principles on which modern operating systems and distributed systems are based. Others will cover more recent work to explore the state of the art and observe the evolution of these systems over time.

Instructor(s)

David Andersen

Click to read more...

Doctoral Breadth: Software Systems - (*)

15712
Advanced Operating Systems and Distributed Systems
12

This is a graduate course in operating systems. The course will consist of a reading/lecture/discussion component and a project component. The class will cover approximately 40 research papers. Some of these papers will introduce students to the basic principles on which modern operating systems and distributed systems are based. Others will cover more recent work to explore the state of the art and observe the evolution of these systems over time.

Instructor(s)

David Andersen

Click to read more...

Doctoral Breadth: Software Systems - (*)

15713
Advanced 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...

15713
Advanced 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...

15713
Advanced 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...

15714
Resource Aware Programming Languages
12

Resource use—the amount of time, memory, and energy a program requires for its execution—is one of the central subjects of computer science. Nevertheless, resource use traditionally does not play a central role in programming-language concepts, such as operational semantics, type systems, and program logics. This course revisits these concepts to model and analyze resource use of programs in a compositional and mathematically-precise way. The emphasis is on practical, type-based techniques that automatically inform programmers about the resource use of their code. We first study such techniques for functional programs and then develop generalizations to imperative, probabilistic, and concurrent programs.

Instructor(s)

Jan Hoffmann

Click to read more...

15718
Advanced Topics in PL Theory: Istari
12

The course covers the Istari proof assistant: its type theory and its practical use in proving theorems and reasoning about programs.

Instructor(s)

Karl Crary

Click to read more...

15718
Theorem Proving in Istari
12

The course covers the Istari proof assistant: its type theory and its practical use in proving theorems and reasoning about programs.

Instructor(s)

Karl Crary

Click to read more...

15719
Advanced Cloud Computing
12

Computing in the cloud has emerged as a leading paradigm for cost-effective, scalable, well-managed computing. Users pay for services provided in a broadly shared, power efficient datacenter, enabling dynamic computing needs to be met without paying for more than is needed. Actual machines may be virtualized into machine-like services, or more abstract programming platforms, or application-specific services, with the cloud computing infrastructure managing sharing, scheduling, reliability, availability, elasticity, privacy, provisioning and geographic replication This course will survey the aspects of cloud computing by reading about 30 papers and articles, executing cloud computing tasks on a state of the art cloud computing service, and implementing a change or feature in a state of the art cloud computing framework. There will be no final exam, but there will be two in class exams. Grades will be about 50 project work and about 50 examination results.

Instructor(s)

Gregory Ganger
Majd Sakr

Click to read more...

Doctoral Breadth: Software Systems - (-)

15719
Advanced Cloud Computing
12

Computing in the cloud has emerged as a leading paradigm for cost-effective, scalable, well-managed computing. Users pay for services provided in a broadly shared, power efficient datacenter, enabling dynamic computing needs to be met without paying for more than is needed. Actual machines may be virtualized into machine-like services, or more abstract programming platforms, or application-specific services, with the cloud computing infrastructure managing sharing, scheduling, reliability, availability, elasticity, privacy, provisioning and geographic replication This course will survey the aspects of cloud computing by reading about 30 papers and articles, executing cloud computing tasks on a state of the art cloud computing service, and implementing a change or feature in a state of the art cloud computing framework. There will be no final exam, but there will be two in class exams. Grades will be about 50 project work and about 50 examination results.

Instructor(s)

Majd Sakr
Gregory Ganger

Click to read more...

Doctoral Breadth: Software Systems - (-)

15721
Advanced Database Systems
12

This course is a comprehensive study of the internals of modern database management systems. It will cover the core concepts and fundamentals of the components that are used in large-scale analytical systems (OLAP). The class will stress both efficiency and correctness of the implementation of these ideas.

Instructor(s)

Andrew Pavlo

Click to read more...

15721
Advanced Database Systems
12

This course is a comprehensive study of the internals of modern database management systems. It will cover the core concepts and fundamentals of the components that are used in large-scale analytical systems (OLAP). The class will stress both efficiency and correctness of the implementation of these ideas.

Instructor(s)

Jignesh Patel

Click to read more...

Doctoral Breadth: Software Systems - (*)

15721
Advanced Database Systems
12

This course is a comprehensive study of the internals of modern database management systems. It will cover the core concepts and fundamentals of the components that are used in large-scale analytical systems (OLAP). The class will stress both efficiency and correctness of the implementation of these ideas.

Instructor(s)

Jignesh Patel

Click to read more...

15729
Special Topic: First Person - Conversations with Founders and Investors
3

First Person is a weekly speaker series that brings the most consequential people in the startup economy into one room with students from across CMU. These are the field's leading founders, operators, CEOs, and investors, along with the researchers and builders shaping where the frontier goes next, in candid conversation about the work of starting, financing, scaling, and running a venture. It runs as two independent minis in the spring, First Person: Winter Sessions in Mini 3 and First Person: Spring Sessions in Mini 4, each with its own slate of guests. Students can take either on its own or both across the semester, and a follow-on seminar allows for a smaller case discussion with that week's guest.

Instructor(s)

Meredith Grelli

Click to read more...

15735
Foundations of Blockchains
12

In this course, students will learn the mathematical foundations of blockchains, including how to construct distributed consensus protocols and prove them secure, cryptography for blockchains, and mechanism design for blockchains. Students may also be expected to implement some consensus or cryptographic algorithms.

Instructor(s)

Elaine Shi

Click to read more...

15740
Computer Architecture
12

This course attempts to provide a deep understanding of the issues and challenges involved in designing and implementing modern computer systems. Our primary goal is to help students become more skilled in their use of computer systems, including the development of applications and system software. Users can benefit greatly from understanding how computer systems work, including their strengths and weaknesses. This is particularly true in developing applications where performance is an issue. 

Instructor(s)

Dimitrios Skarlatos

Click to read more...

Doctoral Breadth: Computer Systems - (*)

15740
Computer Architecture
12

This course attempts to provide a deep understanding of the issues and challenges involved in designing and implementing modern computer systems. Our primary goal is to help students become more skilled in their use of computer systems, including the development of applications and system software. Users can benefit greatly from understanding how computer systems work, including their strengths and weaknesses. This is particularly true in developing applications where performance is an issue.

Instructor(s)

Dimitrios Skarlatos

Click to read more...

Doctoral Breadth: Computer Systems - (*)

15740
Computer Architecture
12

This course attempts to provide a deep understanding of the issues and challenges involved in designing and implementing modern computer systems. Our primary goal is to help students become more skilled in their use of computer systems, including the development of applications and system software. Users can benefit greatly from understanding how computer systems work, including their strengths and weaknesses. This is particularly true in developing applications where performance is an issue.

Instructor(s)

Dimitrios Skarlatos

Click to read more...

Doctoral Breadth: Computer Systems - (*)

15744
Computer Networks
12

15-744 is a doctoral course in computer networking research. The goals are: To understand the state of the art in network protocols, network architecture, and networked systems. To engage with systems research at a scholarly level through written and oral argument. To investigate novel ideas and make new scholarly arguments through a semester-long research project in computer networking.

Instructor(s)

Justine Sherry
Nirav Atre

Click to read more...

Doctoral Breadth: Software Systems - (*)

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: Computer Systems - (*)

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 - (*)

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: Computer Systems - (*)

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...

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...

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)

Jason Li

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)

Danny Sleator
Rashmi Korlakai Vinayak

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...

15759
Special Topics in Theory: Coding Theory and Applications to Cryptography
12

In this course, we will cover applications of coding thoery in cryptography. The course would start off with some basic algebraic coding theory, and then cover some exciting applications in code-based cryptography (such as Private information retrival, MPC, Post-Quantum cryptography and such).

Instructor(s)

Aayush Jain

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...

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 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...

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 - (*)

15769
Special Topics in Graphics: Numerical Method (Foundations, ML, Visual Computing)
12

Many problems in machine learning, visual computing, robotics, and mechanics lack exact analytical solutions. Numerical computing provides powerful techniques to approximate these solutions using computational methods, combining applied math and programming to solve real-world problems such as simulation, optimization, and data analysis. The course begins with a review on calculus and linear algebra, followed by an introduction to how numbers are represented on computers and error analysis. It then moves on to core topics, including matrix factorization, solving linear and nonlinear systems, optimization, and numerical solution of differential equations. Students will gain hands-on experience developing numerical algorithms and learn to balance accuracy, stability, and efficiency in problem-specific contexts, such as image processing, physics-based animation, motion planning and control, structural analysis, etc.

Instructor(s)

Minchen Li

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...

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...