Whiteboard

Fall 2026 Courses

Fall 2026 registration week is April 13-17 2026. See the HUB steps to register for guidance.

First day of classes is August 24, 2026.

You can toggle for Graduate or Undergraduate or search by course number. 

15651
Algorithm Design and Analysis
12

This course is intended for SCS graduate students. All other graduate students should register for 15-650. This course is about the design and analysis of algorithms. We study specific algorithms for a variety of problems, as well as general design and analysis techniques. Specific topics include searching, sorting, algorithms for graph problems, efficient data structures, lower bounds and NP-completeness. A variety of other topics may be covered at the discretion of the instructor. These include parallel algorithms, randomized algorithms, geometric algorithms, low level techniques for efficient programming, cryptography, and cryptographic protocols.

Instructor(s)

Jason Li
Danny Sleator

Click to read more...

15652
Foundations of Programming Languages
12

This course discusses in depth many of the concepts underlying the design, definition, implementation, and use of modern programming languages. Formal approaches to defining the syntax and semantics are used to describe the fundamental concepts underlying programming languages. A variety of programming paradigms are covered such as imperative, functional, logic, and concurrent programming. In addition to the formal studies, experience with programming in the languages is used to illustrate how different design goals can lead to radically different languages and models of computation.

Instructor(s)

Robert Harper

Click to read more...

15657
Constructive Logic
9

This multidisciplinary junior-level course is designed to provide a thorough introduction to modern constructive logic, its roots in philosophy, its numerous applications in computer science, and its mathematical properties. Some of the topics to be covered are intuitionistic logic, inductive definitions, functional programming, type theory, realizability, connections between classical and constructive logic, decidable classes. This course counts as a Fundamentals course in the Computer Science major.

Instructor(s)

Karl Crary

Click to read more...

15659
Probability & Computing: Randomized Algs and Markov Chains
12

Probability theory has become indispensable in computer science. In areas such as artificial intelligence and computer science theory, probabilistic methods and ideas based on randomization are central. In other areas such as networks and systems, probability is becoming an increasingly useful framework for handling uncertainty and modeling the patterns of data that occur in complex systems. This course is a follow-up course to 15-259, Probability and Computing. It will cover Chapters 18-27 of the same textbook, "Introduction to Probability for Computing", by Prof. Harchol-Balter. Topics include concentration inequalities, various randomized algorithms including number theoretic routines, Markov chains and their many applications, and queueing theory. The course will assume familiarity with multivariate calculus and linear algebra.

Instructor(s)

Weina Wang

Click to read more...

15662
Computer Graphics
12

This course provides a comprehensive introduction to computer graphics modeling, animation, and rendering. Topics covered include basic image processing, geometric transformations, geometric modeling of curves and surfaces, animation, 3-D viewing, visibility algorithms, shading, and ray tracing.

Instructor(s)

Oscar Dadfar

Click to read more...

15663
Computational Photography
12

Computational photography is the convergence of computer graphics, computer vision and imaging. Its role is to overcome the limitations of the traditional camera, by combining imaging and computation to enable new and enhanced ways of capturing, representing, and interacting with the physical world. This advanced undergraduate course provides a comprehensive overview of the state of the art in computational photography. At the start of the course, we will study modern image processing pipelines, including those encountered on mobile phone and DSLR cameras, and advanced image and video editing algorithms. Then we will proceed to learn about the physical and computational aspects of tasks such as 3D scanning, coded photography, lightfield imaging, time-of-flight imaging, VR/AR displays, and computational light transport. Near the end of the course, we will discuss active research topics, such as creating cameras that capture video at the speed of light, cameras that look around walls, or cameras that can see through tissue. The course has a strong hands-on component, in the form of seven homework assignments and a final project. In the homework assignments, students will have the opportunity to implement many of the techniques covered in the class, by both acquiring their own images of indoor and outdoor scenes and developing the computational tools needed to extract information from them. For their final projects, students will have the choice to use modern sensors provided by the instructors (lightfield cameras, time-of-flight cameras, depth sensors, structured light systems, etc.).

Instructor(s)

Ioannis Gkioulekas

Click to read more...

15666
Computer Game Programming
12

The goal of this course is to acquaint students with the code required to turn ideas into games. This includes both runtime systems -- e.g., AI, sound, physics, rendering, and networking -- and the asset pipelines and creative tools that make it possible to author content that uses these systems. In the first part of the course, students will implement small games that focus on specific runtime systems, along with appropriate asset editors or exporters. In the second part, students will work in groups to build a larger, polished, open-ended game project. Students who have completed the course will have the skills required to extend -- or build from scratch -- a modern computer game. Students wishing to take this class should be familiar with the C++ language and have a basic understanding of the OpenGL API. If you meet these requirements but have not taken Computer Graphics (the formal prerequisite), please contact the instructor.

Instructor(s)

James McCann

Click to read more...

15674
Neural Graphics
9

