Updated January 10, 2023
This page serves the purpose to help graduate students understand each graduate course offered during the 2022-2023 academic year. Please use this page as a guideline to help decide what courses to take.
Winter 2023 Graduate Course Information
CSE 202 - Algorithm Design and Analysis with Prof. Russell Impagliazzo
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 Algorithms with Prof. CK Cheng
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: Study the Appendix (Mathematical background, Numerical linear algebra) of the textbook before the quarter starts.
Link to Past Course: https://cseweb.ucsd.edu/classes/wi20/cse203B-a/
CSE 208 - Advanced Cryptography with Prof. Daniele Micciancio
Description: This is an advanced, graduate-level course in cryptography. Building on what you have already learned in your introductory crypto course, CSE208 explores more complex primitives and protocols, which typically combine cryptography with some form of general purpose computation, like zero knowledge proof systems, functional encryption, forms of verifiable computation, secure two-party and multi-party computation, and fully homomorphic encryption.
This quarter, the course will focus on **Fully Homomorphic Encryption (FHE)**, i.e., encryption schemes that allow the evaluation of arbitrary functions on encrypted data. The course will cover the basics of lattice cryptography, and all the major FHE schemes and techniques.
Required Knowledge: The course assumes a solid background in cryptography, as provided, for example, by the introductory graduate cryptography course CSE207. The most important course prerequisite is a working understanding of the definitional/theoretical security framework of modern cryptography, i.e., how to rigorously formulate security requirements, and analyze candidate cryptographic constructions with respect to them. Familiarity with a number of common cryptographic primitives, like public key encryption, digital signatures, hash functions and commitment schemes is also assumed.
The course also assumes general mathematical maturity, and some basic programming skills to use lattice cryptographic libraries implementing FHE schemes.
Enforced Prerequisite: None, but you should have taken CSE207 or an equivalent course. Lattice algorithms course (CSE206A) is also useful but not required. Undergraduate level mathematics and programming background is assumed.
Recommended Preparation for Those Without Required Knowledge: If you have taken an undergraduate level cryptography course (CSE107) you may still do fine with some extra reading to fill the gaps, e.g., Katz and Lindell, "Introduction to Modern Cryptography". If you have never taken any cryptography course, you should take CSE107 or CSE207 before enrolling in this course.
Link to Past Course: https://cseweb.ucsd.edu/classes/fa20/cse208-a/
CSE 210 - Principles of Software Engineering with Prof. Michael Coblenz
Description: Software engineering is about creating and maintaining large software projects over time. Effective software engineering requires a combination of social and technical skills. In this course, students will learn how to be successful software engineers who work together to create high-quality software products. In the context of a team software project, we will study software processes, requirements analysis, risk management, architectural design, and testing methods.
Required Knowledge: An undergraduate degree in computer science (or equivalent) is a prerequisite, but an undergraduate software engineering class is not.
Enforced Prerequisite: None.
Recommended Preparation for Those Without Required Knowledge: CSE 100 and one of CSE 131 or CSE 110.
Link to Past Course: N/A
CSE 221 - Operating Systems with Prof. Geoff Voelker
Description: The purpose of this course is to learn about a wide variety of operating system design and implementation principles and techniques, examining their usage in the context of both important historical systems as well as modern systems. In addition, students learn how to read research papers in a critical manner, how to articulate an understanding of and insights into advanced material described in research papers, and how to synthesize research themes and topics across multiple systems. The topics covered include operating system structures, synchronization, virtual memory, distribution, interaction of architecture and systems, scheduling, communication, file systems, multicore scalability, and virtual machine monitors.
Required Knowledge: Undergraduate operating systems.
Enforced Prerequisite: Yes. CSE 120 or equivalent undergraduate operating systems course.
Recommended Preparation for Those Without Required Knowledge: CSE 120 or equivalent undergraduate operating systems course
Link to Past Course: https://cseweb.ucsd.edu/classes/wi22/cse221-a/
CSE 224 - Graduate Networked Systems with Prof. George Porter
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 232B - Database System Implementation with Prof. Alin Deutsch
Description: The course explores the internal structure of database systems via a project that takes students from 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 project experience with SQL databases). They should also be very comfortable programming in Java.
Enforced Prerequisite: Yes. CSE 132A or CSE 232 or equivalent. Java programming, introductory database course, or equivalent experience with SQL databases is required.
Recommended Preparation for Those Without Required Knowledge: Online Java programming course and intro db course or db project.
Link to Past Course: https://cseweb.ucsd.edu/classes/sp16/cse232B-a/
CSE 234 - Data Systems for ML with Prof. Arun Kumar
Description: This is a research-based course on data systems for machine learning, at the intersection of the fields of ML/AI, data management, and systems. Such systems power modern data science applications on large and complex datasets, including enterprise analytics, recommendation systems, and social media analytics. Students will learn about the landscape and evolution of such systems, the latest research, and some major open questions. This is a lecture-driven course with learning evaluation based on written quizzes and exams, as well as reviewing cutting-edge research papers. This course is aimed primarily at MS students interested in the state of the art of systems for scalable data science and ML engineering, as well as PhD students interested in research in this space.
Required Knowledge: A course on ML algorithms is absolutely necessary. A course on either database systems or operating systems is also necessary. These courses could have been taken at UCSD or elsewhere.
Enforced Prerequisite: Yes. 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. DSC 102 can satisfy all prerequisite requirements.
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), "Database Management Systems" (McGraw Hill), and "Operating Systems: Three Easy Pieces".
Link to Past Course: https://cseweb.ucsd.edu/classes/fa21/cse234-a
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 240A - Princ/Computer Architecture with Prof. Pat Pannuto
Description: This course will cover fundamental concepts in computer architecture. Topics include instruction set architecture, pipelining, pipeline hazards, bypassing, dynamic scheduling, branch prediction, superscalar issue, memory-hierarchy design, advanced cache architectures, and multiprocessor architecture issues.
Required Knowledge: An undergrad computer architecture course
Enforced Prerequisite: None, but there will be a pretest distributed on the first day of class.
Recommended Preparation for Those Without Required Knowledge: CSE 141, or Hennessy&Patterson: Computer organization and design: the hardware/software interface, or Gonzalez et al: Processor Microarchitecture: An Implementation Perspective
Link to Past Course: https://cseweb.ucsd.edu/classes/fa19/cse240A-a/
CSE 240B - Parallel Computer Architecture with Prof. Jishen Zhao
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.
Enforced Prerequisite: None.
Recommended Preparation for Those Without Required Knowledge: See instructor.
Link to Past Course: https://sites.google.com/eng.ucsd.edu/cse240bspring2018/home
CSE 241A - VLSI Integr Cmputing Circuitry with Prof. Mingu Kang
Description: VLSI implementation methodology across block, circuit, and layout levels of abstraction. Circuit building blocks including embedded memory and clock distribution. Computer-aided design (synthesis, place-and-route, verification) and performance analyses, and small-group block implementation projects spanning RTL to tape-out using leading-edge EDA tools.
Required Knowledge: Verilog coding skill
Enforced Prerequisite: Yes. ECE 260A or equivalent.
Recommended Preparation for Those Without Required Knowledge: ECE 165
Link to Past Course: https://canvas.ucsd.edu/courses/34907
CSE 251B – Deep Learning with Prof. Garrison Cottrell
Description: CSE 251B is a graduate course intended to provide a foundation in Deep Learning. The course covers the fundamentals of neural networks: perceptrons, linear, logistic and softmax 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. It is considered one of the hardest courses in the department, so taking another heavy-load course is not recommended.
Required Knowledge: Students should be comfortable with programming (coding will be in Python, NumPy, and PyTorch), linear algebra, vector calculus (partial derivatives), probability and statistics.
Enforced Prerequisite: None, but CSE 251A is recommended.
Recommended Preparation for Those Without Required Knowledge: Taking CSE 251A is recommended, review elementary probability and statistics, partial derivatives, linear algebra, and do a Python tutorial.
Link to Past Course: https://piazza.com/class/kw16tuxdczt21x
CSE 252B - Computer Vision II with Prof. Ben Ochoa
Description: This course covers topics in imaging geometry using techniques from computer vision, photogrammetry, and projective geometry. These topics include methods for projecting a 3D scene to a 2D image, reconstructing a 3D scene from 2D images, and camera parameter estimation. Upon completion of this course, students will have an understanding of single and multiple view geometry, and the algorithms used in practice.
Required Knowledge: Linear algebra, calculus, and probability and statistics. Python or other programming experience.
Enforced Prerequisite: None. CSE 252A is not a prerequisite to CSE 252B.
Recommended Preparation for Those Without Required Knowledge: Undergraduate courses and textbooks.
Link to Past Course: https://cseweb.ucsd.edu/classes/wi22/cse252B-a/
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. Tzu-Mao Li
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 advanced materials and volumes. If you have taken CSE 168 and want more -- you should come! If not, we will try to cover the basics at the beginning, but you should also go through some of the recommended materials.
Required Knowledge: Undergraduate-level calculus. C++ programming. Ray tracing.
Enforced Prerequisite: None, but understanding most content of CSE 168 would be great.
Recommended Preparation for Those Without Required Knowledge: Take a look at CSE 168 https://cseweb.ucsd.edu/~tzli/cse168/. It might be useful to go through the "Ray Tracing in a Weekend" series https://raytracing.github.io/
Link to Past Course: https://cseweb.ucsd.edu/~tzli/cse272/
CSE 274 - Discrete Differential Geometry with Prof. Albert Chern
Description: The course provides an introduction to discrete differential geometry and its applications in geometry modeling and analysis. The contents include the smooth and discrete theory of curves, surfaces, exterior calculus, the Hodge theory, and the vector bundle theory. The theories are explained alongside with applications including numerical methods for differential equations on manifolds, surface texturing, shape analysis and vector field designs. The course also covers the basics of the graphics software Houdini FX.
Required Knowledge: Linear algebra, multivariable calculus.
Enforced Prerequisite: None.
Recommended Preparation for Those Without Required Knowledge: Similar class at CMU with youtube playlist https://www.youtube.com/playlist?list=PL9_jI1bdZmz0hIrNCMQW1YmZysAiIYSSS
Link to Past Course: https://cseweb.ucsd.edu/~alchern/teaching/cse274_wi22/
CSE 282 - Bioinf II:Intro to Bioinf Algr with Prof. Pavel Pevzner
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 284 - Personal Genomics/Bioinformatics with Prof. Melissa Gymrek
Description: Genome-sequencing is quickly becoming a commodity, and millions of people have already analyzed their own genomes through direct-to-consumer companies. This course provides an introduction to current bioinformatics techniques for analyzing and interpreting human genomes. We will learn how to interpret a single genome in the context of an entire population. Topics covered include an introduction to human medical and population genetics, human ancestry, finding and interpreting disease-causing variants, genome-wide association studies, genetic risk prediction, analyzing next generation sequencing data, and how to scale current genomics techniques to analyze hundreds of thousands of genomes. We will also discuss the social impact of the personal genomics revolution. This course is designed for students with a quantitative background and some programming experience who are interested in human genetics and bioinformatics research.
Required Knowledge: Basic UNIX skills, Python programming experience, interest in human genetics
Enforced Prerequisite: None.
Recommended Preparation for Those Without Required Knowledge: An introductory Python course.
Link to Past Course: https://canvas.ucsd.edu/courses/12840; http://gymreklab.com/teaching/personal_genomics/personal_genomics_2017.html
CSE 291 (A00) - Machine Learning for Robotics with Prof. Hao Su
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: None.
Recommended Preparation for Those Without Required Knowledge: Linear algebra, calculus, Newtonian physics
Link to Past Course: https://haosulab.github.io/ml-for-robotics/SP21/index.html
CSE 291 (B00) - Program Synthesis with Prof. Nadia Polikarpova
Description: This course is a comprehensive introduction to program synthesis: an emerging area that sits at the intersection of programming systems, formal methods, and artificial intelligence. The goal of program synthesis is to generate programs automatically from high-level, possibly incomplete descriptions. The course will cover a wide variety of recent synthesis techniques that differ in the kind of program description they start with (from input-output examples to formal correctness specifications), the search strategy they employ (enumerative, stochastic, or symbolic search), and the kind of information they use to guide the search (counter-example guided synthesis, type-driven synthesis, synthesis with machine learning). The course will involve a project, as well as reading and reviewing research papers.
Required Knowledge: Programming languages (CSE 230 or equivalent)
Enforced Prerequisite: None, but CSE 230 is recommended.
Recommended Preparation for Those Without Required Knowledge: N/A
Link to Past Course: https://github.com/nadia-polikarpova/cse291-program-synthesis/wiki
CSE 291 (D00) - Information Manipulation: Trustworthiness of Information in Cyberspace with Prof. Stefan Savage
Description: This interdisciplinary course will explore the impacts of propaganda, censorship, and misinformation on the spread and reliability of information online. We will study the strategies of both state and non-state actors who manipulate online information, the implications of the manipulation, and the policies proposed to address it. Students are expected to have a background in basic programming and statistics so that they can work on projects that analyze social media data.
Required Knowledge: N/A
Enforced Prerequisite: None.
Recommended Preparation for Those Without Required Knowledge: N/A
Link to Past Course: N/A
CSE 291 (E00) - Internet Data Science for Cybersecurity with Prof. KC Claffy
Description: This course will present a framing for conversations about the role of Internet measurement and data science in a range of public policy issues, with an emphasis on cybersecurity. We will focus on the Internet as a data transport service, and vulnerabilities specific to interdomain routing (BGP), naming (Domain Name System), and certificate management. Security challenges at these layers get less attention than attacks on end-points (malware, ransomware, etc.), or design features in applications that lead to risky user experiences. But the challenges at this layer are foundational: they affect the reliable operation of every application that operates over the Internet. We will review recent research advances in understanding the security of each of these systems, what data was used, and opportunities to overcome long-standing barriers to security advances. The course will consist of lectures, paper discussions, individual assignments, and a final group data science project.
Required Knowledge: Networking.
Enforced Prerequisite: None.
Recommended Preparation for Those Without Required Knowledge: TBA
Link to Past Course: N/A
CSE 291 (F00) - Advanced Studies in Classical Operating Systems with Prof. Joe Pasquale
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. We will also read some “reflection” papers, i.e., retrospective studies on lessons learned regarding overall operating system design. The pace will be informal and relaxed, about one paper per week, so that we have the time to really understand and get into the details. Grading will be based mostly on class participation and a short final paper.
Required Knowledge: Operating systems
Enforced Prerequisite: Yes. CSE 221 or equivalent.
Recommended Preparation for Those Without Required Knowledge: Reading list for CSE221 (or any graduate-level operating systems course based on a similar reading list)
Link to Past Course: https://cseweb.ucsd.edu//classes/wi21/cse291-e/
CSE 291 (G00) - Semidefinite Programming & Approximation Algorithms with Prof. Ramamohan Paturi
Description: The course will develop the theory of semidefinite programming and discuss algorithms for solving semidefinite programs. We will apply the semidefinite programming to study approximation algorithms. The course will review the needed linear algebra tools. Students are expected to solve problems and provide rigorous proofs. Students are also expected to write a paper and present their work.
Required Knowledge: Networking. CSE 202 or CSE 200 or equivalent. Students should be comfortable with advanced linear algebra and rigorous proofs.
Enforced Prerequisite: None.
Recommended Preparation for Those Without Required Knowledge: Read the course description and required knowledge.
Link to Past Course: N/A
CSE 291 (H00 & I00) - Antisocial Computing with Prof. Kristen Vaccaro
Description: 'The internet is a trash fire,' according to some experts. What has gone wrong? And how can we fix it? In this course, we explore many of the problems of social media: misinformation, bias, surveillance, extremism, among others. We investigate these issues through three lenses: 1) how design choices (in interfaces and algorithms) can impact the function and style of online communities, 2) how aspects of human psychology drive the problems that arise, and 3) how these same topics have been explored in art, fiction, and film. Using these theoretical understandings, we will explore alternatives and design novel social computing systems.
Required Knowledge: None.
Enforced Prerequisite: None.
Recommended Preparation for Those Without Required Knowledge: N/A
Link to Past Course: N/A