Computer Science

A.K. Watson Hall, 203.432.1246
http://cpsc.yale.edu
M.S., M.Phil., Ph.D.

Chair
Holly Rushmeier

Directors of Graduate Studies
Lin Zhong (lin.zhong@yale.edu)

Professors Dana Angluin (Emerita), James Aspnes, Dirk Bergemann,* Yang Cai, Yuejie Chi,* Ronald Coifman,* Aaron Dollar,* Julie Dorsey, Joan Feigenbaum, Michael Fischer, Robert Frank,* David Gelernter, Mark Gerstein,* Nicole Immorlica, Theodore Kim, John Lafferty,* Rajit Manohar,* Ruzica Piskac, Vladimir Rokhlin,† Holly Rushmeier, Brian Scassellati, Martin Schultz (Emeritus), Zhong Shao, Avi Silberschatz, Daniel Spielman,† Phillipp Strack,* Leandros Tassiulas,* Nisheeth Vishnoi, Hua Xu,* Y. Richard Yang, Lin Zhong, Steven Zucker†

Associate Professors Julian Jara-Ettinger,* Smita Krishnaswamy,† Charalampos Papamanthou, Robert Soulé

Assistant Professors Kim Blenman,* Tara Boroushaki,* Hoon Cho,* Arman Cohan, A. Feder Cooper, Yongshan Ding, Benjamin Fisch, Tesca Fitzgerald, Anurag Khandelwal, Alex Lew, Quanquan Liu, Tom McCoy,* Daniel Rakita, Katerina Sotiraki, Jamie Tucker-Foltz,* David van Dijk,* Marynel Vázquez, Andre Wibisono, Alex Wong, Zhuoran Yang,* Rex (Zhitao) Ying, Manolis Zampetakis, Fan Zhang

Senior Lecturers James Glenn, Scott Petersen, Michael Shah, Stephen Slade

Lecturers Timos Antonopoulos, Timothy Barron, Xiuye Chen, Ozan Erat, Harry Jain, Kyle Jensen,* Janet Kayfetz, Dylan McKay, Cody Murphey, Sohee Park, Brad Rosen, Alan Weide, Cecillia Xie

Fields of Study

Algorithms and computational complexity, artificial intelligence, data networking, databases, graphics, machine learning, programming languages, robotics, scientific computing, security and privacy, and systems.

Research Facilities

The department operates a high-bandwidth, local-area computer network-based mainly on distributed workstations and servers with internet connections. Laboratories contain specialized equipment for graphics, robotics, systems, and vision research. Various printers, including color printers, as well as image scanners, are also available. The primary educational facility consists of a large cluster of personal computers. This facility is used for courses and unsponsored research by computer science majors and first-year graduate students. Access to computing, through both the workstations and remote login facilities, is available to everyone in the department.

Special Requirements for the Ph.D. Degree

There is no foreign language requirement. To be admitted to candidacy, a student must

  1. pass ten courses (including CPSC 6900 and CPSC 6910) with at least two grades of Honors, the remainder at least High Pass, including three advanced courses in an area of specialization;
  2. take six advanced courses in areas of general computer science;
  3. successfully complete a research project in CPSC 6900, CPSC 6910, and submit a written report on it to the faculty;
  4. pass a qualifying examination in an area of specialization;
  5. be accepted as a thesis student by a regular department faculty member;
  6. serve as a teaching assistant for two terms; and
  7. submit a written dissertation prospectus, with a tentative title for the dissertation.

Grades of Pass will not count toward the Ph.D. To satisfy the distribution requirement (requirement 2 above), the student must take one course in programming languages or systems, one programming-intensive course, two theory courses, and two in application areas. In order to gain teaching experience, all graduate students are required to serve as teaching assistants for two terms during their first three years of study. All requirements for admission to candidacy must be completed prior to the end of the third year. In addition to all other requirements, students must successfully complete CPSC 9910, Ethical Conduct of Research, prior to the end of their first year of study. This requirement must be met prior to registering for the second year of study.

Master’s Degrees

M.Phil. See Degree Requirements under Policies and Regulations.

M.S. (en route to the Ph.D.) To qualify for the M.S., the student must pass eight courses at the 5000 level or above from an approved list. An average grade of at least High Pass is required, with at least one grade of Honors.

Terminal M.S. Students may also be admitted to a terminal master’s degree program directly. There are two options for the terminal master’s degree:

  • Terminal Master’s Degree Program (coursework-only option) The requirements are the same as for the M.S. en route to the Ph.D. This program is normally completed in one year, but a part-time program may be spread over as many as four years.
  • Terminal Master’s Degree Program (thesis option) To qualify for the M.S. thesis option the student must (1) pass six courses at the 5000 level or above from an approved list with an average grade of at least High Pass and with at least two grades of Honors; (2) complete a research thesis, generally in the second year (in the event that the student fails to be accepted by a thesis adviser by the beginning of the second year, they may complete the M.S. degree by taking two approved courses in each term instead of one); and (3) serve as a teaching assistant for four terms. This program is normally completed in two years.

For additional information, visit http://cpsc.yale.edu or email cs-admissions@cs.yale.edu.

Courses

CPSC 5160b, Lattices and Post-Quantum CryptographyKaterina Sotiraki

