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,* Abhishek Bhattacharjee, Yang Cai, Ronald Coifman,* Aaron Dollar,* Julie Dorsey, Joan Feigenbaum, Michael Fischer, Robert Frank,* David Gelernter, Mark Gerstein,* 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, Y. Richard Yang, Lin Zhong, Steven Zucker†

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

Assistant Professors Ian Abraham,* Kim Blenman,* Hoon Cho,* Arman Cohan, Yongshan Ding, Benjamin Fisch, Tesca Fitzgerald, Anurag Khandelwal, Alex Lew, Quanquan Liu, Tom McCoy,* Daniel Rakita, Katerina Sotiraki, David van Dijk,* Marynel Vázquez, Andre Wibisono, Alex Wong, Zhuoran Yang,* 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 Master’s Degree Program 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 one grade 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 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 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.
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 5370a, 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.
TTh 9am-10:15am

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 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 5470a, Introduction to Quantum ComputingYongshan Ding

This course introduces the fundamental concepts in the theory and practice of quantum computing. Topics covered include information processing, quantum programming, quantum compilation, quantum algorithms, and error correction. The objective of the course is to engage students in applying fresh thinking to what computers can do. We establish an understanding of how quantum computers store and process data, and we discover how they differ from conventional digital computers. We anticipate this course will be of interest to students working in computer science, electrical engineering, physics, or mathematics. Students must be comfortable with programming, discrete probability, and linear algebra. Prior experience in quantum computing is useful but not required.
MW 11:35am-12:50pm

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 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 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 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 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 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 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 6400a / AMTH 6400a / MATH 6400a, 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.
MW 9am-10:15am

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 1:05pm-2:20pm

CPSC 6900a, Independent Project IStaff

Independent Project I. By arrangement with faculty.
HTBA

CPSC 6910a, Independent Project IIStaff

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 IStaff

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 TransportStaff

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

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 StudentsStaff

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 devling 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
HTBA

CPSC 9910a / MATH 9910a, Ethical Conduct of ResearchStaff

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 delving 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
HTBA

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