Current Quarter Course Descriptions & Recommended Preparation | Computer Science

Updated August 4, 2022

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.

Fall 2022 Graduate Course Information

CSE 202 – Algorithm Design and Analysis with Prof. Mohan Paturi

Description: Please see the website below for all relevant course information.

Required Knowledge: Please see the website below for all relevant course information.

Enforced Prerequisite: Yes. CSE 101 or equivalent.

Recommended Preparation for Those Without Required Knowledge: Please see the website below for all relevant course information.

Link to Past Course: https://sites.google.com/eng.ucsd.edu/algorithms/cse202

CSE 207B – Applied Cryptography with Prof. Nadia Heninger

Description: This is a course on applied cryptography, with a significant focus on cryptanalysis. Topics to be covered include:

Random number generation, stream ciphers, block ciphers, hash functions, modes of operation, RSA, Diffie-Hellman, DSA, ECDSA, Algorithmic techniques in cryptanalysis and computational number theory, secure channels, TLS, and cryptography in practice

Required Knowledge:  Mathematical maturity, in particular experience with mathematical proof.  Programming experience, and in particular familiarity with Python and C or ability to pick them up quickly.

Enforced Prerequisite: Yes. CSE 202 or CSE 107 or equivalent.

Recommended Preparation for Those Without Required Knowledge:  N/A

Link to Past Course:  https://cseweb.ucsd.edu//classes/sp22/cse207B-a/

CSE 208 – Advanced Cryptography with Prof. Daniele Micciancio – COURSE CANCELED

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.

In Fall 2022, 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 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. Thomas Powell

Description: Building a successful high-quality software system is an activity fraught with danger and lacking in predictable outcomes. However, despite a seeming lack of engineering predictability, software is becoming increasingly sophisticated and now permeates every aspect of our lives. In short, software is both becoming harder to build and is even more critical than ever that it is built well.

This course serves both as an introduction to classical best practices and current trends in software engineering practices. Readings and case studies for the course include the textbook Modern Software Engineering by Dave Farley, various excerpts from works by Steve McConnell, Joel Spolsky, and Bob Martin, and numerous classic and current articles covering a wide range of Software Engineering topics. The course also has a practical group project using standard web technologies to help develop engineering and collaborative skills in a small team situation.

The course lecture component will require students to read materials and prepare to interact with the instructor and fellow students both in a written and oral fashion. The course project component will have weekly milestones and ceremonies that adhere to typical Agile practices, so students should prepare for a more consistent engagement than occasional large work bursts. Project presentations will be required at the end of the course.

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:  These courses would provide adequate preparation: CSE 100 and one of CSE 131 or CSE 110.

Link to Past Course: N/A

CSE 218 – Advanced Topics in Software Engineering – Applications to Ubiquitous Computing with Prof. Nadir Weibel

Description: This course will apply basic Software Engineering concepts to real world problems. This is a project-based course, and students will build a working system based on a range of Ubiquitous Computing technology, and CSE 218 students will lead a team of undergraduate students throughout an accelerated agile development cycle. After learning the principles of agile scrum, students will investigate a number of technologies such as sensors, wearables, cameras, AR/VR headsets, and then apply the scrum methodology to develop a working system by the end of the quarter. Projects will culminate in a demonstration of the ubiquitous computing projects.

Required Knowledge: Knowledge in Software Engineering and Human-Computer Interaction, good development experience in a range of programming languages, experience or willingness to learn physical computing.

Enforced Prerequisite: Yes. CSE 210 and CSE 216 or equivalent HCI experience

Recommended Preparation for Those Without Required Knowledge:  Online Advanced Software Engineering Course, https://www.coursera.org/specializations/interaction-design

Link to Past Course: https://canvas.ucsd.edu/courses/18848/

CSE 221 – Operating Systems with Prof. YY Zhou

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 230 – Principles of Program Languages with Prof. Nadia Polikarpova

Description:  The goal of this class is to expose students to advanced programming language ideas, including high-level programming abstractions, expressive type systems and program analyses. We will develop these ideas in roughly two parts.

