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

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

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

15668
Physics-Based Rendering
12

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

Instructor(s)

Ioannis Gkioulekas

Click to read more...

15668
Physics-Based Rendering
12

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

Instructor(s)

Ioannis Gkioulekas

Click to read more...

15668
Physics-Based Rendering
12

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

Instructor(s)

Ioannis Gkioulekas

Click to read more...

15669
Special Topics Numerical Computing
12

Many problems in science, engineering, and computer graphics cannot be solved exactly. Numerical computing provides methods to approximate these solutions using computational techniques. It combines mathematics and programming to solve real-world problems such as simulations, optimization, and data analysis. The course begins with a review of key mathematical concepts like vector spaces, matrices, and calculus. We then explore how numbers are represented on computers, the types of errors that can occur, and strategies to handle them. Core topics include solving linear and nonlinear systems, eigenvalue problems, optimization, and techniques such as LU decomposition, QR factorization, and singular value decomposition (SVD). We will also cover iterative methods for large systems, interpolation, numerical differentiation, integration, and both ordinary and partial differential equations. Students will gain hands-on experience implementing algorithms and learn to balance accuracy, stability, and efficiency in computational solutions.

Instructor(s)

Minchen Li

Click to read more...

15672
Real-Time 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; debugging, profiling, and accelerating graphics algorithms.

Instructor(s)

James McCann

Click to read more...

15672
Real-Time 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; debugging, profiling, and accelerating graphics algorithms.

Instructor(s)

James McCann

Click to read more...

15672
Real-Time 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; debugging, profiling, and accelerating graphics algorithms.

Instructor(s)

James McCann

Click to read more...

15673
Visual Computing Systems
12

Visual computing tasks such as computational imaging, image/video understanding, and real-time graphics are key responsibilities of modern computer systems ranging from sensor-rich smart phones to large datacenters. These workloads demand exceptional system efficiency and this course examines the key ideas, techniques, and challenges associated with the design of parallel, heterogeneous systems that accelerate visual computing applications. This course is intended for graduate and advanced undergraduate-level students interested in architecting efficient graphics, image processing, and computer vision platforms.

Instructor(s)


Click to read more...

15673
Visual Computing Systems
12

Visual computing tasks such as computational imaging, image/video understanding, and real-time graphics are key responsibilities of modern computer systems ranging from sensor-rich smart phones to large datacenters. These workloads demand exceptional system efficiency and this course examines the key ideas, techniques, and challenges associated with the design of parallel, heterogeneous systems that accelerate visual computing applications. This course is intended for graduate and advanced undergraduate-level students interested in architecting efficient graphics, image processing, and computer vision platforms.

Instructor(s)


Click to read more...

15686
Neural Computation
12

Computational neuroscience is an interdisciplinary science that seeks to understand how the brain computes to achieve natural intelligence. It seeks to understand the computational principles and mechanisms of intelligent behaviors and mental abilities -- such as perception, language, motor control, and learning -- by building artificial systems and computational models with the same capabilities. This course explores how neurons encode and process information, adapt and learn, communicate, cooperate, compete and compute at the individual level as well as at the levels of networks and systems. It will introduce basic concepts in computational modeling, information theory, signal processing, system analysis, statistical and probabilistic inference. Concrete examples will be drawn from the visual system and the motor systems, and studied from computational, psychological and biological perspectives. Students will learn to perform computational experiments using Matlab and quantitative studies of neurons and neuronal networks.

Instructor(s)

Tai-Sing Lee

Click to read more...

15686
Neural Computation
12

Computational neuroscience is an interdisciplinary science that seeks to understand how the brain computes to achieve natural intelligence. It seeks to understand the computational principles and mechanisms of intelligent behaviors and mental abilities -- such as perception, language, motor control, and learning -- by building artificial systems and computational models with the same capabilities. This course explores how neurons encode and process information, adapt and learn, communicate, cooperate, compete and compute at the individual level as well as at the levels of networks and systems. It will introduce basic concepts in computational modeling, information theory, signal processing, system analysis, statistical and probabilistic inference. Concrete examples will be drawn from the visual system and the motor systems, and studied from computational, psychological and biological perspectives. Students will learn to perform computational experiments using Matlab and quantitative studies of neurons and neuronal networks.

Instructor(s)