This course explores the role of lattices in modern cryptography. In the last decades, novel computational problems, whose hardness is related to lattices, have been instrumental in cryptography by offering: (a) a basis for "post-quantum" cryptography, (b) cryptographic constructions based on worst-case hard problems, and (c) numerous celebrated cryptographic protocols unattainable from other cryptographic assumptions. This course covers the foundations of lattice-based cryptography from fundamental definitions to advanced cryptographic constructions. More precisely, we introduce the Learning with Error (LWE) and the Short Integer Solutions (SIS) problems and study their unique properties, such as the fact that their average-case hardness is based on the worst-case hardness of lattice problems. Next, we cover lattice constructions of advanced cryptographic primitives, such as fully homomorphic encryption and signature schemes. Finally, we introduce some notions of quantum cryptography and explore the role of lattices in this area. Overall, this course offers insights on the foundations and recent advancements in lattice-based cryptography. Prerequisites: CPSC 467/567 or equivalent and linear algebra.
HTBA

CPSC 5190a, Full Stack Web ProgrammingAlan Weide

This course introduces students to a variety of advanced software engineering and programming techniques in the context of full-stack web programming. The focus of the course includes both client- and server-side programming (and database programming), client/server communication, user interface programming, and parallel programming.
MW 9am-10:15am

CPSC 5210b, Compilers and InterpretersRobert Soule

Compiler organization and implementation: lexical analysis, formal syntax specification, parsing techniques, execution environment, storage management, code generation and optimization, procedure linkage, and address binding. The effect of language-design decisions on compiler construction.
HTBA

CPSC 5230b, Operating SystemsAnurag Khandelwal

The design and implementation of operating systems. Topics include synchronization, deadlocks, process management, storage management, file systems, security, protection, and networking.
HTBA

CPSC 5260a, Building Distributed SystemsY. Richard Yang

Ubiquitous services such as Google, Facebook, and Amazon run on the back of massive distributed systems. This course covers the fundamental principles, abstractions, and mechanisms that inform the design of such systems, as well as the practical details of real-world implementations. Technical topics covered include properties such as consistency, availability, durability, isolation, and failure atomicity; as well as protocols such as RPC, consensus, consistent hashing, and distributed transactions. The final project involves implementing a real-world distributed service.
MW 1:05pm-2:20pm

CPSC 5280b, Language-Based SecurityZhong Shao

Basic design and implementation of language-based approaches for increasing the security and reliability of systems software. Topics include proof-carrying code; certifying compilation; typed assembly languages; runtime checking and monitoring; high-confidence embedded systems and drivers; and language support for verification of safety and liveness properties.
HTBA

CPSC 5310a, Computer Music: Algorithmic and Heuristic CompositionScott Petersen

Study of the theoretical and practical fundamentals of computer-generated music. Music and sound representations, acoustics and sound synthesis, scales and tuning systems, algorithmic and heuristic composition, and programming languages for computer music. Theoretical concepts are supplemented with pragmatic issues expressed in a high-level programming language.
MW 11:35am-12:50pm

CPSC 5320b, Computer Music: Sound Representation and SynthesisScott Petersen

Study of the theoretical and practical fundamentals of computer-generated music, with a focus on low-level sound representation, acoustics and sound synthesis, scales and tuning systems, and programming languages for computer music generation. Theoretical concepts are supplemented with pragmatic issues expressed in a high-level programming language. Prerequisite: ability to read music.
HTBA

CPSC 5330b, Computer NetworksY. Richard Yang

An introduction to the design, implementation, analysis, and evaluation of computer networks and their protocols. Topics include layered network architectures, applications, transport, congestion, routing, data link protocols, local area networks, performance analysis, multimedia networking, network security, and network management. Emphasis on protocols used in the Internet.
HTBA

CPSC 5370a or b, Database SystemsAvi Silberschatz

An introduction to database systems. Data modeling. The relational model and the SQL query language. Relational database design, integrity constraints, functional dependencies, and natural forms. Object-oriented databases. Implementation of databases: file structures, indexing, query processing, transactions, concurrency control, recovery systems, and security.
HTBA

CPSC 5371a, Database Design and ImplementationRobert Soule

This course covers advanced topics in Database Systems, expanding on the material covered in CPSC 437/537. Topics covered include complex data types, application development, big data, data analytics, parallel and distributed storage, parallel and distributed query processing, advanced indexing techniques, advanced relational database design, and object-based databases.
TTh 9am-10:15am

CPSC 5380a, Big Data Systems: Trends and ChallengesAnurag Khandelwal

Today’s Internet-scale applications and cloud services generate massive amounts of data. At the same time, the availability of inexpensive storage has made it possible for these services and applications to collect and store every piece of data they generate, in the hopes of improving their services by analyzing the collected data. This introduces interesting new opportunities and challenges designing systems for collecting, analyzing, and serving the so-called big data. This course looks at technology trends that have paved the way for big data applications, surveys state-of-the-art systems for storage and processing of big data, and considers future research directions driven by open research problems. Our discussions span topics such as cluster architecture, big data analytics stacks, scheduling and resource management, batch and stream analytics, graph processing, ML/AI frameworks, and serverless platforms and disaggregated architectures.
MW 4pm-5:15pm

CPSC 5390a, Software EngineeringTimos Antonopoulos

Introduction to building a large software system in a team. Learning how to collect requirements and write a specification. Project planning and system design. Increasing software reliability: debugging, automatic test generation. Introduction to type systems, static analysis, and model checking.
TTh 11:35am-12:50pm

CPSC 5391b, Advanced Software EngineeringTimos Antonopoulos