First, we will see how the lambda calculus can be used to distill the essence of computation into a few powerful constructs, and we will use it as a launching pad to study expressive type systems, logics, and analyses that can make precise predictions about run-time behavior at compile time.

Second, we will study how this calculus yields Haskell, a functional programming language that has been the incubator for many recent PL advances. We will use Haskell to learn about a variety of high-level programming abstractions and techniques.

Required Knowledge:  Basic discrete math (sets, boolean algebra, induction etc.).

Enforced Prerequisite: None. CSE 130 is recommended.

Recommended Preparation for Those Without Required Knowledge:  Be familiar with the sort of topics covered in CSE 20, CSE 105 and CSE 130.

Link to Past Course:  http://ucsd-pl.github.io/cse230/

CSE 232 – Principles of Database Systems with Prof. Yannis Papakonstantinou

Description: CSE232 covers the internals of database management systems. It covers:
(1) storage and indexing aspects, 
(2) query execution and optimization, 
(3) transaction processing (both concurrency control and failure recovery) and 
(4) (first time this year) aspects of modern, cloud-based database systems
The students will obtain in-depth knowledge of the workings of classic SQL-based database systems and will also learn selected aspects of modern database systems.
The class equips students with the background knowledge needed to pursue further classes in modern database systems and database theory.

Required Knowledge:  CSE232 focuses on the internals of database systems. The class is NOT an introduction to SQL or database schema design. The students are supposed to know SQL and database schema design in advance.

Enforced Prerequisite: Yes. CSE 132A or equivalent. The prerequisite will be enforced by an exam in the second week of classes.

Recommended Preparation for Those Without Required Knowledge:  Self study of database schema design and SQL querying. We recommend using Garcia, Ullman, Widom “Database Systems: The Complete Book”, since the second part of the book is the class textbook.

Link to Past Course:  N/A

CSE 240A – Principles of Computer Architecture with Prof. Jishen Zhao

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: None.

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 250A – Probabilistic Reason & Learning with Prof. Taylor Berg-Kirkpatrick

Description: Probabilistic methods for reasoning and decision-making under uncertainty. Topics include: inference and learning in directed probabilistic graphical models; prediction and planning in Markov decision processes; applications to computer vision, robotics, speech recognition, natural language processing, and information retrieval.

Required Knowledge: The course is aimed broadly at advanced undergraduates and beginning graduate students in mathematics, science, and engineering. Prerequisites are elementary probability, multivariable calculus, linear algebra, and basic programming ability in some high-level language such as C, Java, or Matlab. Programming assignments are completed in the language of the student’s choice.

Enforced Prerequisite: None.

Recommended Preparation for Those Without Required Knowledge:  Review elementary probability, multivariable calculus, linear algebra, and basic programming.

Link to Past Course: https://cseweb.ucsd.edu/classes/fa19/cse250A-a/

CSE 252A – Computer Vision I with Prof. Ben Ochoa

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: None.

Recommended Preparation for Those Without Required Knowledge: Undergraduate courses and textbooks.

Link to Past Course: https://cseweb.ucsd.edu/classes/fa21/cse252A-a/

CSE 258/R – Recommender Sys & Web Mining with Prof. Julian McAuley

Description: CSE 258 is a graduate course devoted to current methods for recommender systems, data mining, and predictive analytics.

Required Knowledge: Students should be comfortable with programming (all example code will be in Python), and with basic optimization and linear algebra.

Enforced Prerequisite: None.

Recommended Preparation for Those Without Required Knowledge:  Follow the chapter references for the first three weeks of the course for background material on each of the introductory topics covered.

Link to Past Course: https://cseweb.ucsd.edu//classes/fa20/cse258-a/

CSE 260 – Parallel Computation with Prof. Bryan Chin

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: https://sites.google.com/eng.ucsd.edu/cse260-spring-22/home

CSE 274 – Selected Topics in Graphics with Prof. Ravi Ramamoorthi

Description: This is a graduate course in selected topics in computer graphics. This quarter, we will cover Sampling and Reconstruction of Visual Appearance. The course will focus on two main areas of considerable current interest: Monte Carlo Denoising and View Synthesis.

