Updated January 23rd, 2024
This page serves the purpose of helping graduate students understand each graduate course offered during the 2023-2024 academic year. Please use this page as a guideline to help decide what courses to take.
Spring 2024 Graduate Course Information
CSE 203A - Advanced Algorithms with Prof. Barna and Russell
Course Description: This class picks up where 202 leaves off, looking at more recent developments in algorithm design. Topics include approximation algorithms, randomized algorithms, linear and semidefinite relaxation, and new models of algorithm such as parallel algorithms, on-line algorithms, streaming algorithms, sub-linear algorithms and fine-grained complexity. It is intended for graduate students with a relatively strong background and interest in efficient algorithms.
Required Knowledge: CSE 202 or the equivalent.
Enforced Prerequisite: No.
Recommended Preparation for Those Without Required Knowledge: CSE 202 or the equivalent
Link to Past Course: https://cseweb.ucsd.edu/classes/wi13/cse203A-a/
CSE 209A - Top/Sem/Algrthms,Complxty&Logc with Prof. Daniel Grier
Course Description: Weekly seminars on topics in theoretical computer science. Students are expected to attend talks and write short reflections.
Required Knowledge: A general undergraduate background in theory will be assumed.
Enforced Prerequisite: No
Recommended Preparation for Those Without Required Knowledge: None
Link to Past Course: https://cse.ucsd.edu/research/theory-seminar
CSE 209B - Top/Seminar in Cryptography with Prof. Mihir Bellare
Course Description: The topic is Crypto and AI. We explore this connection, discussing different attacks, applications of cryptography as defense against attacks or enablers of AI applications, and social/ethical considerations. Requirements are presentation of a paper and participation in discussions.
Required Knowledge: Cryptography and security.
Enforced Prerequisite: YES, CSE207A or CSE207B or CSE227 or permission of instructor.
Recommended Preparation for Those Without Required Knowledge: https://www.youtube.com/playlist?list=PL-SStBoAJuw0vj8MgTFhY5y9wSFnjGbOB
Link to Past Course: None
CSE 217 - Human CenteredComputing/Health with Prof. Nadir Weibel
Course Description: The focus of HC4H is to learn how to use Human-Centered Design (HCD) to design and develop technology at the intersection of computer science and health. Students will learn regulations, ethical protocols, and methodologies to help them bridge technology and health. By the end of the class, students will have developed a design prototype and proposed solution to address a real-world problem.
This course is designed to develop an in-depth and comprehensive understanding of what it means to introduce and study technology across health and healthcare. Students will be exposed to a variety of real-world examples, gain a user-centered understanding from multiple points of view, and develop the skills needed to design solutions to solve real problems.
In the in-class part of the course, students will be engaging in dedicated discussion around design and engineering of novel solutions for current healthcare problems. These discussions will be catalyzed by in-depth online discussions and virtual visits with experts in a variety of healthcare domains such as emergency rooms physicians, surgeons, intensive care unit specialists, primary care clinicians, medical education experts, health measurement experts, bioethicists, and more.
The second part of the class will focus on a design group project that will capitalize on the visits and discussions with the healthcare experts and will aim to propose specific technological solutions and present them to the healthcare stakeholders. Students will be exposed to specific Human-Centered Design methods in class, and will be expected to deliver a web page describing their final solution,
Successful students in this class often follow up on their design projects with actual development of an HC4H project and its deployment within the healthcare setting in the following quarters.
If COVID regulation will allow us, students will be exposed to the health domain at large through presentations, in-person visits and discussions with experts in emergency rooms, trauma rooms, operating rooms, radiology clinics, sleep clinics, outpatient medical offices, the Simulation Training Center (STC), the Professional Development Center (PDC), the Center for the Future of Surgery (CFS), the Exercise and Physical Activity Resource Center (EPARC), and the West Health Institute.
If COVID won’t allow us to organize in in-person visits, we will engage with our experts through remote panels and discussions, and “remote visits” to the same facilities.
Required Knowledge: Technology-centered mindset, experience and/or interest in health or healthcare, experience and/or interest in design of new health technology.
Enforced Prerequisite: None.
Recommended Preparation for Those Without Required Knowledge: None.
Link to Past Course: None.
CSE 218 - ADV TOPIC/SOFTWARE ENGINEERING WITH PROF. BILL GRISWOLD
Description: Programmers and software designers/architects are often concerned about the modularity of their systems, because effective modularity reaps a host of benefits for those working on the system, including ease of construction, ease of change, and ease of testing, to name just a few. Other possible benefits are reuse (e.g., in software product lines) and online adaptability.
This course will be an open exploration of modularity - methods, tools, and benefits. In the process, we will confront many challenges, conundrums, and open questions regarding modularity.
In this class, we will explore defensive design and the tools that can help a designer redesign a software system after it has already been implemented. Defensive design techniques that we will explore include information hiding, layering, and object-oriented design. In the area of tools, we will be looking at a variety of pattern matching, transformation, and visualization tools.
Each week there will be assigned readings for in-class discussion, followed by a lab session. Each week, you must engage the ideas in the Thursday discussion by doing a "micro-project" on a common code base used by the whole class: write a little code, sketch some diagrams or models, restructure some existing code or the like.
Required Knowledge: Students must satisfy one of:
1. Be a CSE graduate student. It's also recommended to have either:
(a) programming experience through CSE 100 Advanced Data Structures (or equivalent), or
(b) substantial software development experience, or
(c) CSE 210.
or
2. Have graduate status and have either:
(a) programming experience up through CSE 100 Advanced Data Structures (or equivalent), or
(b) substantial software development experience, or
(c) CSE 210.
Equivalents and experience are approved directly by the instructor.
Enforced Prerequisite: None, but see above.
Recommended Preparation for Those Without Required Knowledge: See above.
Link to Past Course: https://sites.google.com/ucsd.edu/cse-218-spring-2023/home
CSE 224 - GRADUATE NETWORKED SYSTEMS WITH PROF. SNOEREN
Description: This course will provide a graduate-level understanding of networked systems design and implementation. Topics include techniques for building distributed applications, basics of networking, sockets programming, Remote Procedure Calls, managing scalability, networked storage, distributed consensus and state management, fault tolerance, load balancing, datacenter design, security, and the energy/carbon impacts of cloud computing.
Required Knowledge: N/A
Enforced Prerequisite: None.
Recommended Preparation for Those Without Required Knowledge: N/A
Link to Past Course: https://canvas.ucsd.edu/courses/32789
CSE 229C - Tops/Seminar/Computer Security with Prof. Earlence Fernandes
Course Description: The security research seminar discusses the latest topics in computer security. Course is intended for grad students actively engaged in research with security faculty.
Required Knowledge: grad student in the CSE program actively working with a professor from the security group.
Enforced Prerequisite: PhD or MS student actively working with a security faculty member
Recommended Preparation for Those Without Required Knowledge: N/A
Link to Past Course: N/A
CSE 231 - Compiler Construction with Prof. Ranjit Jhala
Course Description: The course will focus on runtime systems for programming languages, and will be project-focused. Students will work individually and in groups to construct and measure pragmatic approaches to compiler construction and program optimization. Topics may vary depending on the interests of the class and trajectory of projects. Likely topics are just-in-time (JIT) compilation, memory management, and compiling for the Web (e.g. WASM, JavaScript), along with standard ahead-of-time optimizations.
Required Knowledge: Preparation similar to CSE 131 (one offering: https://ucsd-cse131-f19.
Enforced Prerequisite: None.
Recommended Preparation for Those Without Required Knowledge: The materials for CSE 131 are available online; you can complete the first few assignments at your own pace as extra preparation (https://ucsd-cse131-f19.
Link to Past Course: N/A
CSE 233 - DATABASE THEORY WITH PROF. VICTOR VIANU
Course Description: This course presents an overview of the theory of databases. Topics include the theory of query languages, dependency theory, deductive databases, incomplete information, complex objects, semistructured data, and other advanced topics and research issues as time allows. Connections are made to relevant areas in logic and complexity theory. Evaluation is based on homework sets and a take-home final.
Required Knowledge: Students should have had at least one basic database systems course including SQL. The course is theoretical, and mathematical maturity is highly desirable. Basic knowledge of computability and complexity theory is assumed.
Enforced Prerequisite: Yes. CSE 132A (or equivalent) and CSE 200 (or equivalent). Instructor will consider waivers on an individual basis.
Recommended Preparation for Those Without Required Knowledge: An undergrad database text, emphasizing SQL. Sipser's text on Introduction to the Theory of Computation.
Link to Past Course: N/A
CSE 239A - Topics/Seminar in Databases with Prof. Victor Vianu
Course Description: Weekly seminar on current research topics in databases (1 unit)
Required Knowledge: CSE132A and CSE 232A (or similar)
Enforced Prerequisite: No
Recommended Preparation for Those Without Required Knowledge: N/A
Link to Past Course: N/A
CSE 237D - Design Automation&Prototyping with Prof. Ryan Kastner
Course Description: This is an embedded systems project course. You will work on teams on either your own project (with instructor approval) or ongoing projects. Examples from previous years include remote sensing, robotics, 3D scanning, wireless communication, and embedded vision. You can browse examples from previous years for more detailed information. The class time discussions focus on skills for project development and management. We discuss how to give presentations, write technical reports, present elevator pitches, effectively manage teammates, entrepreneurship, etc.. The grading is primarily based on your project with various tasks and milestones spread across the quarter that are directly related to developing your project. Each project will have multiple presentations over the quarter. The class ends with a final report and final video presentations.
Required Knowledge: A general understanding of some aspects of embedded systems is helpful but not required. The desire to work hard to design, develop, and deploy an embedded system over a short amount of time is a necessity.
Enforced Prerequisite: No.
Recommended Preparation for Those Without Required Knowledge: Contact Professor Kastner as early as possible to get a better understanding for what is expected and what types of projects will be offered for the next iteration of the class (they vary substantially year to year). This is particularly important if you want to propose your own project.
Link to Past Course: https://sites.google.com/ucsd.edu/emsyslunch/
CSE 240A - Princ/Computer Architecture with Prof. Bryan Chin
Course Description: This course provides a thorough and fundamental treatment of the art of computer architecture. Topics include concepts of von Neumann architectures, methods of evaluating CPU performance, instruction-set design and examples, pipelining, branch prediction, cache and memory hierarchy, main memory organization and memory controller, virtual memory, multicore processors, cache coherence and memory consistency, and GPU architecture.
Required Knowledge: Basics of Instruction Set Architecture, cache design, and the design of single-cycle, multi-cycle, and pipeline processors.
Enforced Prerequisite: No.
Recommended Preparation for Those Without Required Knowledge: If you do not have the appropriate background, you should either 1) not take this class or 2) spend significant time reviewing the textbook and lecture notes from CSE141.
Link to Past Course: https://cseweb.ucsd.edu/classes/fa17/cse240A-a/
CSE 252D - Advanced Computer Vision with Prof. Manmohan Chandraker
Course Description: This course covers advanced concepts in computer vision to explore recent developments. Example topics include 3D reconstruction, object detection, semantic segmentation, domain adaptation, neural rendering, diffusion models and vision-language. The class will be composed of lectures, presentations by students and a project.
Required Knowledge: Previous project experience in computer vision and machine learning is required. Programming experience in Python is required.
Enforced Prerequisite: Yes. All students wishing to enroll must add themselves to the waitlist and complete this Google form. Students who have completed two of the following courses or equivalents must state so on the above form: 252A, 252B, 250A, 251A, 251B, 251C, 272.
Recommended Preparation for Those Without Required Knowledge: For preparation, students may go through CSE 252A and Stanford CS 231n lecture slides and assignments.
Link to Past Course: https://cseweb.ucsd.edu/~
CSE 256 - Statistical Natural Lang Proc with Prof. Ndapandula Nakashole
Course Description: Natural language processing (NLP) is a field of AI which aims to equip computers with the ability to intelligently process natural language. This course will explore deep learning techniques for the automatic analysis of natural language data. Topics covered include: large language models, text classification, and question answering, and machine translation.
Required Knowledge: Basic Machine Learning.
Enforced Prerequisite: None
Recommended Preparation for Those Without Required Knowledge: N/A
Link to Past Course: On Canvas
CSE Seminr/Artificial Intelligence with Prof. Kamalika
Course Description: This is a seminar course where we will have a series of lectures/seminars on a bunch of topics in AI given by researchers in the field.
Required Knowledge: None
Enforced Prerequisite: NONE
Recommended Preparation for Those Without Required Knowledge: N/A
Link to Past Course: N/A
CSE 260 - PARALLEL COMPUTATION WITH PROF. BRYAN CHIN
Course Description: Exploration of programming for parallel computing systems such as shared memory systems, message passing systems and highly parallel accelerators (like GPUs). The course will cover the principles of parallel programming by exploring algorithm design and how those design choices are affected by the machine architecture.
Required Knowledge: This is a graduate-level course. Students should have strong programming ability in C (and familiarity with C++).
Enforced Prerequisite: None, but familiarity with computer architecture is required.
Recommended Preparation for Those Without Required Knowledge: Class in programming which requires the use of C or strong programming skills in similar languages. Review computer architecture - especially memory system design (e.g. cache hierarchy). Contact the instructor for more help or advice.
Link to Past Course: N/A
CSE 276B - Human Robot Interaction with Prof. Laurel Riek
Course Description: Robots are entering our world - in homes, hospitals, roadways, schools, and workplaces. How do we make them functional, useful, and acceptable? This course will explore key computational, scientific, and design concepts in human-robot interaction (HRI). We will review foundational and recent papers in the field, and engage in projects with physical robots.
Required Knowledge: Students should have a deep interest in human-focused research questions and human-centered technology development. Students should be comfortable reading and discussing scientific papers. Additionally, this class requires familiarity with programming, data structures, and basic software engineering (e.g., CSE 8A, CSE 100, CSE 110). Students should be comfortable decomposing a complex problem, selecting suitable algorithms, and implementing them. Prior exposure to robotics is helpful, but not required. Experience using unix-like operating systems is also a plus.
Enforced Prerequisite: None
Recommended Preparation for Those Without Required Knowledge: N/A
Link to Past Course: N/A
CSE 276F - Machine Learning for Robotics with Prof. Hao Su
Course Description: The first part of the course will cover the basic concepts and classical methods of planning and control in the traditional robotics pipeline. The second part of course will introduce deep reinforcement learning and learning-based robotics methods. The course is project-based and we will run course projects in an indoor environment simulator.
Required Knowledge: Machine Learning, Deep Learning, Computer Vision, Geometry, and Physics
Enforced Prerequisite: No
Recommended Preparation for Those Without Required Knowledge: Go through CSE291-I in Winter 2021 (taught by Prof. Su).
Link to past course: N/A
CSE 283 - Genomics/proteomics/netwk biol with Prof. Vineet Bafna
Course Description: The goal of this course is to (a) introduce you to the data modalities common in OMICS (Genomics, proteomics, ...) data analysis, and (b) to understand the algorithms used to analyze these data. There are two parts to the course. In the first part, we learn how to preprocess OMICS data (mainly next-gen sequencing and mass spectrometry) to transform it into an abstract representation. In the second part, we look at algorithms that are used to query these abstract representations without worrying about the underlying biology. We focus on foundational work that will allow you to understand new tools that are continually being developed.
Required Knowledge: The student should be comfortable with algorithms (CSE202/CSE282/CSE101) and basic statsitics.
Enforced Prerequisite: No enforced prerequisite.
Recommended Preparation for Those Without Required Knowledge: N/A
Link to Past Course: N/A
CSE 291 - Top/Computer Sci & Engineering with Prof. Tzumao Li
Course Description: In this course, we will study an emerging field called “differentiable programming”, which is an interdisciplinary field that combines machine learning, programming languages, numerical computing, signal processing, robotics, computer vision and computer graphics. Recent work on deep learning has revealed the power of derivative-based optimization. Instead of computing gradients of typical feedforward deep models, differentiable programming attempts to differentiate general “programs” and use them as our machine learning models. This leads to several challenges:
- How do we design machine learning models that are composed of general programs that leverage domain knowledge, instead of the typical neural network layers?
- How do we correctly and efficiently derive the derivatives of general numerical programs that can have control flows, discontinuities, and higher-order functions?
- How do we define/derive the derivatives of programs that have certain semantic meanings, such as sorting, satisfiability solvers, root solvers, differential equation solvers, or 3D rendering?
- Just like convolution exploits the translational invariance, how do we design models that have certain properties e.g., rotational invariance or permutation invariance?
- How do we build differentiable programming languages and systems, so that we can guarantee the correctness for rapid exploration, and efficiently compile them to modern hardware architectures?
The first half of the course will be focusing on building a C-like SIMD-based differentiable programming language. You will modify a compiler of a domain-specific language and add support for automatic differentiation. The second half of the course and the final project will be focusing on applying the programming language for different kinds of tasks, including differentiable simulation, image and signal processing, 3D rendering, etc.
Note that this course is different from, though related to, the seminar course CSE 290 on differentiable programming (https://docs.google.com/document/d/1Xh3Em10_YhbBnbf8e4mHEnUkoDu5BF5KnqBWAZ1OLGM/edit).
Required Knowledge: Python and machine learning. Ideally, you should have basic compiler and parallel programming knowledge, but we do not assume you know.
Enforced Prerequisite: No
Recommended Preparation for Those Without Required Knowledge: Read and fully understand this paper:
"Differentiable Programming for Image Processing and Deep Learning in Halide" https://cseweb.ucsd.edu/~tzli/gradient_halide/
Link to Past Course: N/A
CSE 291 - Physics Simulation Prof. Albert Chern
Course Description: The course covers the mathematical and computational basis for various physics simulation tasks, including rigid body dynamics, solid mechanics and fluid dynamics. A main focus is constitutive modeling, that is, the dynamics are derived from a few universal principles of classical mechanics, such as dimensional analysis, Hamiltonian principle, maximal dissipation principle, Noether’s theorem, etc. These principles are the foundation to computational methods that can produce structure-preserving and realistic simulations. The course include a few projects where students are expected to derive the physical equations as well as demonstrating numerical computation results.
Required Knowledge: Linear algebra, multivariable calculus, a computational tool (supporting sparse linear algebra library) with visualization (e.g. Houdini with scipy, matlab, C++ with OpenGL, Javascript with webGL, etc).
Enforced Prerequisite: None
Recommended Preparation for Those Without Required Knowledge:
- Learn Houdini from materials and tutorial links in https://cseweb.ucsd.edu/~alchern/teaching/houdini/
- Exterior Calculus in Graphics https://stephaniewang.page/files/ECIG_notes_v1.00.pdf
Link to Past Course: N/A
CSE 291 - Top/Computer Sci & Engineering with Prof. Yiying Zhang
Course Description: This course discusses various virtualization and cloud computing techniques, ranging from CPU, memory, and I/O virtualization to containers and serverless computing.
CSE 291 - Topics on Numerical Methods for Engineering with Prof. CK Cheng
Course Description: The class covers topics on numerical methods for
engineering. Students are encouraged to carry out state-of-the-art projects with
team members. We intend to cover two parts according to the progress of the
class. For part I, we talk about the dynamic system to model the system in high
dimensional space with temporal behavior. The techniques of matrix solvers,
integration methods, sensitivity, and Koopman operators will be discussed. For
part II, we study the optimization methods problems. The algorithms of
gradient/subgradient descent, approximation, and proximal approaches will be
reviewed.
Required Knowledge:
Enforced Prerequisite: No
Recommended Preparation for Those Without Required Knowledge: Linear Algebra,
Convex Optimization
Link to Past Course: https://cseweb.ucsd.edu/classes/sp20/cse291-c/
CSE 291 - Top/Computer Sci & Engineering with Prof. Sorin Lerner
Course Description: This research seminar will explore topics at the intersection of Large-Language Models, AI-generated Programs, and Human-Computer Interaction. Students will read and present papers. The class will be discussion based. There will be a significant research project, where students will get a chance to pick from a predefined set of projects, or in some cases propose their own. It is ok to have no prior research experience. The project implementation varies depending on the project topic, including but not limited to building software, designing prototypes, and empirical investigations. MS students wanting to explore research opportunities are welcome to sign up.
Required Knowledge: Undergraduate degree in a computing field
Enforced Prerequisite: No
Recommended Preparation for Those Without Required Knowledge: N/A
Link to Past Course: None
CSE 291: Advanced Data-Driven Text Mining with Prof. Jingbo Shang
Course Description: This course mainly focuses on introducing current methods and models that are useful in analyzing and mining real-world text data. It will put emphasis on unsupervised, weakly supervised, and distantly supervised methods for text mining problems, including information retrieval, open-domain information extraction, text summarization (both extractive and generative), and knowledge graph construction. Bootstrapping, comparative analysis, learning from seed words and existing knowledge bases will be the key methodologies.
Required Knowledge: Knowledge about Machine Learning and Data Mining; Comfortable coding using Python, C/C++, or Java; Math and Stat skills.
Enforced Prerequisite: No
Recommended Preparation for Those Without Required Knowledge: N/A
Link to Past Course: https://shangjingbo1226.github.io/teaching/2023-spring-CSE291-TM
CSE 291 - Blockchain Security with Prof. Savage, Stefan + Stefan, Deian
Course Title: Blockchain Security
Course Description: This course focuses on the security of blockchain technologies. Students will be introduced to many parts of the blockchain infrastructure — from the design and implementation of consensus protocols, to the programming layers above them, and the DeFi applications handling billions of dollars — and explore the different ways these systems can—and have—failed under adversarial settings. We will study attacks against real systems, revisit the security and assumptions of widely deployed protocols and applications, and analyze the impact of attacks, scams, and thefts.
Required Knowledge: Some background in security (CSE 127/CSE 227 required), cryptography (CSE 107/CSE 207B optional), and distributed systems (CSE 223B optional).
Enforced Prerequisite: No
Recommended Preparation for Those Without Required Knowledge: N/A
Link to Past Course: N/A