Updated November 27th, 2023
This page serves the purpose to help 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.
Winter 2024 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 Algorithms with Prof. Chung Kuan Cheng
Course Description: We study the formulations and algorithms solving convex optimization problems. The topicsinclude convex sets, functions, optimality conditions, and duality concepts. If time permits, we will talkabout convex optimization algorithms. The objective of the course is to provide students with thebackground and techniques for scientific computing and system optimization.
Required Knowledge: Linear algebra.
Enforced Prerequisite: No
Recommended Preparation for Those Without Required Knowledge: Recommended Preparation for Those Without Required Knowledge: Study the Appendix (Mathematicalbackground, Numerical linear algebra) of the textbook before the quarter starts.
Link to Past Course: https://cseweb.ucsd.edu/ and classes/wi23/cse203B-a/
CSE 206A - LATTICE ALGORITHMS & APPLICATIONS WITH PROF. DANIELE MICCIANCIO
Course Description: Point lattices are powerful mathematical objects that can be used to efficiently solve many important problems in computer science, most notably in the areas of cryptography and combinatorial optimization. This course gives a general introduction to the theory of point lattices, their algorithms, computational complexity, mathematical techniques, and applications to cryptography.
Required Knowledge: The main prerequisites for the course are general mathematical maturity, knowledge of basic mathematics (good linear algebra and probability theory, basic abstract algebra, and a little bit of calculus) and introductory level algorithms and complexity theory (mathematical models of computation, analysis of algorithms, polynomial time solvability, NP-hardness, etc.) Some prior knowledge of cryptography is useful, but not strictly required. No prior knowledge of advanced complexity theory, Fourier analysis, or algebraic number theory is assumed, but you should be prepared to learn a bit about all this through the course.
Enforced Prerequisite: None, but students are expected to have already taken CSE 200 and CSE 201 or equivalent and have the implied prerequisites (i.e. good discrete math, linear algebra, probability).
Recommended Preparation for Those Without Required Knowledge: CSE 200
Link to Past Course: http://cseweb.ucsd.edu/classes/fa19/cse206A-a/
CSE 207A - MODERN CRYPTOGRAPHY WITH PROF. MIHIR BELLARE
Course 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 210 - Principle/Software Engineering with Prof. Michael J Coblenz
Course 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 an open-ended 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: No
Recommended Preparation for Those Without Required Knowledge: CSE 100 and one of CSE 110 or 134B.
Link to Past Course: https://mcoblenz.github.io/CSE210/
CSE 221 - Operating Systems with Prof. Amy Ousterhout
Course 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 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.
Recommended Preparation for Those Without Required Knowledge: Take CSE 120.
Link to Past Course: N/A
CSE 232B - Database System Implementation with Prof. Alin 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 ML with Prof. Arun Kuma
Course 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, social media analytics, and generative AI. 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/AI 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: 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), "Database Management Systems" (McGraw Hill), and "Operating Systems: Three Easy Pieces".
Link to Past Course: https://cseweb.ucsd.edu//classes/wi23/cse234-a/
CSE 240A - Princ/Computer Architecture with Prof. Jishen Zhao
Link to Past Course: https://cseweb.ucsd.edu/classes/fa17/cse240A-a/
CSE 240B - Parallel Computer Architecture with Prof. Jishen Zhao
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.
Enforced Prerequisite: No.
Recommended Preparation for Those Without Required Knowledge: Talk to the instructor
Link to Past Course: https://sites.google.com/eng.ucsd.edu/cse240bspring2018/home
CSE 251A - ML: Learning Algorithms with Prof. Taylor D Berg-Kirkpatrick
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 250-A. 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/classes/wi20/cse250B-a/index.html
CSE 251U - Unsupervised Learning with Prof. Sanjoy Dasgupta
Course Description: This course presents a broad view of unsupervised learning. Topics covered will include: descriptive statistics; clustering; projection, singular value decomposition, and spectral embedding; common probability distributions; density estimation; graphical models and latent variable modeling; sparse coding and dictionary learning; autoencoders, shallow and deep; and self-supervised learning. The focus throughout will be on understanding the modeling assumptions behind different methods, their statistical and algorithmic characteristics, and common issues that arise in practice.
Required Knowledge: The ideal preparation is a combination of CSE 250A and either CSE 251A or CSE 258; but at the very least, an undergraduate-level background in probability, linear algebra, and algorithms will be indispensable.
Enforced Prerequisite: None.
Recommended Preparation for Those Without Required Knowledge: N/A
Link to Past Course: N/A
CSE 252B - Computer Vision II with Prof. Ben Ochoa
Course 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/wi23/cse252B-a/
CSE 257 - Search and Optimization with Prof. Sicun Gao
Course Description: The course will cover several algorithmic ideas for hard search and optimization problems. The goal is to develop in-depth understanding of various mathematical 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, basic machine learning
Enforced Prerequisite: Nothing enforced, but you should have taken at least one machine learning course.
Recommended Preparation for Those Without Required Knowledge: N/A
Link to Past Course: https://scungao.github.io/ucsd-w23/index.html
CSE 270 - Discrete Differential Geometry with Prof. Albert Ren-Haur Chern
Course 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: No, (just be aware of the required knowledge).
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_wi23/
CSE 273 - Computational Photography with Prof. Ben Ochoa
Course Description: Computational photography overcomes the limitations of traditional photography using computational techniques from image processing, computer vision, and computer graphics. This course provides a comprehensive introduction to computational photography and the practical techniques used to overcome traditional photography limitations (e.g., image resolution, dynamic range, and defocus and motion blur) and those used to produce images (and more) that are not possible with traditional photography (e.g., computational illumination and novel optical elements such as those used in light field cameras). Upon completion of this course, students will have an understanding of both traditional and computational photography.
Required Knowledge: Linear algebra, calculus, and optimization. Python, C/C++, or other programming experience.
Enforced Prerequisite: None.
Recommended Preparation for Those Without Required Knowledge: Undergraduate courses and textbooks on image processing, computer vision, and computer graphics, and their prerequisites.
Link to Past Course: https://cseweb.ucsd.edu/classes/sp23/cse273-a/
CSE 272 - Advanced Image Synthesis with Prof. Tzumao 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. and 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.github.io/. Also, take a look at CSE 168 https://cseweb.ucsd.edu/~tzli/cse168/sp2023/
Link to Past Course: https://cseweb.ucsd.edu/~tzli/cse272/wi2023/
CSE 280A - Algorithms/Computational Biol 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 - BIOINF II:INTRO TO BIOINF ALGR 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 284 - Personal Genomics/Bioinformats with Prof. Melissa Ann Gymrek
Course 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: No
Recommended Preparation for Those Without Required Knowledge: An introductory Python course.
Link to Past Course: https://canvas.ucsd.edu/courses/12840 and http://gymreklab.com/teaching/personal_genomics/personal_genomics_2017.html
CSE 291 (B00) - Top/Computer Sci & Engineering with Prof. Yuan-Yuan Zhou
Course Description: Fundamentals and modern techniques for building dependable systems including error detection, fault tolerance, and failure recovery.
Required Knowledge: Basic and advanced computer systems and computer architecture concepts and principles. CSE221
Enforced Prerequisite: CSE 120 or equivalent.
Recommended Preparation for Those Without Required Knowledge: CSE221 reading list and CSE120 lecture video
Link to Past Course: N/A
CSE 291 (C00) - Pre-Internet to the modern era with Prof. Stefan Savage
Course Description: This course will explore the history and evolution of cybercrime (crime using computers and, in particular, crime using connected computers) using a range of sources -- including academic papers, government reports and contemporary journalism from the time. We will specifically explore changes in technical means, in business models and tactics, in scale of operation, in the demographics of victims and perpetrators and in the nature of societal and government response. The goal of the course is to better understand the interplay between
technical, social and economic factors that have allowed cybercriminals activity to adapt and flourish over the last thirty years and what this might teach us about cybercrime activities in the future.
Required Knowledge: None.
Enforced Prerequisite:
Recommended Preparation for Those Without Required Knowledge: N/A
Link to Past Course: N/A
CSE 291 (D00) - PROGRAM SYNTHESIS WITH PROF. NADIA POLIKARPOVA
Course 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 (E00) - Adv Studies in Classical OS with Prof. Joseph 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. 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: CSE221, 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/wi23/cse291-f/
CSE 291- Theoretical Perspectives on LLMs (with Professor Mohan Paturi)
Course Description: The course will discuss papers related to the theoretical aspects of LLMs. A list of papers that discuss theoretical aspects of LLMs will form the core of the course. Students will be expected to read and present papers. Students will be admitted to the course based on approval by the instructor.
Required Knowledge: Students must have a background in large language models, machine learning and AI. While the course is primarily meant for graduate students, it
is also open to a small number of undergraduate students.
Enforced Prerequisite: No
Recommended Preparation for Those Without Required Knowledge: N/A
Link to Past Course: N/A .