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 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...
This course is geared to cover advanced topics in cryptography. The course will have a theory focus and cover trending topics in cryptography (that might change depending on the year). The course is meant for students who are either already doing research in cryptography or considering research in the area. In the Spring 2025, we will cover advanced topics such as homomorphic crypto-systems, multi-party computation, zero-knowledge proofs and obfuscation.
Instructor(s)
Aayush Jain
Click to read more...
The Monte Carlo method uses random sampling to solve computational problems that would otherwise be intractable, and enables computers to model complex systems in nature that are otherwise too difficult to simulate. This course provides a first introduction to Monte Carlo methods from complementary theoretical and applied points of view, and will include implementation of practical algorithms. Topics include random number generation, sampling, Markov chains, Monte Carlo integration, stochastic processes, and applications in computational science. Students need a basic background in probability, multivariable calculus, and some coding experience in any language.
Instructor(s)
Keenan Crane
Gautam Iyer
Click to read more...
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...
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...
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...
Textile artifacts are -- quite literally -- all around us; from clothing to carpets to car seats. These items are often produced by sophisticated, computer-controlled fabrication machinery. In this course we will discuss everywhere code touches textiles fabrication, including design tools, simulators, and machine control languages. Students will work on a series of multi-week, open-ended projects, where they use code to create patterns for modern sewing/embroidery, weaving, and knitting machines; and then fabricate these patterns in the textiles lab. Students in the 800-level version of the course will be required to create a final project which develops a new algorithm, device, or technique in the realm of textiles fabrication.
Click to read more...
Textile artifacts are -- quite literally -- all around us; from clothing to carpets to car seats. These items are often produced by sophisticated, computer-controlled fabrication machinery. In this course we will discuss everywhere code touches textiles fabrication, including design tools, simulators, and machine control languages. Students will work on a series of multi-week, open-ended projects, where they use code to create patterns for modern sewing/embroidery, weaving, and knitting machines; and then fabricate these patterns in the textiles lab. Students in the 800-level version of the course will be required to create a final project which develops a new algorithm, device, or technique in the realm of textiles fabrication.
Instructor(s)
James McCann
Click to read more...
Textile artifacts are -- quite literally -- all around us; from clothing to carpets to car seats. These items are often produced by sophisticated, computer-controlled fabrication machinery. In this course we will discuss everywhere code touches textiles fabrication, including design tools, simulators, and machine control languages. Students will work on a series of multi-week, open-ended projects, where they use code to create patterns for modern sewing/embroidery, weaving, and knitting machines; and then fabricate these patterns in the textiles lab. Students in the 800-level version of the course will be required to create a final project which develops a new algorithm, device, or technique in the realm of textiles fabrication.
Instructor(s)
James McCann
Click to read more...
This course is an introduction to physics-based rendering at the advanced undergraduate and introductory graduate level. During the course, we will cover fundamentals of light transport, including topics such as the rendering and radiative transfer equations, light transport operators, path integral formulations, and approximations such as diffusion and single scattering. Additionally, we will discuss state-of-the-art models for illumination, surface and volumetric scattering, and sensors. Finally, we will use these theoretical foundations to develop Monte Carlo algorithms and sampling techniques for efficiently simulating physically-accurate images. Towards the end of the course, we will look at advanced topics such as rendering wave optics, neural rendering, and differentiable rendering. The course has a strong programming component, in the form of assignments through which students will develop their own working implementation of a physics-based renderer, including support for a variety of rendering algorithms, materials, illumination sources, and sensors. The course also emphasizes theoretical aspects of physics-based rendering, through weekly take-home quizzes. Lastly, the course includes a final project, during which students will select and implement some advanced rendering technique, and use their implementation to produce an image that is both technically and artistically compelling. The course will conclude with a rendering competition, where students submit their rendered images to win prizes.
Instructor(s)
Ioannis Gkioulekas
Click to read more...
This course is an introduction to physics-based rendering at the advanced undergraduate and introductory graduate level. During the course, we will cover fundamentals of light transport, including topics such as the rendering and radiative transfer equations, light transport operators, path integral formulations, and approximations such as diffusion and single scattering. Additionally, we will discuss state-of-the-art models for illumination, surface and volumetric scattering, and sensors. Finally, we will use these theoretical foundations to develop Monte Carlo algorithms and sampling techniques for efficiently simulating physically-accurate images. Towards the end of the course, we will look at advanced topics such as rendering wave optics, neural rendering, and differentiable rendering. The course has a strong programming component, in the form of assignments through which students will develop their own working implementation of a physics-based renderer, including support for a variety of rendering algorithms, materials, illumination sources, and sensors. The course also emphasizes theoretical aspects of physics-based rendering, through weekly take-home quizzes. Lastly, the course includes a final project, during which students will select and implement some advanced rendering technique, and use their implementation to produce an image that is both technically and artistically compelling. The course will conclude with a rendering competition, where students submit their rendered images to win prizes.
Instructor(s)
Ioannis Gkioulekas
Click to read more...
This course is an introduction to physics-based rendering at the advanced undergraduate and introductory graduate level. During the course, we will cover fundamentals of light transport, including topics such as the rendering and radiative transfer equations, light transport operators, path integral formulations, and approximations such as diffusion and single scattering. Additionally, we will discuss state-of-the-art models for illumination, surface and volumetric scattering, and sensors. Finally, we will use these theoretical foundations to develop Monte Carlo algorithms and sampling techniques for efficiently simulating physically-accurate images. Towards the end of the course, we will look at advanced topics such as rendering wave optics, neural rendering, and differentiable rendering. The course has a strong programming component, in the form of assignments through which students will develop their own working implementation of a physics-based renderer, including support for a variety of rendering algorithms, materials, illumination sources, and sensors. The course also emphasizes theoretical aspects of physics-based rendering, through weekly take-home quizzes. Lastly, the course includes a final project, during which students will select and implement some advanced rendering technique, and use their implementation to produce an image that is both technically and artistically compelling. The course will conclude with a rendering competition, where students submit their rendered images to win prizes.
Instructor(s)
Ioannis Gkioulekas
Click to read more...
This course is an introduction to physics-based rendering at the advanced undergraduate and introductory graduate level. During the course, we will cover fundamentals of light transport, including topics such as the rendering and radiative transfer equations, light transport operators, path integral formulations, and approximations such as diffusion and single scattering. Additionally, we will discuss state-of-the-art models for illumination, surface and volumetric scattering, and sensors. Finally, we will use these theoretical foundations to develop Monte Carlo algorithms and sampling techniques for efficiently simulating physically-accurate images. Towards the end of the course, we will look at advanced topics such as rendering wave optics, neural rendering, and differentiable rendering. The course has a strong programming component, in the form of assignments through which students will develop their own working implementation of a physics-based renderer, including support for a variety of rendering algorithms, materials, illumination sources, and sensors. The course also emphasizes theoretical aspects of physics-based rendering, through weekly take-home quizzes. Lastly, the course includes a final project, during which students will select and implement some advanced rendering technique, and use their implementation to produce an image that is both technically and artistically compelling. The course will conclude with a rendering competition, where students submit their rendered images to win prizes.
Instructor(s)
Ioannis Gkioulekas
Click to read more...
This course is an in-depth study of information processing in real neural systems from a computer science perspective. We will examine several brain areas, such as the hippocampus and cerebellum, where processing is sufficiently well understood that it can be discussed in terms of specific representations and algorithms. We will focus primarily on computer models of these systems, after establishing the necessary anatomical, physiological, and psychophysical context. There will be some neuroscience tutorial lectures for those with no prior background in this area.
Instructor(s)
David Touretzky
Click to read more...
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...
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...
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...
This seminar class will cover some advanced topics in RL including foundations, algorithms, applications (in foundation model fine-tuning, robotics, scientific applications, etc). This course is expected to involve paper reading each week, including a discussion of these papers in the class, followed by a class project.
Instructor(s)
Aviral Kumar
Click to read more...
A broad introduction to Computer Science Pedagogy. Although the course focus is on CS pedagogy and developing curricular content, students will learn some fundamentals of modern mobile application programming.
Instructor(s)
Franceska Xhakaj
Michael Hilton
Click to read more...
A broad introduction to Computer Science Pedagogy. Although the course focus is on CS pedagogy and developing curricular content, students will learn some fundamentals of modern mobile application programming.
Instructor(s)
Michael Hilton
Franceska Xhakaj
Click to read more...
In this course, we will cover various advanced topics at the intersection of cryptography and algorithms, especially how algorithmic techniques are used in the construction of modern cryptographic schemes.
Instructor(s)
Elaine Shi
Click to read more...
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...
Quantum computing has been developing into an important field cross-cutting several disciplines, including computer science, physics, and mathematics. Over the past several decades, there has been much work on the theory front, including advances in quantum algorithms. In recent years, this work is starting to become practically relevant.
Instructor(s)
Umut Acar
Click to read more...
This course number is used for scheduling distinguished lectures offered throughout the semester.
Click to read more...
This course number is used for scheduling distinguished lectures offered throughout the semester.
Click to read more...
This course number is used for scheduling distinguished lectures offered throughout the semester.
Click to read more...
This course number is used for scheduling distinguished lectures offered throughout the semester.
Click to read more...
This course number is used for scheduling distinguished lectures offered throughout the semester.
Click to read more...
This orientation course is required for incoming Computer Science Department doctoral students.
Instructor(s)
Justine Sherry
Click to read more...
This orientation course is required for incoming Computer Science Department doctoral students.
Instructor(s)
Karl Crary
Click to read more...
This orientation course is required for incoming Computer Science Department doctoral students.
Instructor(s)
Karl Crary
Click to read more...
This course number is for registering for reading and research while working on research and your dissertation.
Instructor(s)
Karl Crary
Click to read more...
Currently, there is no description information available.
Instructor(s)
Karl Crary
This course number is for registering for reading and research while working on research and your dissertation.
Instructor(s)
Karl Crary
Click to read more...
This course number is for registering for reading and research while working on research and your dissertation.
Instructor(s)
Karl Crary
Click to read more...
Currently, there is no description information available.
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...
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...
This course number is for registering for reading and research while working on research and your dissertation.
Instructor(s)
Karl Crary
Click to read more...
Currently, there is no description information available.
Instructor(s)
Karl Crary
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...
The course number should be used for registering units for internships.
Instructor(s)
Karl Crary
Click to read more...
Doctoral Student Internships
Instructor(s)
Karl Crary
Click to read more...
The course number should be used for registering units for internships.
Instructor(s)
Karl Crary
Click to read more...
The course number should be used for registering units for internships.
Instructor(s)
Karl Crary
Click to read more...
Individualized Experience - Internships
Instructor(s)
Karl Crary
Click to read more...
Individualized Experience - Internships
Instructor(s)
Karl Crary
Click to read more...
The course number should be used for registering units for internships.
Instructor(s)
Karl Crary
Click to read more...