Required Knowledge: CSE 167 (Computer Graphics) or equivalent at another university

Enforced Prerequisite: Yes. For graduate students, CSE 167 or equivalent. For undergraduate students, prerequisite is either CSE 167 or CSE 168.

Recommended Preparation for Those Without Required Knowledge: Take my CSE 167x course on edX (be prepared to provide verification to instructor).

Link to Past Course: https://cseweb.ucsd.edu//~viscomp/classes/cse274/fa21/274.html

CSE 276A – Introduction to Robotics with Prof. Henrik Christensen

Description: The desired learning outcomes for the students are:

  • Understanding basic and advanced concepts in robotics
  • Understanding the most common techniques used in the field
  • Applying them on one or more robotic platforms and gain experience
  • Interacting with your peers about the material, quizzes, and assignments
  • Evaluating your own progress in the course on a regular basis
  • Implement a complete robot system with perception, control, planning and execution

Required Knowledge: This is an introductory graduate class, so a minimum of formal requirements is assumed beyond an ability to program. Knowledge of linear algebra and basic probability theory is also assumed. Basic knowledge of image processing is desirable, but not a prerequisite.

Enforced Prerequisite: None.

Recommended Preparation for Those Without Required Knowledge: N/A

Link to Past Course: http://www.hichristensen.com/CSE276A-21/

CSE 276C – Mathematics for Robotics with Prof. Henrik Christensen

Description: This is a graduate course that introduces the mathematical tools used in many diverse areas of robotics. The class is inspired by the equivalent class at Carnegie Mellon University by Michael Erdmann – 811 Mathemetical Foundations for Robotics

The goal of the course is to help you accomplish the following:

  • Understand the geometry of linear systems of equations, including null spaces, row spaces and column spaces. Understand eigenvalues, diagonalization, singular value decomposition, least-squares solutions. Apply these skills to infer rigid-body transformations from data.
  • Learn how to model data using interpolation, linear regression, and higher-order approximation methods. Utilize these skills to recognize objects from point-cloud data and image streams
  • Understand different methods for finding roots of equations, in one dimension and higher, including bisection, Newton’s method, Müller’s method. Develop skills to analyze convergence rates.
  • Generalize finite-dimensional linear algebra concepts such as orthogonal bases to perform function approximation.
  • Develop techniques for solving differential equations numerically.
  • Understand optimization techniques such as gradient descent, conjugate gradient, Newton’s method. Learn the basics of convex optimization. Consider obstacle-avoidance viewed as cost-minimization.
  • Develop methods from the Calculus of Variations for higher-order optimization. Apply these techniques to develop the Lagrangian dynamics of a robot manipulator.
  • Learn basic computational geometry techniques, such as Convex Hull and Voronoi diagrams. Implement a geometric robot motion planner.

Required Knowledge: A good foundation of probability and linear algebra. This class will have more math in it than most Computer Science classes. A good working knowledge of Matlab or Python with Numpy. We will be doing things in python as part of the class, but homework assignments in Matlab are perfectly fine.

Enforced Prerequisite: None.

Recommended Preparation for Those Without Required Knowledge: N/A

Link to Past Course: http://www.hichristensen.com/CSE276C-21/

CSE 291 (A00) – Security, Privacy, and User Experience with Prof. Imani Munyaka

Description: The effectiveness of security tools, systems, or processes is often determined by how users understand, implement, and respond to them. Therefore, it is crucial that researchers and developers of security and privacy solutions understand how to create tools with users in mind. In this course, we will explore the human factors of security and privacy solutions, and learn how to apply user-centered design principles to develop and evaluate those solutions. Students will be introduced to various security topics and the concepts necessary to conduct user studies. Course topics include accessibility, authentication, privacy policies, security warnings, developer tools, security education, and training. All students will work on a research project throughout the course with the goal of producing a paper suitable for publication.

This course is designed for students who are interested in learning more about the relationship between usability, security, and privacy. Prior experience in these areas is not required but you will struggle if you don’t have prior knowledge in one of the areas.

