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 Course Level - Any -UndergradMastersDoctoral When Offered - Any -All semestersFall and SpringFall onlyIntermittentSpring onlySummer onlyUnknown Search for... 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'HallaronDave EckhardtRuben 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 MartinsDave 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) Ruben MartinsDave 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 EckhardtDavid O'Hallaron 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... 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 EckhardtRuben 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 EckhardtDavid O'Hallaron Click to read more... 15691 Practicum varies To be determined Click to read more... 15691 Practicum varies To be determined Instructor(s) Dave EckhardtRuben Martins 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 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... 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 MartinsTracy FarbacherDave EckhardtDavid 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 EckhardtDavid O'HallaronTracy Farbacher 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 MartinsDave 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 MartinsTracy FarbacherDave Eckhardt Click to read more... 15697 Graduate Reading and Research varies No course description provided. Click to read more... 15697 Graduate Reading and Research varies No course description provided. Instructor(s) Dave EckhardtTracy FarbacherRuben 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 MartinsDave EckhardtDavid 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 MartinsDave 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 MartinsDave 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... 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 EckhardtRuben 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) Dave EckhardtDavid O'Hallaron 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 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... 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... 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 SakrGregory Ganger 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) Gregory GangerMajd Sakr 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... 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) Andrew Pavlo 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 - (*) 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 SherryNirav 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 effectively 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) Gregory GangerGeorge Amvrosiadis 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) George AmvrosiadisGregory Ganger 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) Danny SleatorRashmi Korlakai Vinayak 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) Jason Li 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 JainRyan 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 LiRyan 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 - (*) 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... 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... 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 - (*) 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... 15780 Graduate Artificial Intelligence 12 This course provides a broad perspective on AI, covering (i) classical approaches of search and planning useful for robotics, (ii) integer programming and continuous optimization that form the bedrock for many AI algorithms, (iii) modern machine learning techniques including deep learning that power many recent AI applications, (iv) game theory and multi-agent systems, and (v) issues of bias and unfairness in AI. In addition to understanding the theoretical foundations, we will also study modern algorithms in the research literature. Instructor(s) Zico Kolter Click to read more... Doctoral Breadth: Artificial Intelligence - (*) 15780 Graduate Artificial Intelligence 12 This course provides a broad perspective on AI, covering (i) classical approaches of search and planning useful for robotics, (ii) integer programming and continuous optimization that form the bedrock for many AI algorithms, (iii) modern machine learning techniques including deep learning that power many recent AI applications, (iv) game theory and multi-agent systems, and (v) issues of bias and unfairness in AI. In addition to understanding the theoretical foundations, we will also study modern algorithms in the research literature. Instructor(s) Aditi Raghunathan Click to read more... Doctoral Breadth: Artificial Intelligence - (*) 15783 Trustworthy AI: Theory and Practice 12 As AI systems become more capable and widely deployed, ensuring their reliability, robustness, and alignment with human intent is critical. This advanced seminar explores the principles behind building trustworthy AI, with a focus on both theoretical foundations and empirical guarantees. We will examine key challenges such as robustness to distribution shifts, adversarial attacks, data poisoning, privacy risks, and jailbreaks, as well as broader concerns in AI alignment and governance. Through a mix of foundational papers and recent advances, the class will investigate recurring themes across security, robustness, and alignment, drawing connections to classical machine learning principles and modern scaling trends. Discussions will emphasize not only what works but also why it works (or fails)—aiming to equip students with the conceptual tools to critically assess current methods and develop principled approaches for trustworthy AI. This course is designed for students interested in both theoretical insights and practical implications, bridging research in machine learning, security, and AI alignment to address some of the most pressing challenges in modern AI development. " Through a mix of foundational papers and recent advances, the class will investigate recurring themes across security, robustness, and alignment, drawing connections to classical machine learning principles and modern scaling trends. Discussions will emphasize not only what works but also why it works (or fails)—aiming to equip students with the conceptual tools to critically assess current methods and develop principled approaches for trustworthy AI. This course is designed for students interested in both theoretical insights and practical implications, bridging research in machine learning, security, and AI alignment to address some of the most pressing challenges in modern AI development. Instructor(s) Aditi Raghunathan Click to read more... 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 - (-) 15789 Theoretical and Empirical Foundations of Modern Machine Learning 12 In this advanced machine learning seminar class, we tackle the typical struggle in using the modern machinery including large language models and other foundation models: what works and why? How do we make things more reliable and robust? We build a conceptual understanding of deep learning and foundation models through several different angles: standard in-distribution generalization, out-of-distribution generalization, self-supervised learning, data curation, scaling laws, alignment etc. We will read papers that contain a mix of theoretical and empirical insights with a focus on making connections to classic ideas, identifying recurring themes, and discussing avenues for future developments. The class aims to equip students with the ability to critically reason about and build a more principled understanding of current advances which will hopefully spark their own research. Instructor(s) Aditi Raghunathan Click to read more... 15791 Advanced Topics in 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... 15793 Secure Computer Systems 12 This course is broadly focused on full-stack system security and will cover the foundations of building secure systems and cryptography. During the course we will cover hardware, system software, and cryptographic primitives for building secure systems, both within the datacenter environment and in the decentralized setting. The course will focus on the cross-cutting security requirements of systems and how to bolster their security guarantees using a combination of systems and cryptographic techniques. The lectures will cover fundamental security concepts (e.g., threat models, trusted computing base), and do a deep dive into state-of-the-art attacks and defenses (e.g., speculative execution attacks). The course will span a set of hardware security topics including trusted execution environments, side-channels, hardware attacks (e.g., Meltdown, Spectre, Rowhammer), software systems such as blockchains, anonymous messaging, and secure machine learning. Instructor(s) Dimitrios SkarlatosWenting Zheng Click to read more... 15793 Secure Computer Systems 12 This course is broadly focused on full-stack system security and will cover the foundations of building secure systems and cryptography. During the course we will cover hardware, system software, and cryptographic primitives for building secure systems, both within the datacenter environment and in the decentralized setting. The course will focus on the cross-cutting security requirements of systems and how to bolster their security guarantees using a combination of systems and cryptographic techniques. The lectures will cover fundamental security concepts (e.g., threat models, trusted computing base), and do a deep dive into state-of-the-art attacks and defenses (e.g., speculative execution attacks). The course will span a set of hardware security topics including trusted execution environments, side-channels, hardware attacks (e.g., Meltdown, Spectre, Rowhammer), software systems such as blockchains, anonymous messaging, and secure machine learning. Instructor(s) Dimitrios SkarlatosWenting Zheng Click to read more... 15795 Topics in Algorithmic Problem Solving 12 This course aims to give implementation motivated perspectives on some algorithmic ideas that fall outside of the scopes of typical algorithms courses. It is intended for graduate students, as well as undergraduate students who have high grades in 15-451, and 15-259 or 21-325. The first half of the course will discuss floating point precision, numerical approximation schemes, heuristic search, usage of optimization packages, and vectorization. The second half will provide high-level surveys of 2-D range update & query data structures, proactive propagation, and iterative methods. Evaluations will consist of about 30 auto-graded coding tasks, plus either participation in the ICPC NAEast Programming Contest, or presentations of problem-solving reports from various OI team selections. Instructor(s) Richard Peng Click to read more... Pagination First page « First Previous page ‹‹ Page 1 Page 2 Page 3 Page 4 Page 5 Current page 6 Page 7 Page 8 Next page ›› Last page Last »