This course explores the rapidly evolving intersection of machine learning and computer graphics, offering a modern perspective on topics traditionally covered in 15- 362. Students will learn how neural methods are transforming the way we represent, render, and animate visual content. Through a combination of lectures, seminar-style discussions, and research-based projects, the course examines how machine learning techniques can accelerate and enhance traditional graphics pipelines. Topics include Neural Texture Compression, Computer Shaders, Neural Shading, Neural Denoising, Gaussian Splatting, Neural Radiance Fields, Inverse Rendering, AI Players, Animation Cycles, Neural Frame Interpolation, & Stylized Animation.

Instructor(s)

Oscar Dadfar

Click to read more...

15689
Independent Study in the Computer Sciences
varies

This course is for Computer Science master's students carrying out research supervised by a faculty member. Students will be automatically wait-listed pending program approval of an independent-study prospectus (contact your academic advisor for details).

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
Angy Malloy
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

Click to read more...

Doctoral Breadth: Software Systems - (*)

15759
Special Topics in Theory: Analytic Methods in Theoretical Computer Science
12

This course surveys analytic tools that are applicable within several areas of modern theoretical computer science, including pseudorandomness, learning theory, algorithms, and complexity.. Topics may include additive combinatorics and Fourier-analytic methods, Boolean function analysis, concentration and high-dimensional probability, etc.

Instructor(s)

Yang Liu

Click to read more...

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

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

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

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

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

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

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

15855
Graduate Computational Complexity Theory
12

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

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

15859
Special Topics in Theory: Computational Geometry
varies

This course aims to provide an introduction to computational geometry and numerical computation to those with some background in algorithms and geometry. Focus will be in low, especially 2, dimensions. Main topics are plane sweeps, convexity, geometric construction/optimization, optimization algorithms in low to intermediate dimensions, and geometric data structures. Evaluations will consist of 5 homework and a final exam, and will be flexible to allow both theoretical and implementation perspectives.

Instructor(s)

Richard Peng

Click to read more...

15862
Computational Photography
12

Computational photography is the convergence of computer graphics, computer vision and imaging. Its role is to overcome the limitations of the traditional camera, by combining imaging and computation to enable new and enhanced ways of capturing, representing, and interacting with the physical world. This advanced undergraduate course provides a comprehensive overview of the state of the art in computational photography. At the start of the course, we will study modern image processing pipelines, including those encountered on mobile phone and DSLR cameras, and advanced image and video editing algorithms. Then we will proceed to learn about the physical and computational aspects of tasks such as 3D scanning, coded photography, lightfield imaging, time-of-flight imaging, VR/AR displays, and computational light transport. Near the end of the course, we will discuss active research topics, such as creating cameras that capture video at the speed of light, cameras that look around walls, or cameras that can see through tissue. The course has a strong hands-on component, in the form of seven homework assignments and a final project. In the homework assignments, students will have the opportunity to implement many of the techniques covered in the class, by both acquiring their own images of indoor and outdoor scenes and developing the computational tools needed to extract information from them. For their final projects, students will have the choice to use modern sensors provided by the instructors (lightfield cameras, time-of-flight cameras, depth sensors, structured light systems, etc.).

Instructor(s)

Ioannis Gkioulekas

Click to read more...

15888
Computational Game Solving
12

The course will focus on multi-step imperfect-information games because most real-world strategic settings are such games. Such games beget additional issues beyond perfect-information games like chess and Go, such as signaling, deception, and understanding deception by others. There has been tremendous progress in the AI community on solving such games since around 2003. This course covers the fundamentals and the state of the art of solving such games.

Instructor(s)

Tuomas Sandholm

Click to read more...

Doctoral Breadth: Artificial Intelligence - (-)

15898
Quantum Computing Systems
12

This course will cover the fundamental concepts quantum computation and quantum computer systems, including recent progress on research topics. Specific topics include the following quantum fundamentals, quantum gates and circuits, quantum circuit synthesis/compilation (including Solovay Kitaev algorithm) quantum circuit optimization (search algorithms and local optimality) quantum simulation (dense and sparse approaches) quantum algorithms In addition to lectures, the course will include a project on a topic chosen by the student (or a group of students). The course is open to all students and especially to students with background is ""classical"" computer science, including algorithms, programming languages, systems (in no particular order).

Instructor(s)

Umut Acar

Click to read more...

15990
Computer Science Colloquium

This course number is used for scheduling distinguished lectures offered throughout the semester.

Click to read more...

15996
Introductory Course for CS Doctoral Students (IC)
6

This orientation course is required for incoming Computer Science Department doctoral students.

Instructor(s)

Justine Sherry

Click to read more...

15997
Graduate Reading and Research
varies

This course number is used for doctoral students to register the appropriate units for research associated with work toward on or on their dissertation.

Instructor(s)

Karl Crary

Click to read more...

15998
Practicum in Computer Science
varies

Individualized Experience - Internships

Instructor(s)

Karl Crary

Click to read more...