Tai-Sing Lee

Click to read more...

15686
Neural Computation
12

Computational neuroscience is an interdisciplinary science that seeks to understand how the brain computes to achieve natural intelligence. It seeks to understand the computational principles and mechanisms of intelligent behaviors and mental abilities -- such as perception, language, motor control, and learning -- by building artificial systems and computational models with the same capabilities. This course explores how neurons encode and process information, adapt and learn, communicate, cooperate, compete and compute at the individual level as well as at the levels of networks and systems. It will introduce basic concepts in computational modeling, information theory, signal processing, system analysis, statistical and probabilistic inference. Concrete examples will be drawn from the visual system and the motor systems, and studied from computational, psychological and biological perspectives. Students will learn to perform computational experiments using Matlab and quantitative studies of neurons and neuronal networks.

Instructor(s)

Tai-Sing Lee

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

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)

Dave Eckhardt

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)

David O'Hallaron
Dave Eckhardt
Ruben Martins

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)

Dave Eckhardt
Ruben Martins

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

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

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)

Dave Eckhardt
David O'Hallaron

Click to read more...

15690
MSCS Career Planning
3

This class is for students enrolled in the Applied Study variant of the MSCS program. The class will support students in clarifying their objectives for their applied-study experience in consultation with their advisor and Career Center staff. Throughout the semester students will seek, develop, and select among applied-study experiences.

Instructor(s)

Dave Eckhardt
Ruben Martins

Click to read more...

15690
MSCS Career Planning
3

This class is for students enrolled in the Applied Study variant of the MSCS program. The class will support students in clarifying their objectives for their applied-study experience in consultation with their advisor and Career Center staff. Throughout the semester students will seek, develop, and select among applied-study experiences.

Instructor(s)

Dave Eckhardt
Ruben Martins

Click to read more...

15690
MSCS Career Planning
3

This class is for students enrolled in the Applied Study variant of the MSCS program. The class will support students in clarifying their objectives for their applied-study experience in consultation with their advisor and Career Center staff. Throughout the semester students will seek, develop, and select among applied-study experiences.

Instructor(s)

Dave Eckhardt
David O'Hallaron

Click to read more...

15691
Practicum
varies

To be determined

Instructor(s)

Dave Eckhardt
Ruben Martins

Click to read more...

15691
Practicum
varies

To be determined

Click to read more...

15694
Cognitive Robotics
12

This course will explore the future of robot toys by analyzing and programming Anki Cozmo, a new robot with built-in artificial intelligence algorithms. Como is distinguished from earlier consumer robots by its reliance on vision as the primary sensing mode and its sophisticated use of A.I. Its capabilities include face and object recognition, map building, path planning, and object pushing and stacking. Although marketed as a pre-programmed children's toy, Cozmo's open source Python SDK allows anyone to develop new software for it, which means it can also be used for robotics education and research. The course will cover robot software architecture, human-robot interaction, perception, and planning algorithms for navigation and manipulation. Prior robotics experience is not required, just strong programming skills.

Instructor(s)

David Touretzky

Click to read more...

15694
Cognitive Robotics
12

This course will explore the future of robot toys by analyzing and programming Anki Cozmo, a new robot with built-in artificial intelligence algorithms. Como is distinguished from earlier consumer robots by its reliance on vision as the primary sensing mode and its sophisticated use of A.I. Its capabilities include face and object recognition, map building, path planning, and object pushing and stacking. Although marketed as a pre-programmed children's toy, Cozmo's open source Python SDK allows anyone to develop new software for it, which means it can also be used for robotics education and research.

Instructor(s)

David Touretzky

Click to read more...

15694
Cognitive Robotics: The Future of Robot Toys
12

This course explores the future of robot toys by analyzing and programming the VEX AIM robot, a new mobile robot with built-in AI algorithms that we will supplement with Python code and OpenAI API calls. The course's novel approach to robot intelligence combines state machine programming and Python coding with GPT prompt engineering. The lectures cover robot software architecture, human-robot interaction, robot perception, and planning algorithms for navigation and manipulation. Prior robotics experience is not required, just strong Python skills. In the final project, students implement a robot application of their own design that builds on what they have learned.

Instructor(s)

David Touretzky

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

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

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

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

No course description provided.

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)

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

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

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

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

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

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

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