This course builds on CPSC 439/539, Software Engineering, with a focus on (a) building systems that scale well and (b) the technical infrastructure and approaches that would guide or inform entrepreneurship/business decisions. During the whole semester, teams work on a term-length software project of students’ design, most often a continuation of the project they worked on during CPSC 439/539. There is an extra seminar for the graduate students, where they are assigned topics based on relevant recent research papers published at the top conferences. The topics closely correspond to the lectures covered in the course. The graduate students prepare twenty-minute presentations of those papers and present them in the class. Grading also reflects an expectation of additional sophistication. Prerequiste: After CPSC 539 or similar. Students have to have a working product they built during CPSC 539 or similar course to further develop during this course.
HTBA

CPSC 5410a, Verifiable, Private, Decentralized Computing in the Age of AIBen Fisch

You type your question into ChatGPT and get back a response. How do you trust its accuracy? Perhaps you have reviewed the latest published benchmark results for GPT-4, or trust that others have. But how do you know the response you are getting from OpenAI’s servers is the true output of GPT-4? Perhaps due to a bug or system overload your question was handled by a weaker AI model. Or worse, perhaps the servers were hacked by someone maliciously giving you incorrect results. And, how do you trust that the sensitive questions you are sending to ChatGPT will not be leaked or used against you? This is a course in cryptographic proof systems. In the digital world today, we trust services to perform many kinds of computations on our data, from managing financial ledgers and databases to complex analytics, such as large-language model (LLM) inference. We trust these services not only to operate correctly, but also to keep our information private. Cryptographic systems allow us to remove this trust. A “succinct” cryptographic proof enables a service to attach a small certificate on the correctness of its computation which can be verified easily on a low-power device, even if the original computation was extremely complex. The proof of some ML computation that was run for hours on a GPU farm can fit in an email and take just milliseconds to verify on a mobile device! Beyond correctness, a “zero-knowledge” proof system enables us to prove knowledge of secret information, including hidden inputs to a computation that achieves a certain output. For instance, OpenAI could prove that the response is the true output of GPT-4 (a proprietary model) without revealing sensitive details about the model itself. In industry, the market for cryptographic proofs is currently around $75 million and projected to reach $10 billion by 2030, according to some estimates. Cryptographic proofs have become the leading technology for scaling blockchains and achieving privacy in cryptocurrencies. Verifiable and zero-knowledge computing also create an important foundation for decentralizing AI services. Training and serving large models currently require vast resources, leading to centralization. Decentralized ML networks offer a compelling alternative—letting many independent operators contribute incremental work to the overall task using their own resources big or small, from a single GPU to a server cluster, and earn a share of the payments clients make to use the service. In such a setting it is critical to verify that operators contribute incremental work correctly. Or, they may use private data to jointly train an ML model. Succinct zero-knowledge proofs would enable these operators to prove correctness of their work without revealing sensitive data. We cover some of the other challenges and directions in decentralized model training and inference, such as reducing the amount of data that needs to be communicated between physically distributed islands of hardware and the potential role of reinforcement learning.
MW 1:05pm-2:20pm

CPSC 5420a, Theory of ComputationDylan McKay

This course first introduces core, traditional ideas from the theory of computation with more modern ideas used in the process, including basic ideas of languages and automata. Building on the core ideas, the course then covers a breadth of topics in modular units, where each unit examines a new model and potentially a new perspective on computation. Topics may include: basic notions of Complexity Theory, provability and logic, circuits and non-uniform computation, randomized computation, quantum computation, query-based computation, notions of machine learning, compression, and algebraic models of computation. Additional topics might be introduced in lectures or student projects, according to student interests, including mechanism design, voting schemes, cryptography, biological computation, distributed computation, and pseudorandomness. Prerequisite: One of CPSC 365, 366, or 368 is required. This course is a proof-based theory course and mathematical maturity is expected.
TTh 4pm-5:15pm

CPSC 5440b, Real-World CryptographyFan Zhang