Required Knowledge: Knowledge in either Security, Privacy, or User Experience

Enforced Prerequisite: None.

Recommended Preparation for Those Without Required Knowledge: N/A

Link to Past Course: N/A

CSE 291 (B00) – Deep Generative Models with Prof. Qi (Rose) Yu

Description: Deep generative models combine the generality of probabilistic reasoning with the scalability of deep learning. This research area is at the forefront of deep learning and has given state-of-the-art results in text generation, video synthesis, and molecular design, among many others. This course will cover recent advances in deep generative models, including variational autoencoders, generative adversarial networks, autoregressive models, normalizing flow, and diffusion models.  This is a graduate-level course with an emphasis on mathematical principles as well as practical know-how. The course will be a combination of lectures, student presentations, and team projects.

Required Knowledge: Familiarity with statistical inference and deep learning.

Enforced Prerequisite: Yes. CSE 151B or equivalent and CSE 250A or equivalent.

Recommended Preparation for Those Without Required Knowledge: Having taken classes in Deep Neural Networks or equivalent, experience with deep learning frameworks such as Pytorch or Tensorflow

Link to Past Course: 

CSE 291 (C00) – Design and Deployment of Internet of Things Devices with Prof. Patrick Pannuto

Description: This course looks at what is required to make real-world Internet of Things (IoT) devices. It will be a mixture of lecture and lab components, with weekly
hands-on activities to build and deploy applications; this will culminate in a project deploying hardware around the campus environment. 

The primary focus of the lecture component will center on communication technologies.  Internet of Things (IoT) devices are often battery-powered, or sometimes even energy-harvesting and battery-free. For most applications, 80% or more of power goes to communication, sending data between the IoT device and the internet at large. These two realities mean that many IoT devices use custom communication technologies, or common ones in different ways (e.g. why does my Fitbit scale make my home WiFi go literally 100x slower for all
devices?).

We will act as IoT system designers and learn how to choose and how to use the wide array of wireless technologies. Specifically, we will look at WiFi, Classic Bluetooth, Bluetooth Low Energy, IEEE 802.15.4, 2g/3g/4g cellular, LTE-M, NB-IoT, LoRa, SigFox, and some time with more esoteric choices, such as Visible Light Communication (VLC), Infrared Communication (IR), Ultrasonic, and boutique RF such as wake-up radios and backscatter. Persons finishing this course should be well-suited for work in real-world IoT systems upon completion.

Required Knowledge: Enthusiasm to learn. Students are expected to be comfortable with programming and building project using the C language. Some background in networking and signals & systems (more the former than the latter) will be helpful, but is not required, and the course will cover any required knowledge.

Enforced Prerequisite: Yes. CSE 110 and CSE 101 (or equivalents).

Recommended Preparation for Those Without Required Knowledge: Review of material from CSE123 Computer Networks (or similar) would be most helpful. Individuals looking for more knowledge may also look at material from ECE155 Digital Communications Theory (or similar) as well.

Link to Past Course: https://patpannuto.com/classes/2022/winter/cse291/

CSE 291 (D00) – Virtualization with Prof. Yiying Zhang

Description: This course introduces the broad area of virtualization, focusing on virtualization techniques used in real-world cloud environments. The topics covered include traditional virtualization techniques (i.e., virtual machines), non-conventional virtualization techniques like containers, sandboxes, and serverless computing, and alternative virtualization techniques like hardware-assisted virtualization.
Most of the course will be lecture-based, with the rest being student-led paper/online material discussion. Grades will be mainly based on a self-selected group project and paper reading.

Required Knowledge: Equivalence of undergrad OS and undergrad Computer Architecture

Enforced Prerequisite: None.

Recommended Preparation for Those Without Required Knowledge:  Reading the free OS textbook http://pages.cs.wisc.edu/~remzi/OSTEP/

Link to Past Course: https://cseweb.ucsd.edu/~yiying/cse291-winter22/

CSE 291 (E00) – Deep Learning for 3D Data with Prof. Hao Su

