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
* | A secondary appointment with primary affiliation in another department or school. |
† | A joint appointment with another department. |
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
- 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;
- take six advanced courses in areas of general computer science;
- successfully complete a research project in CPSC 6900, CPSC 6910, and submit a written report on it to the faculty;
- pass a qualifying examination in an area of specialization;
- be accepted as a thesis student by a regular department faculty member;
- serve as a teaching assistant for two terms; and
- 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 5130b, Computer System Security Timothy Barron
Overview of the principles and practice behind analyzing, designing, and implementing secure computer systems. The course covers problems that have continued to plague computer systems for years as well as recent events and research in this rapidly evolving field. Students learn to think from the perspective of an adversary, to understand systems well enough to see how their flaws could be exploited, and to consequently defend against such exploitation. The course offers opportunities for hands-on exploration of attacks and defenses in the contexts of web applications, networks, and system-level software. It also addresses ethical considerations and responsibilities associated with security research and practice.
HTBA
CPSC 5150b, Law and Large Language Models Ruzica Piskac and Scott Shapiro
This course is intended for computer science and law students interested in how artificial intelligence can be applied to legal reasoning. It combines basic AI theory with practical project work, focusing on using tools like large language models (LLMs) and other AI technologies for tasks common in legal practice. Students learn how to automate case summarization, draft legal memos and briefs, simulate oral arguments for better argumentation skills, and assist in the preparation of pro-se motions for self-represented litigants. The course emphasizes hands-on experience, helping students build real-world skills in applying AI in legal settings. Our goal is to bring together students from computer science and from law and match them together in the teams. Each team works on a project that automates a specific aspect of the legal process or legal reasoning, focusing on practical, real-world applications. In addition to all standard course requirements, graduate students need to present a recent, relevant research paper in class. Prerequisites: basic coding skills, including knowledge of Python; interest in Large Language Models (LLMs); basic understanding of linear algebra and calculus; familiarity with basic probability (e.g., likelihood, averages) and simple statistical concepts (like mean and variance).
HTBA
CPSC 5160a, Lattices and Post-Quantum Cryptography Katerina 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.
MW 4pm-5:15pm
CPSC 5190a or b, Full Stack Web Programming Alan 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.
HTBA
CPSC 5200b, Computer Architecture Abhishek Bhattacharjee
This course offers a treatment of computer architectures for high-performance and power/energy-efficient computer systems. Topics include the foundations of general-purpose computing, including instruction set architectures, pipelines, superscalar and out-of-order execution, speculation, support for precise exceptions, and simultaneous multi-threading. We also cover domain-specific hardware (e.g., graphics processing units), and ongoing industry efforts to elevate them to the status of first-class computing units. In tandem, we cover topics relevant to both general-purpose and domain-specific computing, including memory hierarchies, address translation and virtual memory, on-chip networks, machine learning techniques for resource management, and coherence techniques. If time permits, we study the basics of emerging non-classical computing paradigms like neuromorphic computing. Overall, this course offers insights on how the computing industry is combating the waning of traditional technology scaling via acceleration and heterogeneity. Prerequisites: Courses similar to CPSC 323, 223, and 202. This is a programming-intensive course, so comfort with large programming projects is essential.
HTBA
CPSC 5210a, Compilers and Interpreters Zhong Shao
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.
MW 2:30pm-3:45pm
CPSC 5230b, Operating Systems Anurag Khandelwal
The design and implementation of operating systems. Topics include synchronization, deadlocks, process management, storage management, file systems, security, protection, and networking.
HTBA
CPSC 5240b, Parallel Programming Techniques Quanquan Liu
Practical introduction to parallel programming, emphasizing techniques and algorithms suitable for scientific and engineering computations. Aspects of processor and machine architecture. Techniques such as multithreading, message passing, and data parallel computing using graphics processing units. Performance measurement, tuning, and debugging of parallel programs. Parallel file systems and I/O.
HTBA
CPSC 5261a, Building AI Infra Systems Y. Richard Yang
This course covers the design, deployment, operations, and optimization of infrastructure systems that power large-scale modern AI systems such as large-language models (LLMs). It takes an all-resources view, considering AI infrastructure components spanning compute, memory, storage, network, data, and energy resources. Focusing on core AI infrastructure design goals including efficiency, scalability, and stability, the course studies not only the basic mechanisms but also the complete systems to realize the goals. Labs and a capstone project form the core of the course. Prerequisite: CPSC 323, or an equivalent course in systems programming. A background in AI is highly recommended.
TTh 1pm-2:15pm
CPSC 5270a, C++ Programming for Stability, Security, and Speed Michael Fischer
Computer programming involves both abstraction and practice. Lower-level programming courses focus on learning how to correctly implement algorithms for carrying out a task. This course treats a computer program as an artifact with additional attributes of practical importance including execution efficiency, clarity and readability, redundancy, safety in the face of unexpected or malicious environments, and longevity—the ability to evolve over time as bugs are discovered and requirements change. This course is taught using modern C++.
MW 1pm-2:15pm
CPSC 5310a, Computer Music: Algorithmic and Heuristic Composition Scott 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 Synthesis Scott 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 Networks Y. 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 5350b, Building an Internet Router Robert Soule
Over the course of the term, students build a fully functioning Internet router. Students design the control plane in Python on a Linux host and design the data plane in the new P4 language on the bmv2 software switch. To provide context and background for the design of their router, students read a selection of papers to get both a historical perspective and exposure to current research in networking. Prerequisite: CPSC 533.
HTBA
CPSC 5370a, Database Systems Avi 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 5380a, Big Data Systems: Trends and Challenges Anurag 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 Engineering Timos 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 Engineering Timos 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 AI Ben 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.
TTh 1pm-2:15pm
CPSC 5420a, Theory of Computation Dylan 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 Cryptography Fan 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 5460a, Data and Information Visualization Holly Rushmeier
Visualization is a powerful tool for understanding data and concepts. This course provides an introduction to the concepts needed to build new visualization systems, rather than to use existing visualization software. Major topics are abstracting visualization tasks, using visual channels, spatial arrangements of data, navigation in visualization systems, using multiple views, and filtering and aggregating data. Case studies to be considered include a wide range of visualization types and applications in humanities, engineering, science, and social science. Prerequisite: CPSC 223.
MW 1pm-2:15pm
CPSC 5470a, Introduction to Quantum Computing Yongshan 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 5490b, Quantum Information Systems Yongshan Ding
Quantum information systems encompass the hardware, software, and networking systems that are designed to encode, store, process, and distribute quantum information. In this course, students get a complete view of such information systems and explore the current advancement associated with building practical quantum computers and networks. This course is structured as four modules: quantum information theory, quantum processor, quantum memory, and quantum network. Students are asked to read and discuss selected research papers. Prerequisite: CPSC 547, PHYS 345 or equivalent. This course is intended for advanced undergraduates who are familiar with basic quantum computation and information. We anticipate this course will be of interest to students working in computer science, electrical engineering, or physics.
HTBA
CPSC 5510b, The User Interface David Gelernter
The user interface (UI) in the context of modern design, where tech has been a strong and consistent influence from the Bauhaus and U.S. industrial design of the 1920s and 1930s through the IBM-Eames design project of the 1950s to 1970s. The UI in the context of the windows-menus-mouse desktop, as developed by Alan Kay and Xerox in the 1970s and refined by Apple in the early 1980s. Students develop a detailed design and simple implementation for a UI.
HTBA
CPSC 5520b / AMTH 5520b / CB&B 6663b / GENE 6630b, Deep Learning Theory and Applications Smita Krishnaswamy
Deep neural networks have gained immense popularity within the past decade due to their success in many important machine-learning tasks such as image recognition, speech recognition, and natural language processing. This course provides a principled and hands-on approach to deep learning with neural networks. Students master the principles and practices underlying neural networks, including modern methods of deep learning, and apply deep learning methods to real-world problems including image recognition, natural language processing, and biomedical applications. Course work includes homework, a final exam, and a final project—either group or individual, depending on enrollment—with both a written and oral (i.e., presentation) component. The course assumes basic prior knowledge in linear algebra and probability. Prerequisites: CPSC 202 and knowledge of Python programming.
HTBA
CPSC 5540a, Software Analysis and Verification Ruzica 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:30pm-3:45pm
CPSC 5550a, Algorithmic Game Theory Manolis Zampetakis
A mathematically rigorous investigation of the interplay of economic theory and computer science, with an emphasis on the relationship of incentive-compatibility and algorithmic efficiency. Particular attention to the formulation and solution of mechanism-design problems that are relevant to data networking and Internet-based commerce.
MW 2:30pm-3:45pm
CPSC 5580b, Automated Decision Systems Stephen Slade
People make dozens of decisions every day in their personal and professional lives. What would it mean for you to trust a computer to make those decisions for you? It is likely that many of those decisions are already informed, mediated, or even made by computer systems. Explicit examples include dating sites like match.com or recommendation systems such as Amazon or Netflix. Most Internet ads on sites like Google or Facebook are run by real-time-bidding (RTB) systems that conduct split-second auctions in the hopes of getting your attention. Driverless cars offer the promise of safer highways. Corporations and other enterprises invest in decision support systems to improve the quality of their products and services. This course considers the spectrum of automated decision models and tools, examining their costs and effectiveness. Examples come from a variety of fields including finance, risk management, credit-card fraud, robotics, medicine, and politics.
HTBA
CPSC 5590a, Building Interactive Machines Marynel 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 5626a, Scalable and Private Graph Algorithms Quanquan Liu
What techniques can we use to deal with modern real-world data with billions of data points? How do we account for strong adversaries that violate the privacy of users providing this data? This course provides students with the knowledge to tackle research questions in these domains. We propose answers and techniques to these broad questions from an algorithmic standpoint, presenting foundational topics such as: (1) the parallel, distributed, and streaming models and algorithmic techniques commonly used within these models; (2) differential privacy and mechanisms for private data analysis; and (3) implementation techniques, tools, and examples that demonstrate the practicality of these algorithms in real-world systems. This course focuses on advanced topics in practical graph algorithms with provable guarantees beyond the sequential model used in most introductory algorithms classes. Specific topics include local graph techniques for problems such as maximal matching, independent set, k-core decomposition, densest subgraphs, and coloring as well as global techniques for problems like connectivity, shortest paths, and spanners. Introductory lectures also feature techniques used beyond graph algorithms. Students are asked to read and present influential recent research papers on these topics. Papers come from prominent CS theory conferences such as STOC, FOCS, SODA as well as database and data mining conferences like VLDB, PODS, and WWW. In addition to these presentations, students also work on a final project which may be theoretical or implementation-based. The course also features voluntary open problem sections where we discuss (known) practice problems and open-ended research questions related to the topics in this course in a collaborative group setting.
TTh 1pm-2:15pm
CPSC 5630b / ECON 5565b, Algorithms via Convex Optimization Nisheeth 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 Implications Nisheeth 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:15am
CPSC 5650b, Theory of Distributed Systems James 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 Cryptocurrencies Ben 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 Cryptography Charalampos 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 5671b, Advanced Topics in Cryptography: Cryptography and Computation Charalampos Papamanthou
Traditional cryptography is mostly concerned with studying the foundations of securing communication via, for example, encryption and message authentication codes. This class studies the applications of cryptography in securing computation. Topics include, but not limited to, fundamental results and most recent progress in oblivious computation and private information retrieval (PIR), zero-knowledge proofs, secure computation, consensus algorithms, searchable encryption, and lattice-based cryptography. The class focuses both on theory and applications. This is an advanced course, which requires mathematical maturity as well as comfort with programming. The course also assumes prior knowledge of fundamental notions in cryptography. Prerequisite: CPSC 4670 or equivalent.
HTBA
CPSC 5680b, Computational Complexity Dylan McKay
Introduction to the theory of computational complexity. Basic complexity classes, including polynomial time, nondeterministic polynomial time, probabilistic polynomial time, polynomial space, logarithmic space, and nondeterministic logarithmic space. The roles of reductions, completeness, randomness, and interaction in the formal study of computation.
HTBA
CPSC 5690a, Randomized Algorithms James 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:30pm-3:45pm
CPSC 5700a, Artificial Intelligence Tesca Fitzgerald
Introduction to artificial intelligence research, focusing on reasoning and perception. Topics include knowledge representation, predicate calculus, temporal reasoning, vision, robotics, planning, and learning.
TTh 11:35am-12:50pm
CPSC 5710a, Trustworthy Deep Learning Rex 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 5740a, Computational Intelligence for Games James 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.
MW 1pm-2:15pm
CPSC 5750a / ECE 5750a / INP 7575a, Computational Vision and Biological Perception Steven 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:30pm-3:45pm
CPSC 5770b, Natural Language Processing Arman Cohan
This course provides a deep dive into modern Natural Language Processing (NLP), with a strong focus on Language Modeling. The curriculum spans both foundational concepts and cutting-edge developments in the field. The course begins with core neural network concepts in NLP, covering word embeddings, sequence modeling, and attention mechanisms. Building on these foundations, we explore transformer architectures and their evolution, including early transformer language models like BERT, GPT and T5. The course examines how these models enable sophisticated language understanding and generation through pre-training and transfer learning. The latter portion covers contemporary advances: Large Language Models (LLMs), multi-modal integration, parameter-efficient fine-tuning, evaluation, multi-agent systems, reasoning, and model compression. We'll analyze the capabilities and limitations of current systems while discussing emerging research directions.
HTBA
CPSC 5780b, Computer Graphics Theodore Kim
Introduction to the basic concepts of two- and three-dimensional computer graphics. Topics include affine and projective transformations, clipping and windowing, visual perception, scene modeling and animation, algorithms for visible surface determination, reflection models, illumination algorithms, and color theory.
HTBA
CPSC 5790b, Advanced Topics in Computer Graphics Julie 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 Engines Michael 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 5792b, Real-Time 3D Computer Graphics Programming Michael Shah
This course teaches the fundamentals of real-time 3D computer graphics programming using a systems programming language (e.g. C, C++, D, etc.). Students interested in making 3D games, virtual reality applications, simulations, medical visualizations, and other interactive applications are the target audience. Throughout the course students also learn about co-processors (e.g. GPUs) for hardware accelerated graphics, and program in a graphics API enabling hardware accelerated graphics. Students apply a sampling of mathematics in the domain of geometry, trigonometry, linear algebra, and calculus in order to generate photo and non-photorealistic images in real-time. Additional topics may include: geometry processing, scene organization, texturing techniques, advanced lighting techniques, compute shaders, and topics in performance.
HTBA
CPSC 5800a, Introduction to Computer Vision Alex 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 1pm-2:15pm
CPSC 5810b, Introduction to Machine Learning Alex 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 5830b, Deep Learning on Graph-Structured Data Rex Ying
Graph structure emerges in many important domain applications, including but not limited to computer vision, natural sciences, social networks, languages, and knowledge graphs. This course offers an introduction to deep learning algorithms applied to such graph-structured data. The first part of the course is an introduction to representation learning for graphs and covers common techniques in the field, including distributed node embeddings, graph neural networks, deep graph generative models, and non-Euclidean embeddings. The first part also touches upon topics of real-world significance, including auto-ML and explainability for graph learning. The second part of the course covers important applications of graph machine learning. We learn ways to model data as graphs and apply graph learning techniques to problems in domains including online recommender systems, knowledge graphs, biological networks, physical simulations and graph mining. The course covers many deep techniques (graph neural networks, graph deep generative models) catered to graph structures. We cover basic deep learning tutorials in this course. Knowledge of graphs as a data structure, and understanding of basic graph algorithms are essential for applying machine learning to graph-structured data. Familiarity with Python and important libraries such as Numpy and Pandas are helpful. A foundation of deep neural networks is highly recommended. Experience in machine Learning and Graph Theory are welcomed as well.
HTBA
CPSC 5840b, Introduction to Human-Computer Interaction Marynel 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 5850a, Applied Planning and Optimization Daniel Rakita
This course introduces students to concepts, algorithms, and programming techniques pertaining to planning and optimization. At a high level, the course teaches students how to break down a particular problem into a state-space or a state-action space, how to select an effective planning or optimization algorithm given the problem at hand, and how to ultimately apply the selected algorithm to achieve desired outputs. Concepts are solidified through grounded, real-world examples (particularly in robotics, but also including machine learning, graphics, biology, etc.). These examples come in the form of programming assignments, problem sets, and a final project. General topics include discrete planning, sampling-based path planning, optimization via matrix methods, linear programming, computational differentiation, non-linear optimization, and mixed integer programming. After the course, students are able to generalize their knowledge of planning and optimization to any problem domain. Knowledge of linear algebra and calculus is expected. Students should be familiar with matrix multiplication, derivatives, and gradients.
MW 9am-10:15am
CPSC 5860b, Probabilistic Machine Learning Andre 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 5870b, 3D Spatial Modeling and Computing Daniel Rakita
Several areas of computer science and related fields must model and compute how objects are situated in three-dimensional space over time, such as robotics, computer vision, computer graphics, computational physics, computational biology, aerospace engineering, and so on. This course teaches students how to computationally model the spatial configuration of and spatial relationships between objects over time. Topics covered include various methods for representing spatial configurations and transformations (such as transformation matrices, Euler angles, unit quaternions, dual quaternions, etc.), hierarchical chaining of spatial transformations, derivatives of spatial representations with respect to time, computing intersections and penetration depths between objects in space, interpolating over spatial representations (such as using splines), signal processing over spatial transformations, optimizing over spatial representations, and more. To develop these concepts rigorously, we draw from linear algebra, calculus, topology, Lie theory, and geometric algebra. Real-world examples from robotics, computer vision, and computer graphics are utilized to solidify these concepts, with programming assignments, problem sets, and a final project that allows students to apply what they have learned. Interactive visual aids created by the instructor are an integral part of lectures to help students connect mathematical concepts with spatial phenomena. Prerequisites: Undergraduate students should have taken CPSC 202 and CPSC 223. All students should have proficiency in programming with mathematical reasoning. A background in linear algebra and calculus is recommended but not required.
HTBA
CPSC 5890b, Robot Learning Tesca 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 Affairs Joan 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 3:30pm-5:20pm
CPSC 6120b, Topics in Algorithmic Game Theory Yang 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 6130a, Digital Identity Infrastructure Michael Fischer
A digital identity system establishes a connection between a real person and an internet platform such as an online banking site or a social media platform. Current digital identity systems utilize an ad hoc collection of password-based and multi-factor authentication methods. The inconsistency of these methods leads to user confusion, inconvenience, lack of interoperability, poor privacy properties, and degraded security. Data breaches, account takeovers, and privacy violations have become the norm. Efforts to combat these abuses have only been marginally effective. This course presents design principles for an internet-wide digital identity standard to ameliorate most of these problems. It is based on established principles of commerce and law from the non-digital world such as isolation of sensitive data, distributed trust, rules of evidence, and dispute-resolution procedures. A network of trusted agents maintain a distributed blockchain of transactions that provide evidence of authorization of internet transactions and assign responsibility for breaches of trust. Helpful but not required: basics of cryptography and computer security (as covered in Yale’s CPSC 4670), distributed computing (as covered in Yale's CPSC 4650), and networks (as covered in Yale’s CPSC 4330). Instructor permission required.
MW 2:30pm-3:45pm
CPSC 6400b / AMTH 640b / MATH 6400b, Topics in Numerical Computation Vladimir Rokhlin
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 7440, Geometric and Topological Methods in Machine Learning Smita 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 225 or 226; MATH 255 or 256; MATH 302 and CPSC 112. Students who completed MATH 231 or 250 may substitute another analysis course level 300 or above in place of MATH 302. Familiarity with algorithms/programming is beneficial.
TTh 11:35am-12:50pm
CPSC 6900a, Independent Project I Lin Zhong
Independent Project I. By arrangement with faculty.
HTBA
CPSC 6910a, Independent Project II Staff
By arrangement with faculty.
HTBA
CPSC 6920a, Independent Project Staff
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 I Holly Rushmeier
First term of thesis research for students in the two-year MS program in Computer Science None
HTBA
CPSC 6940a, MS Thesis Research II Holly Rushmeier
Second term of thesis research for students in the two-year MS program in Computer Science.
HTBA
CPSC 7520b / CB&B 7520b / MB&B 7520b / MB&B 753 / MB&B 754 / MCDB 7520b, Biomedical Data Science: Mining and Modeling Mark 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 7760b, Topics in Industrial AI Applications Xiuye (Sue) Chen
This seminar aims to familiarize students with cutting-edge topics in industrial AI research and their practical applications. We will explore a broad range of topics such as large language models, image generation, ML/AI systems considerations, autonomous vehicles, robotics, recommender systems, ambient intelligence, and AI applications in the life sciences and healthcare. Most sessions will be devoted to in-depth discussions of one to two key papers on modern AI applications. We will also feature a series of industry guest speakers, providing students with the opportunity to learn directly from practicing experts. In this seminar, students are expected to present papers, actively participate in class discussions, and work either individually or in groups on a final project that emphasizes the practical implementation of AI techniques. Students should be familiar enough with ML/AI concepts to read academic papers, and comfortable with programming to run open source code in the ML/AI space.
HTBA
CPSC 9900a, Ethical Conduct of Research for Master’s Students Yoehan Oh
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
F 1:30pm-2:20pm
CPSC 9910a / MATH 9910a, Ethical Conduct of Research Yoehan Oh
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
F 2:30pm-3:20pm
CPSC 9920a or b, Academic Writing Staff
This course is an intensive analysis of the principles of excellent writing for Ph.D. students and scientists preparing a range of texts including research papers, conference posters, technical reports, research statements, grant proposals, correspondence, science and industry blogs, and other relevant documents. We look at the components of rhetorical positioning in the development of a clear, interesting, and rigorous science research paper. Some of the sub-genres we analyze and practice include the introduction, literature review, methodology, data commentary, results/discussion, conclusion, and abstract. In addition to the research paper, we practice other types of texts including research statements, requests for funding, bio-data statements, and blogs. We also discuss how writers can develop content and fluency as well as strategies for redrafting and editing. Students receive detailed feedback on their writing with a focus on clarity, precision, tone, and readability. 0 Course cr
T 10am-11:50am