Updated October 2024
This page serves the purpose of helping graduate students understand each graduate course offered during the 2024-2025 academic year. Please use this page as a guideline to help decide what courses to take.
***Please be aware that our website is currently undergoing updates, and as a result, some course descriptions may not be available. This process is a collaborative effort involving the enrollment coordinator and instructors. Collecting course descriptions may therefore take some time as responses are gathered. TBA, means the course is still being offered.
Winter 2025 Graduate Course Information
CSE 202 - Algorithm Design and Analysis with Prof. Russell Impagliazzo
Course Description: This course is intended primarily for non-theory computer science graduate students who will need to formalize computational problems, and design and implement or use existing efficient algorithms for these problems. The emphasis is on methods that can be used for a wide variety of cutting-edge applications, as in genomics, data mining, or VLSI design. This course presents general techniques and paradigms for designing and analyzing algorithms for a variety of computational problems. Techniques include reductions between problems, graph search, greedy algorithms, divide and conquer, backtracking, dynamic programming, and hill-climbing. For each technique, we will see a variety of applications of the technique, starting with relatively straightforward applications and then going on to look at applications or settings that stretch the uses of the technique. These examples will be presented in class, in independent reading in the text, and discovered by students in assignments. A course project will be on formalizing computational problems and inventing algorithms for them.
Required Knowledge: We assume some undergraduate exposure to discrete mathematics, and to algorithms and their analysis, and the ability to read, recognize, and write valid proofs. For example, CSE 20, CSE 21, and CSE 101 cover the prerequisite material. We will cover many of the same topics from undergraduate algorithms courses. However, after a quick review of the basics, we will move on to related advanced material for each topic. If your background in these areas is weak, you may need to do some extra work to catch up. Please talk to me about this. Students without prerequisites will be admitted at their own risk.
Enforced Prerequisite: None
Recommended Preparation for Those Without Required Knowledge: See above
Link to Past Course: https://cseweb.ucsd.edu/classes/wi14/cse202-a/
CSE 203B - Convex Optimization with Prof. CK Cheng
Course Description: We study the formulations and algorithms solving convex optimization
problems. The topics include convex sets, functions, optimality conditions, and duality concepts.
If time permits, we will talk about convex optimization algorithms. The objective of the course is
to provide students with the background and techniques for scientific computing and system
optimization.
Required Knowledge: Linear algebra.
Enforced Prerequisite: None
Recommended Preparation for Those Without Required Knowledge: Recommended
Preparation for Those Without Required Knowledge: Study the Appendix
(Mathematical background, Numerical linear algebra) of the textbook before the quarter starts.
Link to Past Course: https://cseweb.ucsd.edu/classes/wi23/cse203B-a/
CSE 207A - Cryptography&Network Security with Prof. Mihir Bellare
Description: This course is an introduction to modern cryptography emphasizing proofs of security by reductions. Topics include block ciphers, hash functions, pseudorandom functions, symmetric encryption, message authentication, RSA, asymmetric encryption, digital signatures, key distribution and protocols. We will introduce the “provable security” approach, formally defining security for various primitives via games, and then proving that schemes achieve the defined goals. We adopt a “theory brought to practice” viewpoint, focusing on cryptographic primitives that are used in practice and showing how theory leads to higher-assurance real world cryptography.
Required Knowledge: The course needs the ability to understand theory and abstractions and do rigorous mathematical proofs.
Minimal requirements are equivalent of CSE 21, 101, 105 and probability theory. Better preparation is CSE 200.
Enforced Prerequisite: None enforced, but CSE 21, 101, and 105 are highly recommended.
Recommended Preparation for Those Without Required Knowledge: Look at syllabus of CSE 21, 101 and 105 and cover the textbooks.
Link to Past Course: https://cseweb.ucsd.edu//~
CSE 209A - TOP/SEM/ALGRTHMS,COMPLXTY&LOGC WITH PROF. DANIEL GRIER
Course Description: Weekly seminars on topics in theoretical computer science.
Required Knowledge: A general undergraduate background in theory will be assumed.
Enforced Prerequisite: None
Recommended Preparation for Those Without Required Knowledge: None
Link to Past Course: https://cse.ucsd.edu/research/
CSE 220 - Operating System Concepts with Prof. Joe Pasquale
Course Description: Introduces operating systems concepts, including processes, synchronization, scheduling, memory management, virtual memory, file systems, and protection.
Required Knowledge: operating systems
Enforced Prerequisite:
Recommended Preparation for Those Without Required Knowledge: Requires an understanding of architecture/machine organization with emphasis on systems programming in C.
Link to Past Course: None
CSE 222C - with Prof. Pat Pannuto
Course Description: This course covers the design, operation, and use of wireless technologies, with emphasis on how physical resource constraints and application constraints meet to affect link, network, system, and application design, with hands-on experience in multiple technologies. May be co-scheduled with CSE 122.
Required Knowledge: Basics of software engineering, modular design, data structures, physical (in-memory) representation of data structures, code compilation, build systems, version control, debuggers, C code, and pointer manipulation in C.
Enforced Prerequisite: None
Recommended Preparation for Those Without Required Knowledge: There is no textbook for this course.
For background and more depth in embedded system design and operation, we recommend Lee & Seshia's Introduction to Embedded Systems.
For debugging and lab support, stack overflow, electronics stack exchange, and vendor forums (e.g. Nordic DevZone) are good resources.
Link to Past Course: https://patpannuto.com/
CSE 227 - Computer Security with Prof. Kumar
Course Description: This course focuses on computer security, exploring a range of topics – including systems security, web security, edge security, and privacy – to illustrate some of the modern research challenges in the area and the standards for advancement. It is not designed to be a tutorial course, but rather to give students the context to understand current security research and evaluate their interest in the field. The course will examine both the defensive and offensive side of the field. The course will culminate in a presentation of a quarter-long research project that students will conduct in small groups.
Required Knowledge: Undergraduate understanding of data structures, algorithms, operating systems, security, networks, cryptography.
Enforced Prerequisite: None
Recommended Preparation for Those Without Required Knowledge: N/A
Link to Past Course: None
CSE 229A - Tops/Seminar/Computer Systems with Prof. Yiying Zhang
Course Description: Lunch seminar for SysNet students
Required Knowledge: Currently working with a SysNet faculty
Enforced Prerequisite: None
Recommended Preparation for Those Without Required Knowledge: None
Link to Past Course: None
CSE 230 - Principles of Programming Languages with Prof. Ranjit Jhala
Course Description: Unlike most engineering artifacts, Programming Languages and Programs are mathematical objects whose properties can be formalized. The goal of this course is to introduce students to fundamental intellectual and mechanical tools required to rigorously analyze Languages and Programs and to expose them to recent developments in and applications of these techniques. We shall study operational and axiomatic semantics, two different ways of precisely capturing the meaning of programs by characterizing their executions. We will see how the lambda calculus can be used to distill the essence of computation into a few powerful constructs. We use that as a launching pad to study expressive type systems useful for analyzing the behavior of programs at compile-time and then, how to derive expressive program analyses using Abstract Interpretation. We will study all of the above in the context of LEAN, an interactive proof assistant that will help us precisely formalize and verify our intuitions about languages and their semantics. Students will be evaluated on the basis of 4-6 programming (proving) assignments, and a final exam.
Required Knowledge: Basic functional programming e.g. as taught in CSE 130 Haskell, OCaml, Scala, Rust, and discrete mathematics (logic, sets, relations).
Enforced Prerequisite: None
Recommended Preparation for Those Without Required Knowledge: UCSD CSE 130 Lectures / assignments
Link to Past Course: https://github.com/ucsd-
CSE 232B - Database System Implementation with Prof. Alan Deutsch
Course Description: The course explores the internal structure of database systems via a project that takes students from the specification of the grammar and semantics of the query language to implementing an evaluation engine for it, then building in optimizations. We use as vehicle the W3C Standard XML query language XQuery.
Required Knowledge: Students should have taken an introductory course on principles of database systems (CSE 132A or CSE 232, or equivalent). Also be very comfortable programming in Java (at least CSE8A and CSE 8B, or CSE11, or equivalent).
Enforced Prerequisite: Yes. Databases: CSE 132A or CSE232 or equivalent. Plus Java programming: CSE8A+CSE8B or CSE11 or equivalent
Recommended Preparation for Those Without Required Knowledge: N/A
Link to Past Course: https://cseweb.ucsd.edu/classes/sp16/cse232B-a/
CSE 234 - Data Systems for Machine Learning with Prof. Hao Zhang.
Course Description: This is a research-based course on machine learning systems. Such systems power modern AI applications on large and complex datasets, including enterprise analytics, recommendation systems, chatgpt, agentic systems, and many other GenAI applications. Students will learn many up-to-date topics and developments in machine learning and systems. This is a lecture-driven course with learning evaluation based on quizzes, final exams, and required readings. This course is aimed primarily at MS students interested in the state of the art of machine learning systems, as well as PhD students interested in research in this space.
Required Knowledge: A course on ML algorithms is absolutely necessary. A course on operating systems or distributed systems, or networking is also necessary. These courses could have been taken at UCSD or elsewhere.
Enforced Prerequisite: No specific course numbers enforced. A mainstream ML algorithms course is necessary (e.g., CSE 150 or 250B). Either a mainstream DB system internals course (CSE 132C or 232A) or a mainstream OS course (e.g., CSE 120 or 220) is also necessary. Alternatively, DSC 102 suffices as a prerequisite on both counts. Another alternative is substantial prior industrial/real-world experience with scalable ML/AI engineering, subject to the consent of the instructor.
Recommended Preparation for Those Without Required Knowledge: Read these 4 recommended textbooks for background/foundations on the respective component areas: "Machine Learning" (McGraw Hill), "Deep Learning" (MIT Press), "Operating Systems: Three Easy Pieces". Familarity with ML frameworks like PyTorch or TensorFlow. Proficiency in Python programming. Knowledge of deep learning and deep learning frameworks such as Tensor, PyTorch, HuggingFace.
Link to Past Course:
https://cseweb.ucsd.edu/classes/wi23/cse234-a/
https://hao-ai-lab.github.io/
https://hao-ai-lab.github.io/
CSE 237A- Intro to Embedded Computing with Prof. Tajana Rosing
Description: The goal of this course is to develop a comprehensive understanding of the technologies behind the embedded systems, particularly, those using computing elements (CPUs, GPUs, DSPs, FPGAs, etc.). The students develop an appreciation of the technology capabilities and limitations of the hardware, software components for building embedded systems, and methods to evaluate design tradeoffs.
Required Knowledge: The course does not have any official graduate course as a prerequisite. However, it assumes basic understanding of computer architecture (memory, cpu/processor, ISA, computer organization), programming (C/C++ preferred), operating systems (Linux), algorithms (e.g. common graph algorithms).
Enforced Prerequisite: None.
Recommended Preparation for Those Without Required Knowledge: Acquire basic understanding of digital hardware (electrical components, storage elements), computer architecture (memory, cpu/processor, ISA, computer organization), programming (C/C++ preferred), algorithms (e.g. common graph algorithms) using online materials and textbooks that are recommended on the class website
Link to Past Course: https://cseweb.ucsd.edu/classes/wi22/cse237A-a/index.html
CSE 239A - Topics/Seminar in Database with Prof. Alin Deutsch
Course Description: We will attend presentations and ensuing discussions of database research talks by internal and external speakers.
Required Knowledge: Introductory database course.
Enforced Prerequisite: None
Recommended Preparation for Those Without Required Knowledge:
Link to Past Course: N/A
CSE 240B - Parallel Computer Architecture with Prof. Jishen
Course Description: This course builds on basic knowledge of computer architecture and explores various architectural concepts around parallel machines. Topic covered include but not limited to: multiprocessor cache coherency, data consistency and data ordering models, synchronization mechanisms, heterogeneous systems, distributed shared memory computer systems, programming models, accelerators, data center architectures.
Required knowledge: Background in computer architecture. Some knowledge of C programming is helpful but not essential. 240A or equivalent
Recommended Preparation for Those Without Required Knowledge: See instructor
Enforced Prerequisite: No
Link to Past Course: N/A
CSE 251A - Principles of ML: Learning Algorithms with Prof. Taylor BergKirkpatrick
Course Description: (Formerly CSE 250B. Students cannot receive credit for both CSE 250B and CSE 251A) The goal of this class is to provide a broad introduction to machine-learning at the graduate level. The topics covered in this class include some topics in supervised learning, such as k-nearest neighbor classifiers, linear and logistic regression, decision trees, boosting and neural networks, and topics in unsupervised learning, such as k-means, singular value decompositions and hierarchical clustering. The topics covered in this class will be different from those covered in CSE 250A. In addition to the actual algorithms, we will be focussing on the principles behind the algorithms in this class.
Required Knowledge: Strong knowledge of linear algebra, vector calculus, probability, data structures, and algorithms. Strong programming experience.
Enforced Prerequisite: None.
Recommended Preparation for Those Without Required Knowledge: Online probability, linear algebra, and multivariate calculus courses (mainly, gradients -- integration less important).
Link to Past Course: https://cseweb.ucsd.edu/
CSE 251B - Deep Learning with Prof Garrison Cottrell
Course Description: Deep Learning is just another name for neural networks, the technology underlying current approaches to computer vision, large language models (e.g., ChatGPT), AlphaFold, AlphaZero, and Meta Movie Gen. This course covers the fundamentals of neural networks: perceptrons, linear and logistic regression, multilayer networks and back-propagation, deep convolutional neural networks, recurrent networks, transformers, and reinforcement learning. The course will involve four programming assignments roughly every two weeks, two midterms, and a final project.
Required Knowledge: Matrix algebra, vector calculus, probability and statistics. It is recommended that you take CSE 251A before CSE 251B, but this is not enforced. It is also recommended that you know Python.
Enforced Prerequisite: No
Recommended Preparation for Those Without Required Knowledge: Take Math 18, Math 20ABC and 183.
Link to Past Course: N/A
251C - Principles of ML: Machine Learning Theory with Prof. Sanjoy Dasgupta
Course Description: This course provides a broad overview of the theory of machine learning. The first half of the course will cover the theory of generalization in three standard models: statistical learning, inductive inference, and online learning. The second part of the course is devoted to contemporary challenges in learning theory, such as distribution shift and lifelong learning.
Required Knowledge: The course assumes a familiarity with the basics of machine learning (at the level of CSE 151A), probability and statistics (at the level of CSE 103), linear algebra (at the level of Math 18), and algorithms (at the level of CSE 101).
Enforced Prerequisite: None
Recommended Preparation for Those Without Required Knowledge: N/A
Link to Past Course: N/A
CSE 252A - Computer Vision I with Prof. Ben Ochoa
Course Description: This course provides a comprehensive introduction to computer vision providing broad coverage including low-level vision (image formation, photometry, color, image features), inferring 3D properties from images (shape-from-shading, stereo vision, motion interpretation) and object recognition.
Required Knowledge: Linear algebra, calculus, data structures, and probability and statistics. Programming assignments will be in Python.
Enforced Prerequisite: No
Recommended Preparation for Those Without Required Knowledge: Undergraduate courses and textbooks.
Link to Past Course: https://cseweb.ucsd.edu/classe
CSE 257 - Search and Optimization with Prof. Sicun Gao
Description: The course will cover various important algorithmic ideas for hard search and optimization problems. The goal is to develop in-depth understanding of the analytic, probabilistic, and algebraic perspectives on the universal challenge of the curse of dimensionality. Topics include numerical optimization, stochastic search, sequential decision making, and constraint programming.
Required Knowledge: Multivariate calculus, linear algebra, probability and statistics.
Enforced Prerequisite: None, but CSE 250A is recommended.
Recommended Preparation for Those Without Required Knowledge: N/A
Link to Past Course: http://scungao.github.io/ucsd-f21/index.html
CSE 272 - Advanced Image Synthesis with Prof. Tau-Mao Li
Course Description: This course discusses modern physically-based rendering techniques. Given a 3D scene description including the geometry, how surfaces and volumes reflect lights, the light source emission profiles, and the pose of a camera, physically-based rendering simulates the interactions between photons, surfaces, and volumes and produces an image. Physically-based rendering is central to computer graphics, and is becoming ever more crucial to domains outside of graphics such as computer vision, computational imaging, machine learning, and robotics, with applications in autonomous driving, training artificial intelligence agents, biomedical imaging, photography, and more. We will go through how we model the appearance of scenes (e.g., how do hair reflect lights? do objects change appearance when they become wet?), how we simulate light transport of surfaces and volumes efficiently, and how we invert the light transport process via differentiation. Throughout the course, we will build a renderer with the capability of rendering layered materials, volumes, and more with modern rendering algorithms. If you have taken CSE 168 and want more -- you should come! If not, make sure you are familiar with the content in the Required Knowledge.
Required Knowledge: Vector calculus and C++ programming. Ideally you should be familiar with how a path tracer works. If not, go through the Ray Tracing in a Weekend series (https://raytracing.github.io/
Enforced Prerequisite: Not required, but understanding most content of CSE 168 would be great.
Recommended Preparation for Those Without Required Knowledge: Familiarize yourself with all three books in "Ray Tracing in a Weekend" series https://raytracing.
Take a look at CSE 168 https://cseweb.
Link to Past Course: https://cseweb.ucsd.edu/~tzli/
CSE 280A - Algorithms and Computational Biology with Prof. Vineet Bafna
Course Description: This course describes algorithmic and statistical methods used to analyze population genetic data. On the population genetics sides, we will cover:
• Why DNA and Basic terminology
• Key population genetics principles
• Sources of variation
• Analyzing variation (Basic)
• Detecting Variation
• Analyzing variation (advanced)
On the algorithmic side, we will cover:
• Perfect Phylogeny
• Coalescent simulation algorithms
• (Integer) Linear programming
• Stochastic iteration
• Graph algorithms & Flow
• Markov Chain Monte Carlo
• Algorithms for selection
• Principle Component Analysis
• Statistical Hypothesis testing
• Random projection
Required Knowledge:
A course in algorithms. For example CSE202, CSE281 or equivalent and senior level undergraduate classes.
Enforced Prerequisite: No enforced prerequisite.
Recommended Preparation for Those Without Required Knowledge: Please read up on basic algorithms
Link to Past Course: N/A
CSE 282 - Bionic II: Seq & Struct Analys with Prof. Pavel Pevzner
Course Description: This class closely follows the textbook Phillip Compeau and Pavel Pevzner. Bioinformatics Algorithms: An Active Learning Approach. 3rd edition. Active Learning Publishers 2018.
Required Knowledge: The course assumes some prior background in biology, some algorithmic culture (CSE 101 course on algorithms), and some programming skills.
Enforced Prerequisite: None.
Recommended Preparation for Those Without Required Knowledge: If you don’t have the required knowledge listed above, you should take the online UCSD course on Algorithms on Coursera.
Link to Past Course: N/A
CSE 291 - Adv Studies in Classical OS with Prof. Joe Pasquale
Course Description: Current operating systems research is sometimes characterized as “polishing a round ball,” meaning that as most of the great ideas in operating systems were developed a long time ago, all we are doing today is refining them. This is somewhat unfair, but there is a grain of truth, and looking back at the development of those great ideas is a worthy and illuminating pursuit. Toward this end, we will study some of the most influential operating systems, where most of the modern-day abstractions, mechanisms, and policies were first developed. These systems are especially interesting because of their focus on justifying the design and implementation decisions they made -- Why a particular overall structuring of the kernel? Why a certain notion of process, or synchronization mechanism, or scheduling policy? How do these decisions interact? -- which are mostly either lost or taken for granted today. It is instructive to see what predictions they made, whether they came true or not, and how their thinking process might inform us as to how we might go about making such predictions today, based on changing user interests, application demands, and technological trends. Some of the systems we will look at include the early “classical” ones: MIT’s Multics, Dijkstra’s THE, Hansen’s RC 4000, Bell Labs’ UNIX, CMU’s Hydra, etc. Grading will be based on class participation and a final paper.
Required Knowledge: Operating systems
Enforced Prerequisite: CSE221, or equivalent
Recommended Preparation for Those Without Required Knowledge: N/A.
Link to Past Course: cseweb.ucsd.edu/classes/wi24/cse291-e
CSE 291 - Measuring Things with Prof. Geoff Voelker + Stefan Savage
Course Description: This course focuses on empirical research methods, with the overall goal of the course to prepare students for performing research that relies upon measurement. We will focus on empirical research in the systems, networking, and security areas. As a result, we will cover various forms of network measurement, system measurement, and Internet crawling, and we will cover a wide variety of methods for data collection, cleaning, and analysis. The course entails reading papers, engaging in discussions, and performing a group project on a topic in the area.
Required Knowledge: ompletion of undergraduate operating systems (similar to CSE 120), networking (similar to CSE 123/124), or security (similar to CSE 127) would be helpful, but not required.
Enforced Prerequisite: No.
Recommended Preparation for Those Without Required Knowledge: Review course material from undergraduate networking and operating systems courses.
Link to Past Course: N/A. (first time being taught)
CSE 291 - Quantum Crypto and Complexity with Prof. Qipeng Liu
Course Description: This is a graduate-level course on the theoretical side of quantum computing. In this course, we will together study tools that are used in establishing security in quantum cryptography and how these techniques help prove bounds in quantum complexity.
Some potential topics: quantum query lower bounds, lifting lemmas for quantum random oracle model, quantum time-space tradeoffs, various proof of quantumness protocols, quantum money and adversarial methods, lower bounds on quantum key agreement from approximate quantum Markov chain, quantum pseudorandomness. Depending on everyone's background, we may spend more or less time on quantum background.
Required Knowledge: Background on quantum computing is desired
Enforced Prerequisite: No.
Recommended Preparation for Those Without Required Knowledge:
The textbook `Quantum computation and quantum information' by Nielsen and Chuang.
Background knowledge can also be found in the following courses:
https://www.qip-liu.com/cse291
https://www.qip-liu.com/cse190
https://danielgrier.com/
https://danielgrier.com/
Link to Past Course: https://www.qip-liu.com/cse291
CSE 291 - AlphaZero and LLMs with Prof. Mohan Paturi
Course Description: We will study the theory and algorithmic aspects of AlphaZero and its connection to large language models
Required Knowledge: Linear algebra, Markov processes, neural networks, machine learning
Enforced Prerequisite: No
Recommended Preparation for Those Without Required Knowledge:
Link to Past Course: None
CSE 291 - Fair and transparent ML with Prof. Julian McAuley
Course Description: Devoted to fairness, bias, and transparency in machine learning. After taking this course, students will be able to understand the main sources of bias and unfairness in machine learning systems, and deploy strategies to mitigate these biases. Students will also understand the related notions of accountability and transparency in Machine Learning, allowing for the development of systems that are more trustworthy.
Required Knowledge: Students should be comfortable with programming (all example code will be in Python), and with basic optimization and linear algebra.
Enforced Prerequisite: No
Recommended Preparation for Those Without Required Knowledge: N/A
Link to Past Course: None.
CSE 291 - LLM security with Prof. Earlence Fernandes
Course Description: Research-heavy course on the security properties of LLMs and LLM-based Agents. We will study what security properties need to be enforced. Techniques for attacks and defenses will be explored. Course evaluation is based on a quarter-long research project in LLM security.
Required Knowledge: Machine Learning and computer security at the undergraduate level.
Enforced Prerequisite: No
Recommended Preparation for Those Without Required Knowledge:ake 127 and some undergraduate ML course.
Link to Past Course: None.
CSE 291 - Quantum Computing Systems with Prof. Yufei Ding
Course Description: This course delves into advanced aspects of quantum computer systems design. Initially, we'll lay a solid foundation in the mathematical principles underlying quantum computation and information. Following this, we'll delve into hardware and software aspects of quantum computers. Students will gain hands-on experience using software tools such as IBM's Qiskit and Xanadu's PennyLane, learning to craft quantum programs and run them on quantum hardware accessible via the cloud.
Required Knowledge: Here is the syllabus.
Enforced Prerequisite: No
Recommended Preparation for Those Without Required Knowledge: N/A
Link to Past Course: None.
CSE 291 - Virtualization and Cloud Comp with Prof. Yiying Zhang
Course Description: This cours
Required Knowledge: Undergraduate-level operating systems and computer architecture
Enforced Prerequisite: No
Recommended Preparation for Those Without Required Knowledge: Reading OS and computer architecture textbooks and go through previous offerings' slides
Link to Past Course:https://cseweb.ucsd.edu/~yiying/cse291-spring24/