Description: This is a graduate level course to teach state-of-the-art concepts and algorithms of machine learning methods for geometry data processing and understanding. Techniques are useful in computer graphics, computer vision and machine learning. Popular applications include autonomous driving, robotics, and augmented reality. It should enable you to read, replicate, and improve recent 3D papers in top CV/CG/ML/Robotics conferences.

Required Knowledge: Fluent in linear algebra, taken classes of numerical methods or machine learning, fluent in at least one deep learning library, e.g., pytorch

Enforced Prerequisite: None.

Recommended Preparation for Those Without Required Knowledge:  – Stanford CS231n  – UCSD MATH170a  – UCSD 152 or UCSD 252

Link to Past Course: https://haosulab.github.io/ml-meets-geometry/WI21/index.html

CSE 291 (F00) – Securing Processor Architectures with Prof. Dean Tullsen

Description: This course will examine the challenges of building a secure processor architecture.  We will examine side channel attacks that exploit vulnerabilities throughout the processor and pipeline, transient execution attacks, architectures that mitigate various vulnerabilities, some more fundamentally secure architectural designs, architectures that provide memory isolation, and those that provide control flow isolation.

Required Knowledge: Graduate level architecture course.  some knowledge of security helpful, but not required.

Enforced Prerequisite: Yes. CSE 240A or equivalent.

Recommended Preparation for Those Without Required Knowledge:  CSE 240A

Link to Past Course: N/A

CSE 291 (G00) – Quantum Complexity Theory with Prof. Daniel Grier

Description: This is a graduate-level course that will use tools from complexity theory to understand the fundamental differences between quantum and classical computers. After an introduction to the basics of quantum computation, the course will explore several settings in which quantum computers provably outperform their classical counterparts. This will take us to the forefront of quantum computing research, where we’ll look at the complexity-theoretic foundations of recent quantum computing experiments.

Most of the course will be lecture-based. During the course, students will choose some aspect of quantum complexity theory to explore in greater depth, culminating in a written project report and presentation.

Required Knowledge:  A previous course in complexity theory (CSE 200 or equivalent) is highly recommended. No prerequisite knowledge of physics or quantum computation is required. That said, this is an advanced research-level course and is not intended as an introduction to quantum computation and information.

Enforced Prerequisite: None.

Recommended Preparation for Those Without Required Knowledge: Reading complexity textbook (Online version: http://theory.cs.princeton.edu/complexity/book.pdf)

Link to Past Course: N/A

CSE 291 (H00) – Operating Systems in Datacenters with Prof. Amy Ousterhout

Description: As datacenters have proliferated over the last two decades, new applications and new hardware have emerged. These pose challenges for the abstractions, APIs, and techniques of classical operating systems. In this course, we will cover recent operating systems techniques to tackle these challenges. You will learn about high-performance network stacks, multicore scheduling, memory management, and how to integrate new hardware such as RDMA, SmartNICs, FPGAs, GPUs, and TPUs into an OS.

This course will focus on reading and discussing research papers. There will be no final exam. Instead, students will undertake a research project, either individually or in a small group.

Required Knowledge: Graduate operating systems.

Enforced Prerequisite: Yes. CSE 221 or equivalent.

Recommended Preparation for Those Without Required Knowledge:  Take CSE 221

Link to Past Course: N/A

CSE 291 (I00) – Programmers are People Too with Prof. Michael Coblenz

Description:  Programmers of all kinds express their ideas using programming languages. Unfortunately, languages can be hard to use correctly, resulting in lengthy development times and buggy software. How can these languages be designed to make programmers as effective as possible?
In this course, we will learn techniques to analyze and improve the usability of programming languages. Students will apply these techniques to languages of current and historical interest, and in the process, expand their knowledge of different ways to design languages. This course is intended as preparation for conducting independent research on the usability of programming languages, and will include homework assignments as well as a project.

Required Knowledge: Graduate standing or background in programming languages, e.g., from CSE 130

Enforced Prerequisite: None for graduate students. Undergraduate students must have CSE 130.

Recommended Preparation for Those Without Required Knowledge:  Significant experience programming in several different languages.

Link to Past Course: N/A