Cryptography provides strong security and privacy guarantees in well-defined mathematical models, but applying it to real-world systems is an art—one that must account for performance, cost, evolving adversarial threats, and even user behavior. This course aims to impart the art of designing and applying cryptography in the real world, by examining select advanced cryptographic tools used in practice. Topics include secure channels, identity and credentials, anonymity, end-to-end encrypted messaging, and Trusted Execution Environments (TEEs). Graduate students undertake a semester-long research project and present at the end of the semester. Students are expected to be familiar with concepts in computer security and cryptography (e.g., from CPSC 4130, CPSC 4670, or similar courses). To set the stage, we go over the content of Katz and Lindell (https://www.cs.umd.edu/~jkatz/imc.html) in the first few lectures at a quick pace.
HTBA

CPSC 5540a, Software Analysis and VerificationRuzica Piskac

Introduction to concepts, tools, and techniques used in the formal verification of software. State-of-the-art tools used for program verification; detailed insights into algorithms and paradigms on which those tools are based, including model checking, abstract interpretation, decision procedures, and SMT solvers.
TTh 2:35pm-3:50pm

CPSC 5570a, Sensitive Information in a Connected WorldMichael Fischer

Issues of ownership, control, privacy, and accuracy of the huge amount of sensitive information about people and organizations that is collected, stored, and used by today’s ubiquitous information systems. Readings consist of research papers that explore both the power and the limitations of existing privacy-enhancing technologies such as encryption and “trusted platforms.”
MW 2:35pm-3:50pm

CPSC 5585a, Probabilistic ProgrammingAlex Lew

Introduction to probabilistic programming, a field at the intersection of programming languages, probability theory, and artificial intelligence. The central idea in probabilistic programming is to represent probabilistic models as programs, and use special metaprograms (e.g., compilers and interpreters) to implement inference, learning, and prediction. Topics include the mathematical foundations of probabilistic programming (including the basics of synthetic probability theory); probabilistic modeling (including Bayesian approaches to regression, clustering, topic modeling, and structure learning); and exact and approximate algorithms for inference (including variable elimination, knowledge compilation, Markov chain Monte Carlo, sequential Monte Carlo, and variational inference). Coursework includes biweekly programming assignments, in-class quizzes, and a final project completed in groups of up to three students. Prerequisites: CPSC 2020, or equivalent background in probability. CPSC 2230, or equivalent programming maturity (with permission of instructor). Facility with Python programming and functional programming is expected. Although assignments are programming-oriented rather than proof-oriented, a degree of mathematical maturity (e.g., having taken at least one proof-based math course) is recommended.
TTh 4pm-5:15pm

CPSC 5590a, Building Interactive MachinesMarynel Vazquez

This advanced course brings together methods from machine learning, computer vision, robotics, and human-computer interaction to enable interactive machines to perceive and act in a variety of environments. Part of the course examines approaches for perception with different sensing devices and algorithms; the other part focuses on methods for decision-making and applied machine learning for control. The course is a combination of lectures, state-of-the-art reading, presentations and discussions, programming assignments, and a final team project. Prerequisites: CPSC 570 and understanding of probability, differential calculus, linear algebra, and planning (in Artificial Intelligence). Programming assignments require proficiency in Python and high-level familiarity with C++. Students who do not fit this profile may be allowed to enroll with the permission of the instructor.
MW 11:35am-12:50pm

CPSC 5610a, Statistics and Learning Theory for Computer ScientistsManolis Zampetakis

This course explores the basic mathematical foundation of learning theory and statistics from a computer science perspective. This is a proof based course and mathematical maturity is necessary to follow the material of the course. The course is divided in three parts. The first part covers the basic mathematical theory of that is used in statistical analysis and includes: (a) log-likelihood estimation for parametric models, (b) density estimation, and (c) hypothesis testing, p-values and confidence intervals. The second part covers statistical learning theory: (a) definition of PAC learning and agnostic learning, (b) uniform convergence, (c) learnability via VC dimension and Rademacher complexity, and (d) computational aspects of learning theory. The final part is related to modern challenges in statistics and learning theory from a computational perspective and includes: (a) statistical analysis with corrupted data, (b) missing data and causal inference, (c) computationally efficient methods for learning theory, and (d) statistical analysis while preserving privacy, i.e., the notion of differential privacy and its applications. Prerequisites: This is an advanced course, which requires mathematical maturity and comfort with multivariate calculus, linear algebra, and probability theory. The course also assumes prior knowledge of discrete mathematics and algorithms (CPSC 2020 and CPSC 3650 or equivalent).
TTh 2:35pm-3:50pm

CPSC 5630b / ECON 5565b, Algorithms via Convex OptimizationNisheeth Vishnoi

Convex optimization has played a major role in the recent development of fast algorithms for problems arising in areas such as theoretical computer science, discrete optimization, and machine learning. The approach is to first formulate the problem as a continuous (convex) optimization problem, even if the problem may be over a discrete domain, adapt or develop deterministic or randomized continuous-time dynamical systems to solve it, and then design algorithms for the problem via appropriate discretizations. The goal of this course is to design state-of-the-art algorithms for various classical discrete problems through the use of continuous optimization/sampling. The algorithmic applications include maximum flow in graphs, maximum matching in bipartite graphs, linear programming, submodular function minimization, and counting problems involving discrete objects such as matroids. We present approaches gradient descent, mirror descent, interior-point methods, and cutting plane methods. A solid background in calculus, linear algebra, and probability is recommended. It is intended for students who are comfortable with proofs.
HTBA

CPSC 5640a, Algorithms and their Societal ImplicationsNisheeth Vishnoi

Today’s society comprises humans living in an interconnected world that is intertwined with a variety of sensing, communicating, and computing devices. Human-generated data is being recorded at unprecedented rates and scales, and powerful AI and ML algorithms, which are capable of learning from such data, are increasingly controlling various aspects of modern society: from social interactions. These data-driven decision-making algorithms have a tremendous potential to change our lives for the better, but, via the ability to mimic and nudge human behavior, they also have the potential to be discriminatory, reinforce societal prejudices, violate privacy, polarize opinions, and influence democratic processes. Thus, designing effective tools to govern modern society which reinforce its cherished values such as equity, justice, democracy, health, privacy, etc. has become paramount and requires a foundational understanding of how humans, data, and algorithms interact. This course is for students who would like to understand and address some of the key challenges and emerging topics at the aforementioned interplay between computation and society. On the one hand, we study human decision-making processes and view them through the lens of computation, and on the other hand we study and address the limitations of artificial decision-making algorithms when deployed in various societal contexts. The focus is on developing solutions through a combination of foundational work such as coming up with the right definitions, modeling, algorithms, and empirical evaluation. The current focus is on bias and privacy, with additional topics including robustness, polarization, and democratic representation. The grade will be based on class participation and a project. The project grade will be determined by a midterm and endterm report/presentation. The course has four primary modules: (1) Data: human-generated data; data collection and aggregation; (2) Decision-Making Algorithms: human decision-making algorithms; traditional algorithmic decision-making models and methods; machine learning-based decision-making models and methods; (3) Bias: socio-technical contexts and underlying computational problems; definitions of fairness; interventions for ensuring fairness; human biases through the lens of computation; privacy; need for definitions of privacy; differential privacy; beyond differential privacy; (4) Other topics: robustness; polarization; elections and social choice. Solid mathematical and programming background is necessary to enroll in this course. CPSC 365 and S&DS 251 are recommended.
T 9:25am-11:20am

CPSC 5650b, Theory of Distributed SystemsJames Aspnes

Models of asynchronous distributed computing systems. Fundamental concepts of concurrency and synchronization, communication, reliability, topological and geometric constraints, time and space complexity, and distributed algorithms.
HTBA

CPSC 5660b, Web3, Blockchains, and CryptocurrenciesBen Fisch

This course is an introduction to blockchain systems, such as Bitcoin and Ethereum. We begin with a brief history of blockchains and an overview of how they are being used today before launching into foundational topics, including distributed consensus, smart contracts, cryptographic building blocks from signatures to authenticated datastructures, and the economics of blockchains. We then cover advanced topics including the scalability and interoperability of blockchain systems and applications such as “decentralized finance” (DeFi). The lectures and assignments engage students in both theoretical and applied aspects of blockchain systems. The course assumes background in various fundamental areas of CS, including discrete math, probability, algorithms, data structures, cryptography, and networks.
HTBA

CPSC 5670a, Introduction to CryptographyCharalampos Papamanthou

This course introduces modern symmetric and public-key cryptography as well as their broad applications, both from a theoretical and practical perspective. There is an initial emphasis on fundamental cryptographic primitives (e.g., block ciphers, pseudorandom functions, pseudorandom generators, one-way functions), their concrete efficiency and implementation, as well as their security definitions and proofs. Ways of combining such primitives that lead to more complex objects used to secure today’s internet (e.g., via TLS), such as key exchange, randomized encryption, message authentication codes, and digital signatures are also studied. The last part of the course is devoted to modern and more advanced applications of cryptography (some of which are deployed at scale today), such as authenticated data structures, zero-knowledge proofs, oblivious RAM, private information retrieval, secret sharing, distributed consensus, and cryptocurrencies. (e.g, Bitcoin).
TTh 11:35am-12:50pm

CPSC 5690a, Randomized AlgorithmsJames Aspnes

Beginning with an introduction to tools from probability theory including some inequalities like Chernoff bounds, the course covers randomized algorithms from several areas: graph algorithms, algorithms in algebra, approximate counting, probabilistically checkable proofs, and matrix algorithms.
MW 2:35pm-3:50pm

CPSC 5700a, Introduction to Artificial IntelligenceTesca Fitzgerald

How can we enable computers to make rational, intelligent decisions? This course explores fundamental techniques for Artificial Intelligence (AI), covering topics such as search, planning, learning, and reasoning under uncertainty. Through hands-on programming projects, students learn conceptual, algorithmic, and practical considerations for implementing foundational AI algorithms. By the end of this class, students have an understanding of the history and breadth of AI problems and topics, and are prepared to undertake more advanced courses in robotics, computer vision, natural language processing, and machine learning.
TTh 1:05pm-2:20pm

CPSC 5710a, Trustworthy Deep LearningRex Ying

In recent years, deep learning has seen applications in many fields, from science and technology, to finance, humanity, and businesses. However, real-world, high-impact machine learning applications demand more than just model performance. In particular, deep learning models are often required to be “trustworthy,” so that domain experts can trust that the models consistently behave in a way that corresponds to their domain knowledge. For example, medical experts would expect a deep learning diagnosis model to be able to explicitly utilize medical domain knowledge in its prediction; an insurance company would expect a decision on insurance price to be explainable in terms of risk factors; a financial company would expect its fraud detection model to be robust to adversarial attacks; a physicist would expect models to provide consistency with the underlying laws. This course introduces various fields of trustworthy deep learning, including model robustness, defenses for adversarial attacks, interpretability, explainability, fairness, privacy, domain adaptation, rules, and constraints. The course covers some of these aspects in the context of graph neural networks but also covers many other ML models in general deep learning, natural language processing, and computer vision. Prerequisites: a course in linear algebra and multi-variable calculus and familiarity with PyTorch and other common Python libraries such as Numpy, Sklearn. Deep learning courses such as CPSC 452 or 453 are recommended.
TTh 4pm-5:15pm

CPSC 5720a, Intelligent RoboticsBrian Scassellati

Introduction to the construction of intelligent, autonomous systems. Sensory-motor coordination and task-based perception. Implementation techniques for behavior selection and arbitration, including behavior-based design, evolutionary design, dynamical systems, and hybrid deliberative-reactive systems. Situated learning and adaptive behavior.
MWF 10:30am-11:20am

CPSC 5740a, Computational Intelligence for GamesJames Glenn

A seminar on current topics in computational intelligence for games, including developing agents for playing games, procedural content generation, and player modeling. Students read, present, and discuss recent papers and competitions, and complete a term-long project that applies some of the techniques discussed during the term to a game of their choice.
TTh 9am-10:15am

CPSC 5750a / ECE 5750a / INP 7575a, Computational Vision and Biological PerceptionSteven Zucker

An overview of computational vision with a biological emphasis. Suitable as an introduction to biological perception for computer science and engineering students, as well as an introduction to computational vision for mathematics, psychology, and physiology students.
MW 2:35pm-3:50pm

CPSC 5770b, Large Language Models: From Foundations to Modern PracticeArman Cohan

This course provides a deep dive into modern large language models (LLMs), spanning both foundational concepts and cutting-edge developments and practice. It begins with core neural network concepts for language modeling, covering word embeddings, sequence modeling, and attention mechanisms. Building on these foundations, we examine transformer architectures and their evolution from task-specific models to general language models, including early models such as BERT, GPT, and T5. We explore how these models enable sophisticated language understanding and generation through pre-training and transfer learning. The latter portion focuses on contemporary advances: scaling of language models, reasoning, retrieval augmentation, post-training and reinforcement learning, alignment, parameter-efficient fine-tuning, evaluation, and LLM-based agents. Prerequisites: Familiarity with the basics of machine learning is required, and students should be comfortable with programming. Introduction to Machine Learning (3810/5810) or Artificial Intelligence (3700/5700). If you have passed equivalent courses, contact the instructor for permission before taking the course.
HTBA

CPSC 5790b, Advanced Topics in Computer GraphicsJulie Dorsey

An in-depth study of advanced algorithms and systems for rendering, modeling, and animation in computer graphics. Topics vary and may include reflectance modeling, global illumination, subdivision surfaces, NURBS, physically based fluids systems, and character animation.
HTBA

CPSC 5791a, Building Game EnginesMichael Shah

This course teaches the fundamentals of building a reusable software architecture by building games. This is a programming-intensive course where the end product of this course is a data-driven game engine that students work in small teams to implement in a systems programming language (e.g. C, C++, D, etc.). Students apply data structures, algorithms, and systems programming skills in the domain of games. Discussion and implementation of the components of a game engine may include: resource management (allocators, resource managers, serialization), abstraction (design patterns, game objects, scripting, graphics layers), graphics management algorithms (scene graphs, level of detail), physics (linear algebra, collision detection and resolution algorithms), artificial intelligence (e.g. pathfinding,decision making), and performance (concurrency, parallelism, math). Students work on a final course project for their portfolio. Prerequisite: previous experience with data structures and systems programming comparable to CPSC 223 and CPSC 323.
MW 4pm-5:15pm

CPSC 5799b, Physics Simulation for MoviesTheodore Kim

This course covers computational methods for simulating physics in movies. In particular, we learn state-of-the-art methods for simulating fluids (fire and water) and solids (muscles, clothing, and skin). The algorithms discussed span offline techniques suitable for movies and touch on how they can be adapted into real-time techniques for games. We cover finite difference and finite element representations and solver practicalities such as conjugate gradients, preconditioning, and Newton iteration. Prerequisite: The student must have taken CPSC 578 or its equivalent. Experience with linear algebra (e.g. MATH 222 or 225 equivalents), Newtonian physics (e.g. PHYS 171 or 181 equivalents), and two semesters of programming experience will be assumed. The student should be able to read and write in an imperative programming language like C/C++ or Java.
HTBA

CPSC 5800a, Introduction to Computer VisionAlex Wong

This course focuses on fundamental topics in computer vision. We begin with the image formation process and discuss the role of camera models and intrinsic calibration in perspective projection. Basic image processing techniques (i.e. filtering) is introduced. After which, we discuss techniques to describe an image, from edges to feature descriptors and methods to establish correspondences between different images of the same scene. The course additionally covers topics in recognition (i.e. image classification, segmentation, detection, etc.) and reconstruction (i.e. stereo, structure-from-motion, optical flow). Machine learning and deep learning based methods in a subset of the topics covered are also introduced. Students get hands-on experience in implementing the techniques covered in the class and applying them to real world datasets and applications. Students taking this course must have successfully passed courses in data structures and object-oriented programming (e.g. CPSC 223a or equivalent courses) and foundational mathematical tools such as discrete math and linear algebra (e.g. CPSC 202 or equivalent courses). It is recommended that students have taken or successfully passed calculus (e.g. MATH 112, MATH 115, MATH 120, or equivalent courses) and linear algebra (e.g. MATH 225, or equivalent courses). A background in statistics, machine learning and deep learning is useful but not required. Experience in programming with Python is preferable, as we use it for assignments and projects. Familiarity with Google Colab and numerical and image processing packages (i.e. NumPy, SciPy, and Sci-kit Image) is helpful throughout the course.
TTh 1:05pm-2:20pm

CPSC 5810b, Introduction to Machine LearningAlex Wong

This course focuses on fundamental topics in machine learning. We begin with an overview of different components of machine learning and types of learning paradigms. We introduce a linear function, discuss how one can train a linear function on a given dataset, and utilize it to tackle classification and regression problems. We then consider kernel methods to enable us to solve nonlinear problems. Additionally, we introduce the concept of generalization error and overfitting. We discuss the role of regularization and extend linear regression to ridge regression. We also cover topics in optimization, beginning from gradient descent and extending it to stochastic gradient descent and its momentum variant. We also cover the concept of alternating optimization and topics within it. We introduce the curse of dimensionality and discuss topics on dimensionality reduction. Finally, we conclude the course with neural networks: how to build them using the topics discussed, how to optimize them, and how to apply them to solve a range of machine learning tasks. Prerequisites: Courses in data structures and object-oriented programming (e.g. CPSC 223a or equivalent courses), foundational mathematical tools such as discrete math and linear algebra (e.g. CPSC 202 or equivalent courses), calculus (e.g. MATH 112, MATH 115, MATH 120, or equivalent courses), linear algebra (e.g. MATH 225, or equivalent courses), and artificial intelligence (e.g. CPSC 370/570). A background in statistics is useful but not required. Experience in programming with Python and familiarity with Google Colab and numerical and image processing packages (i.e. NumPy, SciPy) is helpful.
HTBA

CPSC 5840b, Introduction to Human-Computer InteractionMarynel Vazquez

This course introduces students to the interdisciplinary field of human-computer interaction (HCI), with particular focus on human-robot interaction (HRI). The first part of the course covers principles and techniques in the design, development, and evaluation of interactive systems. It provides students with an introduction to UX design and user-centered research. The second part focuses on the emergent filed of HRI and several other nontraditional interfaces, e.g., AR/VR, tangibles, crowdsourcing. The course is organized as a series of lectures, presentations, a midterm exam, and a term-long group project on designing a new interactive system. Prerequisites: CPSC 201 and CPSC 202 or equivalents. Students who do not fit this profile may be allowed to enroll with permission of the instructor.
HTBA

CPSC 5860b, Probabilistic Machine LearningAndre Wibisono

This course provides an overview of the probabilistic frameworks for machine learning applications. The course covers probabilistic generative models, learning and inference, algorithms for sampling, and a survey of generative diffusion models. This course studies the theoretical analysis of the problems and how to design algorithms to solve them. This course familiarizes students with techniques and results in literature and prepares them for research in machine learning. Prerequisites: Knowledge of machine learning, linear algebra, probability, and calculus.
HTBA

CPSC 5880a, Advances in Foundation ModelsArman Cohan

​​Foundation models are a recent class of AI models that are large-scale in terms of number of parameters and are trained on broad data (generally using self-supervision at scale). These models have demonstrated exceptional capabilities in natural language processing, computer vision, and other tasks. Examples of foundation models are GPT-4, ChatGPT, GPT-3, Dall-E, Stable Diffusion, etc. In this course, we discuss building blocks of foundation models, including transformers, self-supervised learning, transfer learning, learning from human feedback, power of scale, large language models, in-context learning, chain-of-thought prompting, parameter-efficient fine-tuning, vision transformers, diffusion models, generative modeling, safety, ethical and societal considerations, their impact, etc. While the course primarily focuses on advances on large language models, we also cover foundation models in computer vision, as well as multi-modal foundation models. Prerequisite: either CPSC 4770/5770 or CPSC 4800/5800, or permission of the instructor.
MW 2:35pm-3:50pm

CPSC 5890b, Robot LearningTesca Fitzgerald

This course explores methods for grounding machine learning algorithms in embodied, interactive robots. We cover topics including learning from demonstration, active learning, inverse reinforcement learning, representations for modeling high-level and low-level task information, and human factors for designing learning interactions. Students are asked to read and present research papers on these topics from top publication venues in AI, machine learning, robotics, and human-robot interaction. Students also complete lab assignments in which they implement and evaluate state-of-the-art methods for interactive robot learning on a physical robot arm. Prerequisite: CPSC 370/470/570 or an equivalent AI course (requires approval by instructor). Recommended: an introductory machine-learning course such as S&DS 265 or CPSC 481.
HTBA

CPSC 6110a, Topics in Computer Science and Global AffairsJoan Feigenbaum and Ted Wittenstein

This course focuses on “socio-technical” problems in computing and international relations. These are problems that cannot be solved through technological progress alone but rather require legal, political, or cultural progress as well. Examples include but are not limited to cyber espionage, disinformation, ransomware attacks, and intellectual-property theft. This course is offered jointly by the SEAS Computer Science Department and the Jackson School of Global Affairs. It is addressed to graduate students who are interested in socio-technical issues but whose undergraduate course work may not have addressed them; it is designed to bring these students rapidly to the point at which they can do research on socio-technical problems. Prerequisites: Basics of cryptography and computer security (as covered in Yale’s CPSC 467), networks (as covered in Yale’s CPSC 433), and databases (as covered in Yale’s CPSC 437) helpful but not required.
W 4pm-5:55pm

CPSC 6120b, Topics in Algorithmic Game TheoryYang Cai

The course focuses on algorithms and the complexity of equilibrium computation as well as its connection with learning theory and optimization. As many recent machine learning approaches have moved from an optimization perspective to an “equilibration” perspective, where a good model is framed as the equilibrium of a game. The intersection of game theory, learning theory, and optimization is becoming increasingly relevant. The goal of the course is to cover the fundamentals and bring students to the frontier of this active research area. Prerequisites: A course in algorithms (CPSC 365 or 366) and a course in probability theory (MATH/S&DS 241). A course in algorithmic game theory (CPSC 455/555) is helpful but not required.
HTBA

CPSC 6400b / AMTH 6400b / MATH 6400b, Topics in Numerical ComputationEric Michielssen

This course discusses several areas of numerical computing that often cause difficulties to non-numericists, from the ever-present issue of condition numbers and ill-posedness to the algorithms of numerical linear algebra to the reliability of numerical software. The course also provides a brief introduction to “fast” algorithms and their interactions with modern hardware environments. The course is addressed to Computer Science graduate students who do not necessarily specialize in numerical computation; it assumes the understanding of calculus and linear algebra and familiarity with (or willingness to learn) either C or FORTRAN. Its purpose is to prepare students for using elementary numerical techniques when and if the need arises.
HTBA

CPSC 6440a / MATH 7440a, Geometric and Topological Methods in Machine LearningSmita Krishnaswamy

This course provides an introduction to geometric and topological methods in data science. Our starting point is the manifold hypothesis: that high dimensional data live on or near a much lower dimensional smooth manifold. We introduce tools to study the geometric and topological properties of this manifold in order to reveal relevant features and organization of the data. Topics include: metric space structures, curvature, geodesics, diffusion maps, eigenmaps, geometric model spaces, gradient descent, data embeddings and projections, and topological data analysis (TDA) in the form of persistence homology and their associated “barcodes.” We see applications of these methods in a variety of data types. Prerequisites: MATH 2250 or 2260; MATH 2550 or 2560; MATH 3020; and CPSC 1001
TTh 11:35am-12:50pm

CPSC 6900a, Independent Project IBrian Scassellati

Independent Project I. By arrangement with faculty.
HTBA

CPSC 6910a, Independent Project IIAlex Lew

By arrangement with faculty.
HTBA

CPSC 6920a, Independent ProjectHolly Rushmeier

Individual research for students in the M.S. program. Requires a faculty supervisor and the permission of the director of graduate studies.
HTBA

CPSC 6930a, MS Thesis Research IAnurag Khandelwal

First term of thesis research for students in the two-year MS program in Computer Science None
HTBA

CPSC 6940a, MS Thesis Research IIHolly Rushmeier

Second term of thesis research for students in the two-year MS program in Computer Science.
HTBA

CPSC 7430a, Topics in Flow-Based Generative Modeling and Optimal TransportAram-Alexandre Pooladian

Generative AI has had an immense impact on many scientific disciplines over the last several years. A driving force has been the development of scalable algorithms that allow practitioners to “flow” from simple distributions to complex ones. In this course, we explore the mathematical and algorithmic foundations of generative models through the lens of flow-based transport. Topics include flow matching, stochastic interpolants, diffusion models, optimal transport maps, Schrödinger bridges, and their applications and extensions. Prerequisites: probability theory, multivariate calculus, and linear algebra, some programming, and permission of the instructor.
M 9:25am-11:20am

CPSC 7520b / CB&B 7520b / MB&B 7520b and MB&B 753b and MB&B 754b / MB&B 753b and MB&B 754b / MB&B 754b / MCDB 7520b / S&DS 5520b, Biomedical Data Science: Mining and ModelingMark Gerstein and Matthew Simon

Biomedical data science encompasses the analysis of gene sequences, macromolecular structures, and functional genomics data on a large scale. It represents a major practical application for modern techniques in data mining and simulation. Specific topics to be covered include sequence alignment, large-scale processing, next-generation sequencing data, comparative genomics, phylogenetics, biological database design, geometric analysis of protein structure, molecular-dynamics simulation, biological networks, normalization of microarray data, mining of functional genomics data sets, and machine-learning approaches to data integration. Prerequisites: biochemistry and calculus, or permission of the instructor.
MW 1pm-2:15pm

CPSC 7551b, The Economic Impacts of Generative AINicole Immorlica

Generative AI is transforming how goods and information are produced, processed, and incorporated into economic activity. This graduate-level reading course examines the economic foundations and implications of this emerging technology, with a focus on theoretical frameworks drawn from economics and computer science. We cover a variety of topics, including the macroeconomic impact of AI on productivity and growth, the changing nature of work and expertise, how AI influences human decision-making and team collaboration, the design of incentives and mechanisms for AI alignment, and applications of AI to consumer markets and content ecosystems. Students read and discuss cutting-edge research papers. Each class is organized around a student presentation followed by group discussion. Over the course of the semester, students also develop a research proposal outlining a project related to the economics of generative AI and present it to the class during the final lectures of the course. By the end of the course, students have developed a broad understanding of the key economic questions raised by generative AI, the theoretical tools used to analyze them, and a promising novel research direction that could be further developed in independent projects. Expertise in microeconomics and algorithms helpful but not required.
HTBA

CPSC 9900a, Ethical Conduct of Research for Master’s StudentsXiuye 'Sue' Chen

This course forms a vital part of research ethics training, aiming to instill moral research codes in graduate students of computer science, math, and applied math. By diving into case studies and real-life examples related to research misconduct, students will grasp core ethical principles in research and academia. The course also offers an opportunity to explore the societal impacts of research in computer science, math, and applied math. This course is designed specifically for first-year graduate students in computer science/applied math/math. Successful completion of the course necessitates in-person attendance on eight occasions; virtual participation will not fulfill this requirement. In cases where illness, job interviews, or unforeseen circumstances prevent attendance, makeup sessions will be offered. This course is 0 credits for YC students.  0 Course cr
F 1:30pm-2:20pm

CPSC 9910a / MATH 9910a, Ethical Conduct of ResearchXiuye 'Sue' Chen

This course forms a vital part of research ethics training, aiming to instill moral research codes in graduate students of computer science, math, and applied math. By diving into case studies and real-life examples related to research misconduct, students grasp core ethical principles in research and academia. The course also offers an opportunity to explore the societal impacts of research in computer science, math, and applied math. This course is designed specifically for first-year graduate students in computer science, applied math, and math. Successful completion of the course necessitates in-person attendance on eight occasions; virtual participation does not fulfill this requirement. In cases where illness, job interviews, or unforeseen circumstances prevent attendance, makeup sessions are offered.  0 Course cr
F 2:30pm-3:20pm

CPSC 9920b, Writing and Presentations One-on-OneJanet Kayfetz

This is a unique class for Ph.D. students and postdocs. All meetings are conducted as one-on-one individual conferences. There are no assignments; participants work solely on their writing-in-progress and current presentation projects. Our goal is to produce excellent texts and presentations that meet specific deadlines. For writing, we look at content, rhetorical positioning and audience, organizational logic, knowledge claims, style, tone, sentence-level language, grammar, transitions, readability, clarity, and rigor. For presentations, we look at the presentation story, positioning and organization, fit and balance of the content into the allotted time, visuals, delivery, pronunciation, responding to questions, and personal style.  0 Course cr
HTBA