Updated November
- Fall 2024 Graduate Course Information
-
CSE 202 - Algorithm Design and Analysis with Prof. Qipeng Liu
Course Description: The course will cover the basic techniques for the design and analysis of algorithms. For example, divide-and-conquer, greedy algorithm, dynamic programming, data structures, graph search, algebraic problems, randomized algorithms, lower bounds, probabilistic analysis etc.
Required Knowledge: CSE 20, 21, 101 or equivalent
Enforced Prerequisite: No
Recommended Preparation for Those Without Required Knowledge: N/A
Link to Past Course: N/A
CSE 207B - APPLIED CRYPTOGRAPHY WITH PROF. NADIA HENINGER
Course 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: CSE 202 or CSE 107 or equivalent
Enforced Prerequisite: No.
Recommended Preparation for Those Without Required Knowledge: N/A
Link to Past Course: https://cseweb.ucsd.edu//classes/sp22/cse207B-a/
CSE 209A - Theory seminar with Prof. Shachar Lovett
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 210 - Principle/Software Engineering with Prof. Thomas Allan Powell
Course Description: Building a high-quality software system is often not as predictable as it should be, given how long software has been built. Today, software development is both more accessible with low code tooling and LLMs and simultaneously more challenging due to growing complexity and importance. In short, creating software is becoming easier to build, often poorly, but quality is becoming more critical than ever as software permeates our daily lives. This course is designed to equip students with the necessary skills and knowledge to navigate these challenges as software engineers in industry.
This course serves both as an introduction to classical best practices and an exploration of current trends in software engineering practices. Readings and case studies include the textbook Modern Software Engineering by Dave Farley, augmented by various other materials from classical and modern papers, presentations, and excerpts from other works from McConnell, Brooks, Beck, Spolsky, and others. In addition, the course has a practical group project employing 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 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 presentation and retrospective activities are 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: N/A
Recommended Preparation for Those Without Required Knowledge: These courses would provide adequate preparation: CSE 100 and one of CSE 134B or CSE 110.
Link to Past Course: N/A
CSE 218 - ADVANCED TOPICS IN SOFTWARE ENGINEERING WITH PROF. NADIR WEIBEL
Course 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. 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 222A - ComputerCommunication Networks with Prof. George M PorterCourse Description: CSE 222A is a graduate course on computer networks. This course will provide a broad understanding of exactly how the network infrastructure supports distributed applications. Topics covered in the course include: Internet architecture, Internet routing, Software-Defined Networking, datacenters, content distribution networks, and peer-to-peer systems.
This is a research-oriented course focusing on current and classic papers from the research literature. Further, all students will work on an original research project, culminating in a project writeup and conference-style presentation. In the past, the very best of these course projects have resulted (with additional work) in publication in top conferences.
As with many other research seminars, the course will be predominately a discussion of a set of research papers. However, we will also discuss the origins of these research projects, the impact that they had on the research community, and their impact on industry (spoiler alert: the impact on industry generally is hard to predict).
Note that this class is not a "lecture" class, but rather we will be actively discussing research papers each class period.
Required Knowledge: Students should have taken an undergraduate networking class, equivalent to CSE 123, or be able to acquire the equivalent knowledge on their own.
Enforced Prerequisite: No.
Recommended Preparation for Those Without Required Knowledge: N/A
Link to Past Course: N/A
CSE 227 - Computer Security with Prof. Earlence T Fernandes
Course Description: This course focuses on computer security, exploring a range of topics – from systems security, to web security, edge security, and privacy – to illustrate some of the modern research challenges in the area and the standards for advancement. It is not designed to be a tutorial course, but rather to give students the context to understand current security research and evaluate their interest in the field. The course will examine both the defensive and offensive side of the field. At the conclusion of the course, the students will have the foundation to conduct research in computer security and to apply the latest security research to a particular area of practice.
Required Knowledge: Undergraduate understanding of data structures, algorithms, operating systems, security, networks, cryptography.
Enforced Prerequisite: No.
Recommended Preparation for Those Without Required Knowledge: Undergraduate courses in the above topics
Link to Past Course: https://cseweb.ucsd.edu/~efernandes/teaching/cse227fa23/cse227.html
CSE 229A - Tops/Seminar/Computer Systems with Prof. Stefan Savage
Course Description: Discussion on problems of current research interest in computer systems built around past, present and future research at UCSD. Possible areas of focus include: networking, operating systems, security, storage systems, programming systems. Topics to be presented by faculty and students under faculty direction. Topics vary from quarter to quarter. May be repeated for credit.
(ONLY TAKE FOR ONE UNIT)Required Knowledge: No.
Enforced Prerequisite: No.
Recommended Preparation for Those Without Required Knowledge: N/A
Link to Past Course: N/A
CSE 229C - Tops/Seminar/Computer Security with Prof. Nadia A Heninger
Course Description: Discussion on problems of current research interest in computer security. Topics to be presented by faculty and students under faculty direction.
Required Knowledge: No.
Enforced Prerequisite: No.
Recommended Preparation for Those Without Required Knowledge: N/A
Link to Past Course: N/A
CSE 232 - Principles/Data Base Systems with Prof. Alin Bernard Deutsch
-TBA
CSE 237C - Validation&Testing/EmbeddedSys with Prof. Ryan Charles Kastner
Course Description: This class focuses on creating embedded system prototypes using a programmable system-on-chip (SoC). The class is graded primarily based on the performance in projects that are spread across the class. The projects require the student to implement a hardware-accelerated core and integrate it into a prototype SoC. Students understand parallel programming concepts, learn how to use modern high-level synthesis tools, and develop hardware-accelerated compute systems.
Required Knowledge This class is part of the 237 “Embedded Systems” series. This class stands on its own and does not require knowledge from any of the previous 237 classes. Having some understanding of basic digital signal processing (sampling, filtering, transforms) is useful but not required. Equally helpful is having taken classes in computer architecture (and in particular understanding pipelining, memory hierarchy, and digital design). Again, it will be useful but not required as the class is taught in a way that is self-contained. Do note that most students have a good background in at least one of these areas (DSP or computer architecture); if you do not know either, then you will have to work harder.
Enforced Prerequisite: No.
Recommended Preparation for Those Without Required Knowledge: You can start by reading the book! The class is built around this book (and vice-versa) and the projects are related to the chapters in that book. For those who do not know DSP, there are countless resources for this. You can learn the basics of finite impulse response (FIR) filters, discrete Fourier transform, and fast Fourier transforms. These form some of the core computations for the projects. Each of these topics will be described in class, but you would be wise to have at least a decent understanding of how these work. The same is true for computer architecture; there are countless resources for this. You generally want to understand the components of a data path (control flow, data flow) and the tradeoffs in memory design (number of ports, throughput, hierarchy, etc.). We will primarily be using the Xilinx HLS design tool. There are a number of tutorials on this tool at the Xilinx website. If you want to start using the tool early, contact the instructor.
Link to Past Course: https://kastner.ucsd.edu/ryan/cse237c/
CSE 240A - Princ/Computer Architecture with Prof. Hadi Esmaeilzadeh
Course Description: This is a graduate-level course on how the computer works. In this course, we will review fundamental structures in modern microprocessor and computer system architecture design. We will cover computer organization, instruction set design, memory system design, pipelining, cache coherence protocols, memory schedulers, power/energy, prefetching and other techniques to explore instruction level parallelism and thread level parallelism. We will also cover system level topics such as storage subsystems. We will also have case studies as to how modern microprocessors are designed.Required Knowledge: N/A.
Enforced Prerequisite: No.
Recommended Preparation for Those Without Required Knowledge: N/A
Link to Past Course: https://hadiclass.github.io/cse240a-fa18/index.html
CSE 240D - Applicatn Specific Processors with Prof. Hadi Esmaeilzadeh
Course Description: Deep learning is set to revolutionize medicine, robotics, commerce, transportation and numerous other aspects of our lives. However, these impacts are contingent upon providing high-performance compute capabilities alongside restrained power consumption. Significant effort has been made both by modifying hardware and software in the direction of enhancing the speed of neural networks and their consumed energy. The compute intensity of neural networks and the inability of general purpose processors to meet this high demand accentuate the need for applications specific hardware accelerators that are custom designed for deep neural network computations. In this course, you will gain insight on the design process of these accelerators, as well as deep neural network architectures and characteristics by discussing the prevalent literature in the area. This is a project-based course, so you will also acquire hands-on knowledge on how to actually construct an accelerator through the project. The project will step by step guide you through outlining your architecture and developing a functional and timing simulator for it.
Required Knowledge: N.A
Enforced Prerequisite: There are no pre-requisites for the course but students will be expected to be comfortable with a) basic computer organization, and b) programming in a language such as Python or C/C++. The course is open to both PhD and MS students. Undergraduate students require permission from the instructor.
Recommended Preparation for Those Without Required Knowledge: N/A
Link to Past Course: https://hadiclass.github.io/cse240d-wi21/index.html
CSE 250A - Probabilistic Reason&Learning with Prof. Trevor A Bonjour
Course 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 graduate students in mathematics, science, and engineering. Prerequisites are probability theory, multivariable calculus, linear algebra, and programming ability.
Enforced Prerequisite: No.
Recommended Preparation for Those Without Required Knowledge: Review probability theory (conditional independence, Bayes' rule), multivariable calculus (computing gradients of multivariate functions, gradient descent), linear algebra (eigen decomposition), and basic data science programming (e.g. loading datasets, writing outputs, representing data as matrices).
Link to Past Course: https://cseweb.ucsd.edu/classes/fa19/cse250A-a/
CSE 256 - Statistical Natural Lang Proc with Prof. Ndapandula Nakashole
Course Description: This course is on Natural Language Processing (NLP), the study of computing systems that take as input or produce as output unstructured, natural language data. The course covers primarily deep learning methods and language model pre-training, as well NLP tasks. Techniques studied include basic classification techniques, feedforward neural networks, attention mechanisms, pre-trained large language models (BERT-style encoders and GPT-style LLMs), and structured models (sequences, etc.). Problems will primarily focus on semantics (lexical semantics, question answering, ...) and applications such as code generation. Programming assignments throughout the semester involve building machine learning systems for NLP tasks.Required Knowledge: Basics of Machine Learning
Enforced Prerequisite: NO.
Recommended Preparation for Those Without Required Knowledge: Basics of Machine Learning
Link to Past Course:
CSE 258/R - RECOMMENDER SYS&WEB MINING WITH PROF. JULIAN MCAULEY
Course 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/fa23/cse258-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 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/cse270_wi24/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 executionRequired 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 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-22/
CSE 276C - MATHEMATICS FOR ROBOTICS WITH PROF. HENRIK CHRISTENSEN
Course 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 Mathematical 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: N/A
Enforced Prerequisite: None.
Recommended Preparation for Those Without Required Knowledge: N/A
Link to Past Course: https://amyousterhout.com/cse291-fall22/
CSE 276E - ROBOTIC SYS DESIGN & IMPLEMNT WITH PROF. STEVE SWANSON
Course Description: End-to-end system design of embedded electronic systems including PCB design and fabrication, software control system development, and system integration. Program or materials fees may apply.
Required Knowledge: N/A
Enforced Prerequisite: None.
Recommended Preparation for Those Without Required Knowledge: N/A
Link to Past Course: https://sites.google.com/ucsd.edu/the-quadcopter-class/home
CSE 291 (A00) - Large Model Reasoning with Prof. Lianhui Qin
Course Description: This course delves into the rapidly evolving field of large (foundation) models and machine reasoning. Large models, like large language models (GPT-4), video models (Sora), multi-modal models (GPT-4o, Gemini), world models, are creating impressive results in various domains. How do these models work? How can they be used to solve complex reasoning problems, in math, commonsense, embodied, and even scientific areas? Are we close to the so-called AGI already? What are the foundation limitations of these techniques? What are the next steps to build robust, grounded, and/or interpretable reasoning machines? We will talk about these topics. In addition to the lectures, students will also read and present latest related papers in the field, and team up to complete course projects.
Required Knowledge: Introductory machine learning, natural language processing
Enforced Prerequisite: No.
Recommended Preparation for Those Without Required Knowledge: CSE 150A, 151A
Link to Past Course: N/A
CSE 291 (B00) - Programmers are People Too with Prof. Michael J Coblenz
Course 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 research methods for analyzing and improving 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. The first part of the course will emphasize research methods from human-computer interaction research, with examples drawn from programming languages and development environments. The second part of the course will focus on reading research papers that describe key results from the field. The course will include homework assignments as well as a group research project.
Required Knowledge: Significant experience programming in several different languages.
Enforced Prerequisite: No
Recommended Preparation for Those Without Required Knowledge: N/A
Link to Past Course: https://cseweb.ucsd.
edu/~mcoblenz/teaching/291A00_ fall2023/ CSE 291 (C00) - PROGRAM SYNTHESIS WITH PROF. LORIS D'ANTONI
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, symbolic, or LLM-based 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) - Sociotechnical Cybersecurity with Prof. Deepak Kumar
Course Description: This course focuses on the cybersecurity threats that emerge when humans interact with technology at scale – such as misinformation, disinformation, and online harassment. Students will study how these threats emerge in practice and explore the landscape of technical defenses and interventions against these harms. Students will primarily read, synthesize, present, and discuss research papers. The course will culminate in a presentation of a quarter-long research project that students will conduct in small groups.
Required Knowledge: Some cybersecurity knowledge and human-computer interaction knowledge is helpful, but not required.
Enforced Prerequisite: No.
Recommended Preparation for Those Without Required Knowledge: N/A
Link to Past Course: N/A
CSE 291 (E00) - Additive combinatorics with Prof. Shachar Lovett
Course Description: Additive combinatorics studies the structure of "approximate algebraic" objects, such as subsets of groups or fields, and their behavior under algebraic operations, such as addition or multiplication. While originally motivated by number theory, in recent years many connections and applications in theoretical computer science have been discovered. In this course, we will cover basic topics in additive combinatorics, some recent advances, applications to theoretical computer science, and the many open problems that remain.Required Knowledge: There are no specific prerequisites beyond a certain level of mathematical maturity. It is assumed that students have basic knowledge in combinatorics and algebra.
Enforced Prerequisite: No
Recommended Preparation for Those Without Required Knowledge: See links in past course website
Link to Past Course: https://cseweb.ucsd.edu/classes/wi14/cse291-a/
CSE 291 (F00) - Privacy & Society with Prof. Imani Munyaka
Course Description: This seminar-style course delves into the various concepts of privacy, exploring its theoretical underpinnings, legal frameworks, and empirical research. Through a combination of readings, discussions, and case studies, students will examine the evolving definitions and dimensions of privacy, considering perspectives from philosophy, sociology, and information science. The course will cover key privacy laws and regulations, analyzing their implications for individuals, organizations, and society at large with a focus on implications for various technologies. Students will engage critically with various readings and case studies. Assessment will be based on students' contributions to class discussions and a final group position paper, where they will articulate and defend their stance on a privacy-related topic of their choice. This course aims to equip students with a comprehensive understanding of privacy, preparing them to navigate and address the complex privacy challenges in their professional and academic pursuits in computer science.
Required knowledge: N/A
Enforced prerequisite: N/A
Recommended Preparation for Those Without Required Knowledge: N/A.
Link to Past Course: N/A
CSE 291 (G00) - Securing Proc Architectures with Prof. Dean Tullsen
Course 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: CSE 240A or equivalent
Recommended Preparation for Those Without Required Knowledge: N/A.
Link to Past Course: N/A
CSE 291 (H00) - Adv. 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, synthesizing data from large language models 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: CSE 151A and DSC 148 are great preparations.
Link to Past Course: https://shangjingbo1226.github.io/teaching/2024-spring-CSE291-TM
CSE 291 (I00) - QUANTUM COMPLEXITY THEORY WITH PROF. DANIEL GRIER
Course 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 (J00) - NAVIGATING ACADEMIC JOB MARKET WITH PROF. HADI ESMAEILZADEH
Course Description: Being an academic who works with generation of talented young students is one of the most rewarding careers. Attaining a faculty position requires understanding the recruitment process, planning your research and teaching portfolio rather early on, and preparing the package. In this course, we will cover all this topics and we all also take a glimpse into the life a tenure-track faculty member to set the appropriate exceptions. We will also work together to prepare practice or final material for your job search.
Required Knowledge: N/A
Enforced Prerequisite: No.
Recommended Preparation for Those Without Required Knowledge: N/A
Link to Past Course: https://kristenvaccaro.github.io/academic-job/
CSE 291 (K00) - Secure, Rusty Systems WITH PROF. DEIAN STEFAN
Course Description: This course will explore how using a language like Rust with a powerful type system and strong safety guarantees affects the design of secure systems. Do the safety guarantees provided by Rust (e.g., memory safety) make it easier to provide stronger guarantees using techniques like verification? What classes
of vulnerabilities can we completely eliminate by cleverly taking advantage of Rust's type system? Where and how do Rust's safety guarantees break down when applied to low-level systems code? To (start to) answer these questions,
students will read, present, and discuss recent research papers in the field and conduct a relevant
quarter-long research project in small groups.Required Knowledge: Some experience writing programs in Rust is helpful. Undergrad/grad security, programming languages, and operating systems.
Enforced Prerequisite: No.
Recommended Preparation for Those Without Required Knowledge: Read The Rust Book.
Link to Past Course:
- 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.github.io/) and CSE 130/230. This includes experience programming in a structurally recursive style as in Rust, Haskell, or similar; ability to implement syntax transformations/code generation up to a simple calling convention; ability to write C code that works with pointer representations; an understanding of process and memory layout.
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.github.io/). 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/~mkchandraker/classes/CSE252D/ Spring2022/ 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/ALink 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.pdfLink 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.Required Knowledge: Undergraduate-level operating systems and computer architecture
Enforced Prerequisite: No
Recommended Preparation for Those Without Required Knowledge: Reading OS and computer architecture textbooks and go through previous offerings' slides
Link to Past Course: https://cseweb.ucsd.edu/~yiying/cse291-winter24/
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 OptimizationLink 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-TMCSE 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: NoRecommended Preparation for Those Without Required Knowledge: N/A
Link to Past Course: N/A
- Winter 2024 Graduate Course Information
-
This is historical data. This page serves the purpose of helping graduate students understand each graduate course offered during Winter 2024.
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//~
mihir/cse207/index.html 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 (G00) - Big Data Science and Knowledge with Prof. Nuno Bandeira
Course Description: Computational analysis of massive volumes of data holds the potential to transform society. However, the computational translation of data into knowledge requires more than just data analysis algorithms – it also requires proper matching of data to knowledge for interpretation of the data, testing pre-existing knowledge and detecting new discoveries. This course will cover these data science concepts with a focus on the use of biomolecular big data to study human disease – the longest-running (and arguably most important) human quest for knowledge of vital importance. Building on the growing availability of hundreds of terabytes of data from a broad range of species and diseases, we will discuss various computational challenges arising from the need to match such data to related knowledge bases, with a special emphasis on investigations of cancer and infectious diseases (including the SARS-CoV-2/COVID19 pandemic). Prior knowledge of molecular biology is not assumed and is not required; essential concepts will be introduced in the course as needed.Required Knowledge:
Enforced Prerequisite: No.
Recommended Preparation for Those Without Required Knowledge:
Link to Past Course: N/A
CSE 291 (K00)- Quantum Computing System with Prof. Yufei Ding
Course Description: This course delves into advanced aspects of quantum computer systems design. Initially, we'll lay a solid foundation in the mathematical principles underlying quantum computation and information. Following this, we'll delve into hardware and software aspects of quantum computers. Students will gain hands-on experience using software tools such as IBM's Qiskit and Xanadu's PennyLane, learning to craft quantum programs and run them on quantum hardware accessible via the cloud.
Required Knowledge: This course delves into advanced aspects of quantum computer systems design. Initially, we'll lay a solid foundation in the mathematical principles underlying quantum computation and information. Following this, we'll delve into hardware and software aspects of quantum computers. Students will gain hands-on experience using software tools such as IBM's Qiskit and Xanadu's PennyLane, learning to craft quantum programs and run them on quantum hardware accessible via the cloud.
Enforced Prerequisite: No
Recommended Preparation for Those Without Required Knowledge: Nielsen, M. A., & Chuang, I. L. (2010). Quantum Computation and Quantum Information: 10th Anniversary Edition. Cambridge University Press.
Link to Course: https://cseweb.ucsd.edu/~
yufeiding/CSE291QC/ CSE 291 (L00) - Theoretical Perspectives on LLMs with Prof. 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 .CSE 291 (M00) - CSE colloquium talks with Prof. Gymrek and Dasgupta
Course Description: The course will consist of seminars from external speakers covering state-of-the-art research in a wide range of topics in computer science.
Required Knowledge: No prior knowledge required.
Enforced Prerequisite: No
Recommended Preparation for Those Without Required Knowledge: NA
Link to Past Course: NA
- Fall 2023 Graduate Course Information
-
This is historical data. This page serves the purpose of helping graduate students understand each graduate course offered during Fall 2023
CSE 200 - Computability and Complexity with Prof. Daniel Grier
Description: This class is an introduction to computational complexity theory. This area aims to understand the various resources needed to solve computational problems. Such resources include the obvious ones, such as time and memory, but also possibly less obvious ones, such as randomization, interaction and non-uniformity. In addition, we will attempt to classify problems as "easy" or "hard", study relations between easy and hard problems, and understand why the "P vs NP" problem is possibly the most important open problem in computer science, mathematics and science at large.
Required Knowledge: Turing machines, reductions, proof basics
Enforced Prerequisite: Yes. CSE 105 or equivalent.
Recommended Preparation for Those Without Required Knowledge: Sipser, Introduction to the Theory of Computation.
Link to Past Course: https://cseweb.ucsd.edu/classes/fa21/cse200-a/
CSE 202 - Algorithm Design and Analysis with Prof. Mohan Paturi
Description: Please visit this website for complete course information.
Required Knowledge: Please visit this website for complete course information.
Enforced Prerequisite: None.
Recommended Preparation for Those Without Required Knowledge: Please visit this website for complete course information.
Link to Past Course: https://sites.google.com/ucsd.edu/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
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 - Principle/Software Engineering with Prof. Thomas Powell
Description: Building a successful high-quality software system is fraught with danger and lacking in predictable outcomes. Interestingly, software development is becoming more accessible with low code tooling and LLMs and yet more challenging due to growing complexity and importance. In short, creating software is becoming easier to build, but the quality is becoming more critical than ever as it permeates our daily lives.
This course serves both as an introduction to classical best practices and current trends in software engineering practices. Readings and case studies include the textbook Modern Software Engineering by Dave Farley, augmented by various other materials from classical and modern papers, presentations, and excerpts from other works from McConnell, Pais and Skeleton, Spolsky, and others. In addition, the course has a practical group project employing 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 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 presentation and retrospective activities are required at the end of the course.
ajectory of projects. Generally there is a focus on the runtime system that interacts with generated code (e.g. garbage collection, standard library, user interface, interactive programming).
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 134B or CSE 110.
Link to Past Course: N/A
CSE 216 - Interaction Design Research with Prof. Scott Klemmer
Description:
Required Knowledge:
Enforced Prerequisite:
Recommended Preparation for Those Without Required Knowledge:
Link to Past Course:
CSE 218 - Advanced Topics in Software Engineering 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 227 - Computer Security with Prof. Earlence Fernandes
Description: This course focuses on computer security, exploring a range of topics – from systems security, to web security, edge security, and privacy – to illustrate some of the modern research challenges in the area and the standards for advancement. It is not designed to be a tutorial course, but rather to give students the context to understand current security research and evaluate their interest in the field. The course will examine both the defensive and offensive side of the field. At the conclusion of the course, the students will have the foundation to conduct research in computer security and to apply the latest security research to a particular area of practice.
Required Knowledge: Undergraduate understanding of data structures, algorithms, operating systems, security, networks, cryptography.
Enforced Prerequisite: Yes. CSE 120 and CSE 127 or equivalents.
Recommended Preparation for Those Without Required Knowledge: Undergraduate courses in the above topics
Link to Past Course: N/A
CSE 230 - Principles/Program Languages with Prof. Ranjit Jhala
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, but 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: N/A
CSE 232 - Principles/Data Base Systems with Prof. Yannis Papakonstantinou
Description:
Required Knowledge:
Enforced Prerequisite:
Recommended Preparation for Those Without Required Knowledge:
Link to Past Course:
CSE 237C - Validation&Testing/EmbeddedSys with Prof. Ryan Kastner
Description: This class focuses on creating embedded system prototypes using a programmable system-on-chip (SoC). The class is graded primarily based on the performance in projects that are spread across the class. The projects require the student to implement a hardware accelerated core and integrate it into a prototype SoC. Students understand parallel programming concepts, learn how to use modern high-level synthesis tools, and develop hardware accelerated compute systems.
Required Knowledge: This class is part of the 237 “Embedded Systems” series. This class stands on its own and does not require knowledge from any of the previous 237 classes. Having some understanding of basic digital signal processing (sampling, filtering, transforms) is useful but not required. Equally helpful is having taken classes in computer architecture (and in particular understanding pipelining, memory hierarchy, and digital design). Again, it will be useful but not required as the class is taught in a way that is self-contained. Do note that most students have a good background in at least one of these areas (DSP or computer architecture); if you do not know either, then you will have to work harder.
Enforced Prerequisite: None.
Recommended Preparation for Those Without Required Knowledge: You can start by reading the book! The class is built around this book (and vice-versa) and the projects are related to the chapters in that book. For those who do not know DSP, there are countless resources for this. You can learn the basics of finite impulse response (FIR) filters, discrete Fourier transform, and fast Fourier transforms. These form some of the core computations for the projects. Each of these topics will be described in class, but you would be wise to have at least a decent understanding of how these work. The same is true for computer architecture; there are countless resources for this. You generally want to understand the components of a data path (control flow, data flow) and the tradeoffs in memory design (number of ports, throughput, hierarchy, etc.). We will primarily be using the Xilinx HLS design tool. There are a number of tutorials on this tool at the Xilinx website. If you want to start using the tool early, contact the instructor.
Link to Past Course: https://kastner.ucsd.edu/ryan/cse237c/
CSE 240A - Princ/Computer Architecture with Prof. Dean Tullsen
Description: This course will cover fundamental concepts in computer architecture. Topics include instruction set architecture, pipelining, advance instruction-level-parallelism techniques, dynamic scheduling, branch prediction, superscalar issue, memory-hierarchy design, advanced cache architectures, and multiprocessor and multithreaded architecture issues.
Required Knowledge: An undergrad computer architecture course
Enforced Prerequisite: None, but there will be a graded pretest distributed on the first day of class to assess basic undergraduate-level architecture knowledge.
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 240D - Applicatn Specific Processors with Prof. Hadi S. Esmaeilzadeh
Description: Deep learning is set to revolutionize medicine, robotics, commerce, transportation and numerous other aspects of our lives. However, these impacts are contingent upon providing high-performance compute capabilities alongside restrained power consumption. Significant effort has been made both by modifying hardware and software in the direction of enhancing the speed of neural networks and their consumed energy. The compute intensity of neural networks and the inability of general purpose processors to meet this high demand accentuate the need for applications specific hardware accelerators that are custom designed for deep neural network computations. In this course, you will gain insight on the design process of these accelerators, as well as deep neural network architectures and characteristics by discussing the prevalent literature in the area. This is a project-based course, so you will also acquire hands-on knowledge on how to actually construct an accelerator through the project. The project will step by step guide you through outlining your architecture and developing a functional and timing simulator for it.
Required Knowledge: None
Enforced Prerequisite: None. However, students will be expected to be comfortable with a) basic computer organization, and b) programming in a language such as Python or C/C++.Recommended Preparation for Those Without Required Knowledge: N/A
Link to Past Course: https://hadiclass.github.io/cse240d-wi19/index. html CSE 248 - Algorithmic & Optimization Foundations for VLSI/CAD with Prof. CK Cheng
Description: Algorithmic techniques and optimization frameworks for large-scale, difficult optimization problems. IEEE International Roadmaps for Devices and Systems and the implications; hypergraph partitioning (e.g., ratio cuts, spectral partitioning, ancestor trees); 2D/3D floorplanning (e.g., sequence pairs, corner block lists, twin binary trees, ordered trees); discrete and analytical placement; interconnect routing via primal-dual multicommodity flow approximations; standard-cell library layout generation; and applications to other formulations (e.g., graph visualization). Students will conduct homework and projects to explore new formulations and solutions.
Required Knowledge: Basic circuit theory, discrete math
Enforced Prerequisite: None, but CSE 241A is recommended.
Recommended Preparation for Those Without Required Knowledge: Browse the book CMOS VLSI Design 4e: A circuits and systems perspective by Weste et al.
Link to Past Course: N/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 graduate students in mathematics, science, and engineering. Prerequisites are probability theory, multivariable calculus, linear algebra, and 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: No
Recommended Preparation for Those Without Required Knowledge: Review probability theory (conditional independence, Bayes' rule), multivariable calculus (computing gradients of multivariate functions, gradient descent), linear algebra (eigen decomposition), and basic data science programming (e.g. loading datasets, writing outputs, representing data as matrices).
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/fa22/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/fa22/cse258-a/
CSE 275 - 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 252A
Link to Past Course: https://haosulab.
github.io/ml-meets-geometry/ WI21/index.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 executionRequired 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 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-22/
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 Mathematical 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.Link to Past Course: https://amyousterhout.com/cse291-fall22/
CSE 291 (E00) - Quantum Cryptography with Prof. Qipeng Liu
Description: This is a graduate-level course but no prior knowledge of quantum mechanics or quantum computation is needed. In this course, we will together explore how quantum computers significantly change the landscape of modern cryptography but also how cryptography helps found and forward many important concepts in quantum computing. These include but are not limited to breaking the famous RSA cryptosystem, proof of quantumness, quantum money, quantum copy-protection for software, and many others
Required Knowledge: This course requires working comfortably with CS theory and proofs, for example, Karp reduction, linear algebra, and basic probability theory. For example, CSE 105 and 107 (CSE 200 and CSE 207A are also better recommended).
Enforced Prerequisite: None, but CSE 200 and CSE 207A are highly recommended.
Recommended Preparation for Those Without Required Knowledge: NA
Link to Past Course: (Princeton) by Dr. Mark Zhandry https://mzhandry.github.io/courses/2018-Fall- COS597A/ CSE 291 (F00) - The Academic Job Market with Prof. Kristen Vaccaro and Hadi Esmaeilzadeh
Description: Are you close to graduating? This course will help navigate the academic job market. Learn about different types of programs and positions, understand how to write job materials, and prepare a strong job talk. You will also have the opportunity to get feedback on your applications in a supportive space.
Required Knowledge: None
Enforced Prerequisite: None
Recommended Preparation for Those Without Required Knowledge: None
Link to Past Course: N/ALectures will cover the basic math concepts and we will then explore use-cases in robotics as part of the five homework assignments. Including LDA based recognition, plane estimation in point clouds, path estimation and smoothing, and path planning.
Required Knowledge: Since this is a graduate course, we are quite loose with prerequisites. Programming in Python/Numpy and basic math knowledge is assumed.
Enforced Prerequisite: None.
Recommended Preparation for Those Without 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.
Link to Past Course: http://www.hichristensen.com/CSE276C-22/
CSE 276E - Robotic Sys Design & Implemnt with Prof. Steve Swanson
Description: End-to-end system design of embedded electronic systems including PCB design and fabrication, software control system development, and system integration. Program or materials fees may apply.
Required Knowledge: N/A
Enforced Prerequisite: None.
Recommended Preparation for Those Without Required Knowledge: N/A
Link to Past Course: https://sites.google.com/a/eng.ucsd.edu/quadcopterclass/
CSE 291 (A00) - Programmers are People Too: Research Methods for User-Centered Programming Language Design 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: Significant experience programming in several different languages.
Enforced Prerequisite: None.
Recommended Preparation for Those Without Required Knowledge: N/A
Link to Past Course: https://cseweb.ucsd.edu/~mcoblenz/teaching/291I_fall2022/
CSE 291 (B00) - Generative AI with Prof. Rose Yu
Description: Generative AI are unsupervised machine learning methods that can create a wide variety of data, such as images, videos, audio, text, and 3D models. Deep generative models are the fundamental tools behind generative AI. They combine the generality of probabilistic reasoning with the scalability of deep learning. This course will study the probabilistic foundations and learning algorithms in generative AI, 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: Machine learning, deep learning and statistical inference
Enforced Prerequisite: Yes. CSE 250A/151B/251B or equivalent.
Recommended Preparation for Those Without Required Knowledge: N/A
Link to Past Course: https://sites.google.com/view/
cse291 CSE 291 (C00) - Computational Robust Statistics with Prof. Daniel Kane
Description: Robust statistics is the study of which statistical estimation tasks can be performed when a small but constant fraction of the input data is adversarially corrupted. While the information-theoretic foundations of this area have been well understood since the 60s, the algorithms implicit in their techniques were not computationally feasible for even very basic high dimensional problems. In fact for many years the state of the art for high dimensional robust statistics required a trade off between low error and computational efficiency. This changed in 2016 with the first papers achieving dimension-independent error in polynomial time. This course will cover these techniques and their improvements over the intervening years on the design and analysis of computationally efficient robust statistics algorithms.
Required Knowledge: This course requires a high degree of mathematical maturity. In terms of specific requirements, the student will need to have a facility with the basics of probability and statistics, linear algebra (ideally including tensors), and algorithms (including the basics of linear programming and semidefinite programming).
Enforced Prerequisite: None.
Recommended Preparation for Those Without Required Knowledge: See course materials for Math 180, Math 18, CSE 202.
Link to Past Course: N/A
CSE 291 (D00) - 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: Experience with operating systems (either in an undergraduate or graduate-level OS course) and experience reading research papers.
Enforced Prerequisite: Yes. CSE 221 or instructor permission.
Recommended Preparation for Those Without Required Knowledge: Take CSE 221
- Spring 2023 Graduate Course Information
-
This is historical data. This page serves the purpose to help graduate students understand each graduate course offered during Spring 2023.
CSE 205A - Logic in Computer Science with Prof. Victor Vianu
Description: The goal of this course is to introduce students to mathematical logic as a tool in computer science. After covering basic material on propositional and predicate logic, the course presents the foundations of finite model theory and descriptive complexity. Other topics, including temporal logic, model checking, and reasoning about knowledge and belief, will be discussed as time allows. Evaluation is based on homework sets and a take-home final.
Required Knowledge: Basic computability and complexity theory (CSE 200 or equivalent)
Enforced Prerequisite: Yes. CSE 200 or approval of the instructor.
Recommended Preparation for Those Without Required Knowledge: Sipser, Introduction to the Theory of Computation.
Link to Past Course: N/A
CSE 207A - Modern Cryptography with Prof. Mihir Bellare
Description: This course is an introduction to modern cryptography emphasizing proofs of security by reductions. Topics include block ciphers, hash functions, pseudorandom functions, symmetric encryption, message authentication, RSA, asymmetric encryption, digital signatures, key distribution and protocols. We will introduce the “provable security” approach, formally defining security for various primitives via games, and then proving that schemes achieve the defined goals. We adopt a “theory brought to practice” viewpoint, focusing on cryptographic primitives that are used in practice and showing how theory leads to higher-assurance real world cryptography.
Required Knowledge: The course needs the ability to understand theory and abstractions and do rigorous mathematical proofs.
Minimal requirements are equivalent of CSE 21, 101, 105 and probability theory. Better preparation is CSE 200.Enforced Prerequisite: None enforced, but CSE 21, 101, and 105 are highly recommended.
Recommended Preparation for Those Without Required Knowledge: Look at syllabus of CSE 21, 101 and 105 and cover the textbooks.
Link to Past Course: https://cseweb.ucsd.edu//~
mihir/cse207/index.html 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/eng.ucsd.edu/cse-218-spring-2020/home
CSE 222A - Computer Communication Networks with Prof. George Porter
Description:
CSE 222A is a graduate course on computer networks. The continued exponential growth of the Internet has made the network an important part of our everyday lives. Companies use the network to conduct business, doctors to diagnose medical issues, etc. This course will provide a broad understanding of exactly how the network infrastructure supports distributed applications. Topics covered in the course include: Internet architecture, Internet routing, Software-Defined Networking, datacenters, content distribution networks, and peer-to-peer systems.
This is a research-oriented course focusing on current and classic papers from the research literature. Further, all students will work on an original research project, culminating in a project writeup and conference-style presentation. In the past, the very best of these course projects have resulted (with additional work) in publication in top conferences.
As with many other research seminars, the course will be predominately a discussion of a set of research papers. However, we will also discuss the origins of these research projects, the impact that they had on the research community, and their impact on industry (spoiler alert: the impact on industry generally is hard to predict).
Note that this class is not a "lecture" class, but rather we will be actively discussing research papers each class period.
Required Knowledge: An undergraduate level networking course is strongly recommended (similar to CSE 123 at UCSD). Although this perquisite is strongly recommended, if you have not taken a similar course we will provide you with access to readings in an undergraduate networking textbook so that you can catch up in your own time.
Enforced Prerequisite: None.
Recommended Preparation for Those Without Required Knowledge: You will have to essentially self-study the equivalent of CSE 123 in your own time to keep pace with the class.
Link to Past Course: https://cseweb.ucsd.edu/~
schulman/class/cse222a_w22/ CSE 231 - Compiler Construction with Prof. Joe Politz
Description: Students will work individually and in groups to construct and measure pragmatic approaches to compiler construction and program optimization. The course will be project-focused with some choice in which part of a compiler to focus on. Topics may vary depending on the interests of the class and trajectory of projects. Generally there is a focus on the runtime system that interacts with generated code (e.g. garbage collection, standard library, user interface, interactive programming).
Required Knowledge: Experience programming in a structurally recursive style as in Ocaml, Haskell, or similar; experience programming functions that interpret an AST; experience writing code that works with pointer representations; an understanding of process and memory layout.
Enforced Prerequisite: Yes. CSE 130/CSE 230 or equivalent (undergraduate programming languages)
Recommended Preparation for Those Without Required Knowledge: The first few assignments of this course are excellent preparation: https://ucsd-cse131-f19.github.io/
Link to Past Course: https://ucsd-cse231-s22.github.io/
CSE 237D - Design Automation & Prototyping with Prof. Ryan Kastner
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: None.
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://kastner.ucsd.edu/ryan/cse-237d-embedded-system-design/
CSE 245 - Comp Aid Circuit Simulation & Verification with Prof. CK Cheng
Description: This course is about computer algorithms, numerical techniques, and theories used in the simulation of electrical circuits. This is a project-based course. We will cover the fundamentals and explore the state-of-the-art approaches.
Required Knowledge: Linear algebra.
Enforced Prerequisite: None.
Recommended Preparation for Those Without Required Knowledge: Linear algebra.
Link to Past Course: https://cseweb.ucsd.edu//classes/wi13/cse245-b/
CSE 251A - ML: Learning Algorithms with Prof. Jingbo Shang
Description: The goal of this class is to provide a broad introduction to machine learning at the graduate level. The topics covered in this class include some topics in supervised learning, such as k-nearest neighbor classifiers, linear and logistic regression, decision trees, boosting and neural networks, and topics in unsupervised learning, such as k-means, singular value decompositions, and hierarchical clustering.
The topics covered in this class will be different from those covered in CSE 250A. In addition to the actual algorithms, we will be focusing 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: The topics will be roughly the same as my CSE 151A (https://shangjingbo1226.github.io/teaching/2022-spring-CSE151A-ML). The grad version will have more technical content become required with more comprehensive, difficult homework assignments and midterm. Also higher expectation for the project.
CSE 251B - ML: Neural Networks/Pattern Recognition with Prof. Rose Yu
Description: This course covers the fundamentals of deep neural networks. We introduce multi-layer perceptrons, back-propagation, and automatic differentiation. We will also discuss Convolutional Neural Networks, Recurrent Neural Networks, Graph Neural Networks, and Generative Adversarial Networks. The course will be a combination of lectures, presentations, and machine learning competitions.
Required Knowledge: Python, Linear Algebra.
Enforced Prerequisite: Yes. CSE 251A.
Recommended Preparation for Those Without Required Knowledge: N/A
Link to Past Course: N/A
CSE 252D - Advanced Computer Vision with Prof. Manmohan Chandraker
Description: This course will cover advanced concepts in computer vision and focus on recent developments in the field. Example topics include 3D reconstruction, object detection, semantic segmentation, reflectance estimation and domain adaptation. The class will be composed of lectures and presentations by students, as well as a final exam.
Required Knowledge: Previous experience with computer vision and deep learning is required. Programming experience in Python is required.
Enforced Prerequisite: Yes, CSE 252A, 252B, 251A, 251B, or 254. Students who do not meet the prerequisite should: 1) add themselves to the WebReg waitlist, and 2) email the instructor with the subject “SP23 CSE 252D: Request to enroll.” The email should contain the student's PID, a description of their prior coursework, and project experience relevant to computer vision.
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/~
mkchandraker/classes/CSE252D/ Spring2022/ CSE 255 - Data Mining & Analytics with Prof. Yoav Freund
Description:
Required Knowledge:
Enforced Prerequisite:
Recommended Preparation for Those Without Required Knowledge:
Link to Past Course:
CSE 256 - Statistical Natural Language Proc with Prof. Ndapa Nakashole
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 statistical techniques for the automatic analysis of natural language data. Topics covered include: large language models, text classification, and question answering. The course is project-based.
Required Knowledge: N/A
Enforced Prerequisite: None.
Recommended Preparation for Those Without Required Knowledge: N/A
Link to Past Course: N/A
CSE 273 - Computational Photography with Prof. Ben Ochoa
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/classe
s/wi22/cse273-a/ CSE 276D - Healthcare Robotics with Prof. Laurel Riek
Description: Robotics has the potential to improve well-being for millions of people, support caregivers, and aid the clinical workforce. This course brings together engineers, scientists, clinicians, and end-users to explore this exciting field. It is project-based and hands on, and involves incorporating stakeholder perspectives to design and develop prototypes that solve real-world problems. Students will be exposed to current research in healthcare robotics, design, and the health sciences.
Required Knowledge: This course will involve design thinking, physical prototyping, and software development. Students with backgrounds in engineering should be comfortable with building and experimenting within their area of expertise. (e.g., CSE students should be experienced in software development, MAE students in rapid prototyping, etc.). Students with backgrounds in social science or clinical fields should be comfortable with user-centered design. Students should be comfortable reading scientific papers, and working with students and stakeholders from a diverse set of backgrounds.
Enforced Prerequisite: None.
Recommended Preparation for Those Without Required Knowledge: Human Robot Interaction (CSE 276B), Human-Centered Computing for Health (CSE 290), Design at Large (CSE 219), Haptic Interfaces (MAE 207), Informatics in Clinical Environments (MED 265), Health Services Research (CLRE 252)
Link to Past Course: https://lriek.myportfolio.com/
healthcare-robotics-cse- 176a276d CSE 276E - Robotic Sys Design & Implemnt with Prof. Steve Swanson
Description: End-to-end system design of embedded electronic systems including PCB design and fabrication, software control system development, and system integration. Program or materials fees may apply.
Required Knowledge: N/A
Enforced Prerequisite: None.
Recommended Preparation for Those Without Required Knowledge: N/A
Link to Past Course: https://sites.google.com/a/eng.ucsd.edu/quadcopterclass/
CSE 283 - Genomics/proteomics/network biology with Prof. Vineet Bafna
Description: The goal of this course is to (a) introduce you to the data modalities common in OMICS 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 have a working knowledge of Bioinformatics algorithms, including material covered in CSE 182, CSE 202, or CSE 283.
Enforced Prerequisite: None.
Recommended Preparation for Those Without Required Knowledge: The course material in CSE282, CSE182, and CSE 181 will be helpful.
Link to Past Course: N/A
CSE 291 (A00) – Storage Systems with Prof. Keith Muller
Description: This course explores the architecture and design of the storage system from basic storage devices to large enterprise storage systems. Topics will be drawn from: storage device internal architecture (various types of HDDs and SSDs), storage device performance/capacity/cost tuning, I/O architecture of a modern enterprise server, data protection techniques (end-to-end data protection, RAID methods, RAID with rotated parity, patrol reads, fault domains), storage interface protocols overview (SCSI, ISER, NVME, NVMoF), disk array architecture (single and multi-controller, single host, multi-host, back-end connections, dual-ported drives, read/write caching, storage tiering), basics of storage interconnects, and fabric attached storage systems (arrays and distributed block servers). Performance under different workloads (bandwidth and IOPS) considering capacity, cost, scalability, and degraded mode operation. OS and CPU interaction with I/O (interrupt distribution and rotation, interfaces, thread signaling/wake-up considerations).
Required Knowledge: Solid background in Operating systems (Linux specifically) especially block and file I/O. Basic knowledge of network hardware (switches, NIC’s) and computer system architecture. Knowledge of working with measurement data in spreadsheets is helpful.
Enforced Prerequisite: Yes. CSE 120 or Equivalent and CSE 141/142 or Equivalent.
Recommended Preparation for Those Without Required Knowledge: CSE 120 or Equivalent Operating Systems course, CSE 141/142 or Equivalent Computer Architecture Course.
Link to Past Course: N/A
CSE 291 (B00) - Security, Privacy, and US Law with Prof. Stefan Savage
Description: This course will explore the intersection of the technical and the legal around issues of computer security and privacy, as they manifest in the contemporary US legal system. The goal of the course is multifold: First, to provide a better understanding of how key portions of the US legal system operate in the context of electronic communications, storage and services. Second, to provide a pragmatic foundation for understanding some of the common legal liabilities associated with empirical security research (particularly laws such as the DMCA, ECPA and CFAA, as well as some understanding of contracts and how they apply to topics such as "reverse engineering" and Web scraping). Third, we will explore how changes in technology and law co-evolve and how this process is highlighted in current legal and policy "fault lines" (e.g., around questions of content moderation). This will very much be a readings and discussion class, so be prepared to engage if you sign up.
Required Knowledge: None, but it we are going to assume you understand enough about the technical aspects of security and privacy (e.g., such as having taking an undergraduate class in security) that we, at most, need to do cursory reviews of any technical material.
Enforced Prerequisite: None.
Recommended Preparation for Those Without Required Knowledge: Review lectures/readings from CSE127.
Link to Past Course: https://cseweb.ucsd.edu//
classes/wi21/cse291-c/ CSE 291 (C00) - Critical Analysis and Computing with Prof. Pat Pannuto
Description: This course aims to introduce computer scientists and engineers to the principles of critical analysis and to teach them how to apply critical analysis to current and emerging technologies. The class is highly interactive, and is intended to challenge students to think deeply and engage with the materials and topics of discussion. The course will include visits from external experts for real-world insights and experiences. Students will learn the scientific foundations for research humanities and social science, with an emphasis on the analysis, design, and critique of qualitative studies. Participants will also engage with real-world community stakeholders to understand current, salient problems in their sphere. From these interactions, students will design a potential intervention, with an emphasis on the design process and the evaluation metrics for the proposed intervention.
Required Knowledge: The intended audience of this course is graduate or senior students who have deep technical knowledge, but more limited experience reasoning about human and societal factors. This course aims to be a bridge, presenting an accelerated introduction to contemporary social science and critical analysis in a manner familiar to engineering scholars.
Enforced Prerequisite: None.
Recommended Preparation for Those Without Required Knowledge: N/A
Link to Past Course: N/A
CSE 291 (D00) - Big Data Science and Knowledge with Prof. Nuno Bandeira
Description: Computational analysis of massive volumes of data holds the potential to transform society. However, the computational translation of data into knowledge requires more than just data analysis algorithms – it also requires proper matching of data to knowledge for interpretation of the data, testing pre-existing knowledge and detecting new discoveries. This course will cover these data science concepts with a focus on the use of biomolecular big data to study human disease – the longest-running (and arguably most important) human quest for knowledge of vital importance. Building on the growing availability of hundreds of terabytes of data from a broad range of species and diseases, we will discuss various computational challenges arising from the need to match such data to related knowledge bases, with a special emphasis on investigations of cancer and infectious diseases (including the SARS-CoV-2/COVID19 pandemic). Prior knowledge of molecular biology is not assumed and is not required; essential concepts will be introduced in the course as needed.
Required Knowledge: CSE 100 (Advanced data structures) and CSE 101 (Design and analysis of algorithms) or equivalent strongly recommended; Knowledge of graph and dynamic programming algorithms; and Experience with C++, Java or Python programming languages.
Enforced Prerequisite: None.
Recommended Preparation for Those Without Required Knowledge: Read CSE101 or online materials on graph and dynamic programming algorithms.
Link to Past Course: https://canvas.ucsd.edu/
courses/36683 CSE 291 (E00) – Physics Simulation with Prof. Albert Chern
Description: The course covers the mathematical and computational basis for various physics simulation tasks including 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.
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/ Link to Past Course: N/A
CSE 291 (F00) - Unsupervised Learning with Prof. Sanjoy Dasgupta
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 250B 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 291 (H00) - Introduction to Computing Education Research with Prof. Gerald Soosai Raj
Description: Computer Science as a major has high societal demand. In addition, computer programming is a skill increasingly important for all students, not just computer science majors. However, computer science remains a challenging field for students to learn. This course examines what we know about key questions in computer science education: Why is learning to program so challenging? What pedagogical choices are known to help students? What barriers do diverse groups of students (e.g., non-native English speakers) face while learning computing? How do those interested in Computing Education Research (CER) study and answer pressing research questions?
This course surveys the key findings and research directions of CER and applications of those findings for secondary and post-secondary teaching contexts. We study the development of the field, current modes of inquiry, the role of technology in computing, student representation, research-based pedagogical approaches, efforts toward increasing diversity of students in computing, and important open research questions. CER is a relatively new field and there is much to be done; an important part of the course engages students in the design phases of a computing education research study and asks students to complete a significant project (e.g., a review of an area in computing education research, designing an intervention to increase diversity in computing, prototyping of a software system to aid student learning).
Required Knowledge: None.
Enforced Prerequisite: None.
Recommended Preparation for Those Without Required Knowledge: Basic understanding of descriptive and inferential statistics is recommended but not required.
Link to Past Course: https://sites.google.com/eng.ucsd.edu/cse-291-190-cer-winter-2021/
CSE 291 (I00) - Advanced Data-Driven Text Mining with Prof. Jingbo Shang
Description: 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, and 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: None.
Recommended Preparation for Those Without Required Knowledge: Intro-level AI, ML, Data Mining courses.
Link to Past Course: https://shangjingbo1226.github.io/teaching/2020-fall-CSE291-TM
CSE 291 (J00) - Human-Centered Computing for Health with Prof. Nadir Weibel
Description: HC4H is an interdisciplinary course that brings together students from Engineering, Design, and Medicine, and exposes them to designing technology for health and healthcare. The course is focused on studying how technology is currently used in healthcare and identify opportunities for novel technologies to be developed for specific health and healthcare settings.
In the first 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 room 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.
Successful students in this class often follow up on their design projects with the actual development of an HC4H project and its deployment within the healthcare setting in the following quarters.
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: N/A
Link to Past Course: http://hc4h.ucsd.edu/
- Winter 2023 Graduate Course Information
-
This is historical data. This page serves the purpose to help graduate students understand each graduate course offered during Winter 2023.
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
- Fall 2022 Graduate Course Information
-
This is historical data. This page serves the purpose to help graduate students understand each graduate course offered during Fall 2022.
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//~visc
omp/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 executionCSE 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
CSE 291 (J00) - Art and Science of Architecting Secure Computer Systems with Prof. Earlence Fernandes
Description: This advanced graduate course will focus on techniques for building secure computer systems, with a special focus on clean-slate design. That is, we will learn about architecting secure systems from scratch, without being shackled by the chains of “backward compatibility”. Topics covered will be a range from distributed authentication and authorization, permission systems, trusted hardware, the use of applied cryptography in systems and programming language techniques in the service of security. Domain areas for applying the above ideas will include: internet of things, cloud and networked systems, mobile systems, augmented and virtual reality systems.
Required Knowledge: Undergraduate exposure to operating systems, algorithms, data structures, and undergrad computer security. Graduate-level exposure to operating systems, programming languages is a plus, but not required.
Enforced Prerequisite: Yes. CSE 127 or equivalent.
Recommended Preparation for Those Without Required Knowledge: CSE 127, undergrad OS, data structures, computer architecture.
Link to Past Course: https://cseweb.ucsd.edu/~efernandes/cse291fa22/cse291.html
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
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. - Spring 2022 Graduate Course Information
-
This is historical data. This page serves the purpose to help graduate students understand each graduate course offered during Spring 2022.
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 Symmetric cryptography: stream ciphers, block ciphers, hash functions, modes of operation Public-key cryptography and cryptanalysis: RSA, Diffie-Hellman, DSA Algorithmic techniques in cryptanalysis Secure channels, TLS, and cryptography in practiceRequired 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: None.
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://kastner.ucsd.edu/ryan/cse-237d-embedded-system-design/
This course is independent of CSE 207, modern cryptography. Some of the material will overlap, but neither is a prerequisite for the other.
Required Knowledge: There are no formal prerequisites, but you should have mathematical maturity equivalent to having taken graduate algorithms, and we will have programming assignments in Python/Sage.
Enforced Prerequisite: None.
Recommended Preparation for Those Without Required Knowledge: See above
Link to Past Course: https://cseweb.ucsd.edu/classes/fa20/cse291-e/
CSE 223B - Distributed Computing & Systems with Prof. Alex Snoeren
Description: CSE 223B is a 4-unit graduate subject with lectures, paper discussions, a midterm, a final, and a major term research project culminating in writing a research paper of your own. It will present abstractions and implementation techniques that facilitate the design of distributed systems–including both operating systems and sophisticated Internet servers–that can deal with the demands of real-world workloads. Topics will include efficient operating system primitives, high-performance network servers, load shedding, storage systems, security, and fault tolerance.
Required Knowledge: CSE 221 (or consent of instructor) and substantial programming experience for lab assignments and term project. Note that CSE 223A is not a prerequsite. However, those interested in the theoretical underpinnings of distributed computation are encouraged to take CSE223A as well. CSE223A and CSE223B may be taken in any order.
Enforced Prerequisite: Yes. CSE 221 or consent of instructor.
Recommended Preparation for Those Without Required Knowledge: CSE221 / CSE222A
Link to Past Course: http://cseweb.ucsd.edu/classes/sp21/cse223B-a/
CSE 227 - Computer Security with Prof. Deian Stefan
Description: This course focuses on computer security, exploring a range of topics – from systems security to web security, edge security, and privacy – to illustrate some of the modern research challenges in the area and the standards for advancement. It is not designed to be a tutorial course, but rather to give students the context to understand current security research and evaluate their interest in the field. The course will examine both the defensive and offensive side of the field. At the conclusion of the course, the students will have the foundation to conduct research in computer security and to apply the latest security research to a particular area of practice.
Required Knowledge: Undergrad security. And at least some background in OS, PL, and compilers.
Enforced Prerequisite: None.
Recommended Preparation for Those Without Required Knowledge: Look at the past course and study ahead.
Link to Past Course: https://cseweb.ucsd.edu/~dstefan/cse227-spring21/
CSE 231 - Advanced Compiler Design with Prof. Joseph Politz
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.github.io/) and CSE 130/230. This includes experience programming in a structurally recursive style as in Ocaml, Haskell, or similar; ability to implement syntax transformations/code generation up to a simple calling convention; ability to write C code that works with pointer representations; an understanding of process and memory layout.
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.github.io/).
Link to Past Course: https://ucsd-cse231-w21.github.io/
CSE 233 - Database Theory with Prof. Victor Vianu
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 237D - Design Automation & Prototyping with Prof. Ryan Kastner
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.
CSE 240A - Princ/Computer Architecture with Prof. Dean Tullsen
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 244A - VLSI Test with Prof. Alex Orailoglu
Description: Design for test, testing economics, defects, failures and faults, fault models, fault simulation, automatic test pattern generation, functional testing, memory, PLA, FPGA, microprocessor test, and fault diagnosis.
Required Knowledge: Undergraduate level knowledge in digital design
Enforced Prerequisite: None.
Recommended Preparation for Those Without Required Knowledge: Please review Undergraduate level knowledge in digital design
Link to Past Course: https://cseweb.ucsd.edu/classes/fa19/cse244A-a/
CSE 252D - Advanced Computer Vision with Prof. Manmohan Chandraker
Description: This course will cover advanced concepts in computer vision and focus on recent developments in the field. Example topics include 3D reconstruction, object detection, semantic segmentation, action recognition, reflectance estimation and domain adaptation. The class will be composed of lectures by the instructor, but with a participation element, too, where students will engage through lightning presentations. Grading will be based on assignments, presentations, and a final exam.
Required Knowledge: Previous experience with computer vision and deep learning are required. Programming experience in Python is required.
Enforced Prerequisite: Yes. Students who have taken one of the following courses are allowed to enroll directly: 252A, 252B, 251A, 251B, or 254. For students who do not meet that criterion, please email the instructor with the subject “SP22 CSE 252D: Request to enroll.” The email should contain a description of their prior coursework and project experience relevant to computer vision.
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/~mkchandraker/classes/CSE252D/Spring2021/
CSE 254 - Statistical Learning with Prof. Sanjoy Dasgupta
Description: This is a reading course that will investigate formalisms of "neural machines"; these include the Perceptron, the Hopfield net, Kohonen's self-organizing maps, recurrent neural nets, Valiant's neuroidal nets, echo state machines, liquid state machines, spiking neural networks, Kanerva's hyperdimensional computers, transformers, and neural Turing machines, among others.
The ultimate goal is to develop models of biological/digital systems that are able to learn from experience and adapt to changing environments. This is quite different from the Turing machine model, which is geared towards computing individual functions. To quote from Dune: "The mystery of life is not a problem to solve, but a reality to experience."
We'll begin with a few lectures that present an overview of this field. In the remaining meetings, each participant in the course will present a paper. There won't be any other requirements.
The course is intended for theory-minded students who are interested in this research area.
Required Knowledge: Sufficient mathematical background to understand theoretical papers in this area.
Enforced Prerequisite: None.
Recommended Preparation for Those Without Required Knowledge: N/A
Link to Past Course: N/A
CSE 255 - Data Mining & Analytics with Prof. Yoav Freund
Description: The last decade has seen an explosion in the size and complexity of datasets. Many popular data analysis software packages: R, Matlab, SPSS, etc. are not adequate when the data size is many times the memory size. New packages such as Spark and Tensorflow have been developed that process massive data using commodity computers in the cloud. In this class, you will learn the statistical and engineering foundations of big data Analytics.
Required Knowledge: This class has two pre-requisites:
**Probability and Statistics:** Random Variables, Expectation, Standard Deviation, PCA, linear regression, t-test. **Python programming:** numpy, pandas, matplotlib, jupyter notebooks.Link to Past Course: https://cseweb.ucsd.edu//~nnakashole/teaching/256_sp19.html
Link to Past Course: https://sites.google.com/eng.ucsd.edu/dsc291-sp20/home
CSE 256 - Statistical Natural Lang Proc with Prof. Ndapa Nakashole
Description: Natural language processing (NLP) is a field of AI which aims to equip computers with the ability to intelligently process natural (human) language. This course will explore statistical techniques for the automatic analysis of natural language data. Specific topics covered include: probabilistic language models, which define probability distributions over text sequences; text classification; sequence models; parsing sentences into syntactic representations; machine translation, and machine reading.
Required Knowledge: N/A
Enforced Prerequisite: None.
Recommended Preparation for Those Without Required Knowledge: N/A
Enforced Prerequisite: Yes. CSE 103 or equivalent.
Recommended Preparation for Those Without Required Knowledge: If students do not have the required knowledge, I recommend they do not take the class this Spring. Classes that they can take in order to be ready in a future iteration of the course:
For probability and Statistics: CSE103 or edX or probability and statistics for data science: https://www.edx.org/course/probability-and-statistics-in-data-science-using-p For Python: DSC10: Principles of Data Science or edX: Python for Data Science https://www.edx.org/course/python-for-data-science-2CSE 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/cse260fall2020/home
CSE 276D - Healthcare Robotics with Prof. Laurel Riek
Description: Robotics has the potential to improve well-being for millions of people, support caregivers, and aid the clinical workforce. This course brings together engineers, scientists, clinicians, and end-users to explore this exciting field. It is project-based and hands on, and involves incorporating stakeholder perspectives to design and develop prototypes that solve real-world problems. Students will be exposed to current research in healthcare robotics, design, and the health sciences.
Required Knowledge: This course will involve design thinking, physical prototyping, and software development. Students with backgrounds in engineering should be comfortable with building and experimenting within their area of expertise. (e.g., CSE students should be experienced in software development, MAE students in rapid prototyping, etc.). Students with backgrounds in social science or clinical fields should be comfortable with user-centered design. Students should be comfortable reading scientific papers, and working with students and stakeholders from a diverse set of backgrounds.
Enforced Prerequisite: None.
Recommended Preparation for Those Without Required Knowledge: Human Robot Interaction (CSE 276B), Human-Centered Computing for Health (CSE 290), Design at Large (CSE 219), Haptic Interfaces (MAE 207), Informatics in Clinical Environments (MED 265), Health Services Research (CLRE 252)
Link to Past Course: N/A
CSE 283 - Genomics/proteomics/netwk biol with Prof. Vineet Bafna
Description: The goal of this course is to (a) introduce you to the data modalities common in OMICS 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 (e.g. 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: Basics Bioinformatics, statistics, and algorithms. We recommend that students have completed the equivalent of Math 283, CSE282, CSE202
Enforced Prerequisite: None.
Recommended Preparation for Those Without Required Knowledge: Review course material for CSE202, CSE282
Link to Past Course: N/A
CSE 284 - Personal Genomics/Bioinformats 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) - Structured Prediction for Natural Language Processing with Prof. Taylor Berg-Kirkpatrick
Description: This course will explore machine learning techniques for automatic analysis of natural (human) language data. The dominant paradigm will be structured probabilistic modeling techniques , with a split focus between supervised and unsupervised methods. We will cover n-gram and neural language models, seq2seq models, transformers, self-supervised pre-training, variational autoencoders and variational amortized inference, as well as conditional random fields for sequence tagging, segmentation, and syntactic parsing. Structured Prediction for NLP is a lab-based course. Instead of homework assignments and exams, you will complete four hands-on coding projects.
Required Knowledge: This course assumes a strong background in probability, strong background in algorithms and dynamic programming, some background in probabilistic graphical models, and a strong programming ability in a framework like PyTorch. Prior experience with linguistics or natural languages is helpful, but not required. There will be a lot of statistics, algorithms, and coding in this class. Recommended prerequisites are courses on discrete mathematics, probability, statistics, probabilistic graphical models, algorithms, and linear algebra.
Enforced Prerequisite: None.
Recommended Preparation for Those Without Required Knowledge: Review probability theory (e.g. conditional independence, probabilistic graphical models) and practice dynamic programming (e.g. Viterbi / forward-backward algorithms). Get familiar with a neural framework like PyTorch by looking at online tutorials.
Link to Past Course: N/A
CSE 291 (B00) - Big Data Science and Knowledge with Prof. Nuno Bandeira
Description: Computational analysis of massive volumes of data holds the potential to transform society. However, the computational translation of data into knowledge requires more than just data analysis algorithms – it also requires proper matching of data to knowledge for interpretation of the data, testing pre-existing knowledge and detecting new discoveries. This course will cover these data science concepts with a focus on the use of biomolecular big data to study human disease – the longest-running (and arguably most important) human quest for knowledge of vital importance. Building on the growing availability of hundreds of terabytes of data from a broad range of species and diseases, we will discuss various computational challenges arising from the need to match such data to related knowledge bases, with a special emphasis on investigations of cancer and infectious diseases (including the SARS-CoV-2/COVID19 pandemic). Prior knowledge of molecular biology is not assumed and is not required; essential concepts will be introduced in the course as needed.
Required Knowledge:
CSE 100 (Advanced data structures) and CSE 101 (Design and analysis of algorithms) or equivalent strongly recommended Knowledge of graph and dynamic programming algorithms Experience with C++, Java or Python programming languagesIn this course, we will read and discuss books and articles on these topics, interspersed with guest speakers who have unique insights into the technological, scientific, and policy-making aspects of environmental computing impact. In addition to actively participating in class discussion, students will undertake a substantial research project to investigate some aspect of the environmental impact of computing, culminating in a research paper and poster presentation on the project's topic.
Required Knowledge: N/A
Enforced Prerequisite: None.
Recommended Preparation for Those Without Required Knowledge: N/A
Link to Past Course: A similar course aimed at undergraduates is available here: https://canvas.ucsd.edu/courses/25050 Note that the graduate version of this course will involve significantly more out-of-class reading
- How to communicate issues related to environmental impacts to the public?
- What research ideas and techniques can help to mitigate these environmental effects?
Enforced Prerequisite: None.
Recommended Preparation for Those Without Required Knowledge: Read CSE101 or online materials on graph and dynamic programming algorithms.
Link to Past Course: https://canvas.ucsd.edu/courses/26671
CSE 291 (C00) - Human-Centered Computing for Health (HC4H) with Prof. Nadir Weibel
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: http://hc4h.ucsd.edu/
CSE 291 (D00) - Physics Simulation with Prof. Steven Rotenberg
Description: This class will cover various topics in physics simulation such as solid mechanics, fluid dynamics, and articulated rigid body dynamics. The main focus will be on geometrically detailed 3D mechanics simulations and the data structures and computational algorithms used. Additional topics may include vehicle dynamics and astrophysics. The class will involve several programming projects.
Required Knowledge: There will be several programming projects that will require fast runtime performance (C++ recommended) and 3D visualization (such as OpenGL). Basic undergraduate physics is required as well.
Enforced Prerequisite: None.
Recommended Preparation for Those Without Required Knowledge: A basic 3D renderer in OpenGL (or similar) such as one that would be built in CSE167.
Link to Past Course: https://canvas.ucsd.edu/courses/26672
CSE 291 (E00) - 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 (F00) - The Environmental Impact of Modern Computing with Prof. George Porter
Description: Computing underpins much of modern life. Traditional devices such as laptops, desktops, smartphones, and tablets are now joined by compute-enabled smart cars, appliances, and the so-called "Internet of Things." Increasingly, these devices are enabled by cloud computing, hosted in large-scale Internet data centers. The cloud hosts social media, entertainment, telepresence, and video and audio conferencing. Furthermore, cloud-hosted "AI" and "ML" have the potential to reinvent many traditional industries such as travel and logistics.
In this class, we will take a critical look at the 360-degree impact of modern computing technologies on the environment, asking the following questions:
Where do these devices come from? What is the environmental impact of their manufacturing? How are these devices powered? What are their energy demands and where does that energy come from? Where do these devices go when we're done using them? What is e-Waste? What is the "circular economy?" What is the role of public policy and governments in managing and mitigating these environmental effects? - Winter 2022 Graduate Course Information
-
This is historical data. This page serves the purpose to help graduate students understand each graduate course offered during Winter 2022.
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 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
Link to Past Course: https://cseweb.ucsd.edu/classes/wi20/cse221-a/
CSE 222A - Computer Communication Networks with Prof. Aaron Shalev
Description: CSE 222A is a graduate course on computer networks. The continued exponential growth of the Internet has made the network an important part of our everyday lives. Companies use the network to conduct business, doctors to diagnose medical issues, etc. This course will provide a broad understanding of exactly how the network infrastructure supports distributed applications. Topics covered in the course include: Internet architecture, Internet routing, Software-Defined Networking, datacenters, content distribution networks, wireless communication and peer-to-peer systems.
This is a research-oriented course focusing on current and classic papers from the research literature. Further, all students will work on an original research project, culminating in a project writeup and conference-style presentation. In the past, the very best of these course projects have resulted (with additional work) in publication in top conferences.
As with many other research seminars, the course will be predominately a discussion of a set of research papers. However, we will also discuss the origins of these research projects, the impact that they had on the research community, and their impact on industry (spoiler alert: the impact on industry generally is hard to predict).
Required Knowledge: Undergraduate networking course or equivalent
Enforced Prerequisite: None.
Recommended Preparation for Those Without Required Knowledge: We will provide links to reading material that can be used to catch up. However, this will require significant extra effort beyond the normal class work.
Link to Past Course: https://cseweb.ucsd.edu/~schulman/class/cse222a_s21/
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. Java programming, introductory database course or equivalent experience with SQL databases.
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 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 (processor, DSP, or ASPs). 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 between different technology choices
Required Knowledge: The course does not have any official graduate course as a prerequisite. However, it assumes 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).
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/wi20/cse237A-a/schedule.html
CSE 240C - Advanced Microarchitecture with Prof. Samira Mirbagher
Description: 240c is primarily a paper-driven course and has one project. This course has been presented before. To better accommodate for a remote class, changes are applied to improve learning quality online. You will be expected to read the papers before each class, turn in your paper summaries, and come prepared to participate in the discussion.
Computer architects have been striving to improve performance and efficiency since the first stored program computer was designed half a century ago. Superscalar and multithreading execution are key technique towards this aim but come with the cost of security and power. The course will explore microarchitectural approaches to improve performance, efficiency and security.Topics covered will include: Historical Perspective, Branch Prediction, ILP and Speculation, Multithreading, Thread-level speculation, Cache and Memory, Prefetching, Energy and Power, Fault Tolerance, Application-Specific Processors, Spatial/grid processing, GPU Architecture, Hardware security
Five elements will factor into your grade in this class: (1) Paper slides and presentations (2) Future work summaries (3) Participation (4) Project (5) Final exam. The schedule of papers will be posted on Piazza.1. Paper summaries (due via private piazza messages, 10 minutes before class (no late summaries accepted) -- a paper summary is no more than 1 page long (no more than 2 pages total for all papers for a particular day), and contains the following information: Summary of the paper [in the neighborhood of 2-3 sentences, everything else about 1 sentence each]; What is the most important result?; One strength of the paper; One weakness of the paper; One thing you didn't understand; If you wrote this paper, what would your next paper be about? (Don't overthink this -- if a question is inappropriate for the paper, skip it.)
2. Presentations. Each student will make a presentation of a particular topic to the class. Think of it as a mini research exam, where you become the expert on a topic, and lead discussion of a couple of papers. It is important that you not only establish yourself as an expert in the area, but also foster discussion among the class.
3. Participation. Each class will be a DISCUSSION of a particular set of papers. I expect each student to participate in, but not dominate, the conversations about the papers.
4. Projects -- more discussion of this on Piazza.
5. We will have a final exam. It will cover the papers you read during the quarter.
By the end of this course, you will gain a general knowledge of advanced microarchitecture designs and evaluation methodologies, as well as an in-depth understanding of one problem you pick for your project. You will also gain skills in critically reviewing papers and doing many gain experience on developing novel ideas that improve current studies.Required Knowledge: General Computer Architecture and C/C++ skills for the project.
Enforced Prerequisite: Yes. CSE 240A.
Recommended Preparation for Those Without Required Knowledge: Get a book on C++ and practice. Students must have taken 240a.
Link to Past Course: https://cseweb.ucsd.edu/classes/sp15/cse240C-a/papers.html
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: N/A
CSE 251A - ML: Learning Algorithms with Prof. Taylor Berg-Kirkpatrick
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 251B: Neural Networks for Pattern Recognition (AKA “Deep Learning”) with Prof. Gary Cottrell
Description: (Formerly CSE 253. Students cannot receive credit for both CSE 253 and CSE 251B) Neural networks have come back into fashion since 2012 - especially for computer vision - when a deep network won the ImageNet Large Scale Visual Recognition Challenge (ILSVRC). They are now also used for language translation (google translate), language generation (GPT-3), image generation, game playing, and speech recognition. This course covers perceptrons, logistic and softmax regression, multilayer networks and back propagation, deep learning, convolutional networks, recurrent nets, transformers, reinforcement learning, and some recent papers. The course is in a lecture format, but most of your learning will occur from doing programming assignments. The course will involve four programming assignments roughly every two weeks, a final project (done in teams), and two in-class midterms. A typical final project will replicate some recent work, perhaps on a different dataset. This course is like a full-time job – don’t take any other courses that are time-consuming at the same time.
Required Knowledge: Students should be fluent in linear algebra, vector calculus, probability and programming. They should know what gradient descent is.
Enforced Prerequisite: None.
Recommended Preparation for Those Without Required Knowledge: If you are missing the math background, you should acquire it via online courses or by taking classes at UCSD. This math background is essential. Look up gradient descent.
Link to Past Course: Here is the syllabus from CSE 253 (the prior course number): https://cseweb.ucsd.edu/~gary/253/CSE_253_syllabus_w20.pdf
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/wi21/cse252B-a/
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 layered materials, hair, volumes, caustics, with modern rendering algorithms. If you have taken CSE 168 and want more -- you should come! If not, no worries, we will try to cover the basics at the beginning.
Required Knowledge: Basic calculus and C++ programming.
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/~viscomp/classes/cse168/sp21/168.html
Alternatively, go through the "Ray Tracing in a Weekend" series https://raytracing.github.io/Link to Past Course: http://graphics.ucsd.edu/~henrik/courses/cse272/
CSE 273 - Computational Photography with Prof. Ben Ochoa
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/sp21/cse291-i/
CSE 274 - Discrete Differential Geometry (Selected Topics in Graphics) 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. CSE 167 is recommended.
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: http://kastner.ucsd.edu/ryan/cse237c/
CSE 276B - Human-Robot Interaction with Prof. Laurel Riek
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 the core computational, engineering, and design challenges and techniques in human-robot interaction (HRI). Course topics include: perception of people, shared autonomy and control, coordination and collaboration, and experimental robotics. We will review foundational and recent papers in the field, and engage in team-based projects with physical, mobile robots (COVID-permitting).
Required Knowledge: This class requires familiarity with programming and systems building. 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. Students should be comfortable reading and discussing scientific papers at the graduate level. Students with interests in human-centered research and practice, including design, are encouraged to take the course.
Enforced Prerequisite: None.
Recommended Preparation for Those Without Required Knowledge: N/A
Link to Past Course: N/A
CSE 276E - Robotic System Design & Implementation with Prof. Steven Swanson
Description: End-to-end system design of embedded electronic systems including PCB design and fabrication, software control system development, and system integration. The course is an intensive capstone project course that provides students a chance to integrate knowledge from a wide range of domains into a single project.
Required Knowledge: Basic electronics and intermediate C/C++ programming.
Enforced Prerequisite: None.
Recommended Preparation for Those Without Required Knowledge: Read through an undergraduate circuits textbook. If you don’t know how to program, you should not take the class.
Link to Past Course: https://sites.google.
com/a/eng.ucsd.edu/ quadcopterclass/ CSE 280A - Algorithms/Computational Biol with Prof. Vineet Bafna
Description: The course presents selected topics in Computational Molecular Biology, with an emphasis on designing algorithms for biological data analysis. We focus specifically on problems from Population genetics and (cancer) genomics.
Required Knowledge: The student should be comfortable with basic combinatorics and algorithms. Otherwise, the course is self-contained. No knowledge of biology is assumed, but the student must have an interest in learning some new topics, and sources of data in modern biology.
Enforced Prerequisite: None.
Recommended Preparation for Those Without Required Knowledge: One or more of the following classes would be great: CSE 101, CSE 202, CSE 181, CSE 282.
Link to Past Course: http://proteomics.ucsd.edu/vbafna/teaching-2/cse280a-algorithms-for-genetics/
CSE 282 - Bioinformatics II: Sequence and Structure Analysis - Methods and Applications 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 291 (1) - Case Studies in Innovation with Prof. Mohan Paturi - CANCELLED (as of 1/3/22)
Description: The course will consider technology areas (for example, facial recognition, quantum computing, carbon capture, and other areas) and study innovation. The study will include research directions and trends in a given technology area as well as start-up companies and use cases with a view towards the connection between the two. Students will be guided to select a technology topic and produce a case study. Students will present their findings in a public presentation and submit a paper.
Students who are interested in research, innovation, and entrepreneurism are encouraged to sign up for the course.
Required Knowledge: Familiarity with technology areas and research trends
Enforced Prerequisite: PhD standing required. All others, please submit an EASy request for approval to enroll.
Recommended Preparation for Those Without Required Knowledge: N/A
Link to Past Course: N/A
CSE 291 (2) - Unsupervised Learning with Prof. Sanjoy Dasgupta
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 250B/251A or CSE 258; but at the very least, an undergraduate-level background in probability, linear algebra, and algorithms is essential.
Enforced Prerequisite: None, but preparation above is expected.
Recommended Preparation for Those Without Required Knowledge: N/A
Link to Past Course: https://cseweb.ucsd.edu//~dasgupta/291f21/index.html
CSE 291 (3) - Advanced Statistical NLP with Prof. Ndapa Nakashole
Description: This is a research-oriented course on Statistical Natural Language Processing (NLP). There will be a few lectures at the beginning, and a paper discussion component that focuses on understanding and extending state-of-the-art machine learning algorithms for a series of important topics in NLP.
Required Knowledge: The course assumes knowledge of basic machine learning.
Enforced Prerequisite: None.
Recommended Preparation for Those Without Required Knowledge: N/A
Link to Past Course: https://cseweb.ucsd.edu//~nnakashole/teaching/291_sp18.html
CSE 291 (4) - 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 (5) - JIT Security with Prof. Deian Stefan
Description: This is an advanced topics graduate course on secure browser just-in-time (JIT) compilers. The goal of the class is to understand how modern JITs are designed and implemented, how attackers are exploiting bugs in JITs, and how to design more secure---even formally verified---JIT compilers. We will read research papers spanning systems security, programming languages, and formal methods. We will also read articles from the non-academic hacking community and parts of the Firefox, Chromium, and Safari codebases. Finally, we will work on an original research project spanning JIT attacks and defenses.
Required Knowledge: N/A
Enforced Prerequisite: None.
Recommended Preparation for Those Without Required Knowledge: Take CSE 127, CSE 227, or the equivalent.
Link to Past Course: N/A
CSE 291 (6) - Ransomware with Prof. Stefan Savage
Description: There are few classes of online attacks that have captured public attention more than "ransomware" -- attacks characterized by extorting victims around access to their own data. In this class, we'll explore the history and evolution of these attacks, their technical and operational underpinnings, and the range of defenses, and interventions that are employed (or have been proposed). The course will be built around readings and discussion that will try to cover the broad range of issues at play in this space -- technical, economic, legal, political, and social -- not limiting ourselves purely to academic computer science. Where possible and appropriate we will feature outside guest speakers with particular domain expertise.
Required Knowledge: None.
Enforced Prerequisite: None.
Recommended Preparation for Those Without Required Knowledge: Google "ransomware", read some articles, come with thoughts, questions and ideas
Link to Past Course: N/A
CSE 291 (7) - Cloud Application Dependability with Prof. YY Zhou.
Description: Dependability is critically important for today's systems and applications. This CSE291 course will cover topics ranging from cloud application monitoring, troubleshooting to also security. The format will include lectures by me, student presentations and discussions, and a couple of invited speakers from industry such as Splunk on relevant topics. In our class project, we will explore various ways to identify potential security issues among a real world cloud app of your choice.
Required Knowledge: CSE221 or equivalent
Enforced Prerequisite: None, but CSE 221 is recommended.
Recommended Preparation for Those Without Required Knowledge: CSE 221 reading list
Link to Past Course: N/A
CSE 291 (8) - ML Method for 3D Geometry 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
Link to Past Course: https://haosulab.github.io/ml-meets-geometry/WI21/index.html
CSE 291 (9) - 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 container 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.
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/cse291j-winter20/
CSE 291 (11) - Hyperdimensional Computing with Prof. Tajana Rosing
Description: This course will introduce students to hyperdimensional computing (HDC), an emerging research area at the intersection of theoretical neuroscience and hardware design. The course will cover the theoretical underpinnings of HDC as well as implementation in hardware, and will consist of a mix of lectures and presentations by students. Students who wish a letter grade in the course will need to complete a project related to HDC and turn in a 6-page conference-style paper describing the project.
Required Knowledge: The course will assume basic knowledge of statistics and probability as well as basic principles of hardware design.
Enforced Prerequisite: None.
Recommended Preparation for Those Without Required Knowledge: Review material on random variables, independence, and probability distributions. Review material on computer architecture and basics of digital design.
Link to Past Course: N/A
CSE 291 (12) - Anti-Social 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: Syllabus: https://docs.google.com/document/d/1_9vJDSBbiyXeoK6EXGAEE4_MlFR4z4n4B7QnNqoWp7s/edit?usp=sharing
CSE 291 (13) - Wireless and Communication in the Internet of Things with Prof. Pat Pannuto
Description: 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?).This class will focus on how an IoT system designer should choose and 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. 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: None.
Recommended Preparation for Those Without Required Knowledge: Review material from CSE123 Computer Networks (or similar) would be most helpful.
Link to Past Course: N/A
CSE 291 (14) - The Number Field Sieve Algorithm with Prof. Emmanuel Thome
Description: This course presents a detailed view of the Number Field Sieve algorithm, which is the most advanced algorithm to tackle two tasks of utmost importance in cryptanalysis: factoring large composite integers such as RSA moduli, and computing discrete logarithms in finite fields, such as in order to attack the Diffie-Hellman key exchange. The course will cover both the high-level aspects of the Number Field Sieve algorithm, as well as the numerous algorithms that are used throughout a large computation. The practical issues as well as some low-level implementation issues will also be covered.
Required Knowledge: Good familiarity with undergraduate-level algorithms on integers, polynomials, finite fields, and linear algebra is highly desirable. CSE203A, while not an enforced prerequisite, is certainly a highly desirable knowledge in order to take this class. In terms of mathematical background, familiarity with number fields is not mandatory.
Enforced Prerequisite: Yes. CSE 202 or instructor consent.
Recommended Preparation for Those Without Required Knowledge: N/A
Link to Past Course: N/A
- Fall 2021 Graduate Course Information
-
This is historical data. This page serves the purpose to help graduate students understand each graduate course offered during Fall 2021.
CSE 200 - Computability and Complexity with Prof. Shachar Lovett
Description: This class is an introduction to computational complexity theory. This area aims to understand the various resources needed to solve computational problems. Such resources include the obvious ones, such as time and memory, but also possibly less obvious ones, such as randomization, interaction, and non-uniformity. In addition, we will attempt to classify problems as "easy" or "hard", study relations between easy and hard problems, as understand why the "P vs NP" problem is possibly the most important open problem in computer science, mathematics, and science at large.
Required Knowledge: Undergraduate computability theory: DFAs, Turing machines, decidability, and undecidability. Undergraduate basic algorithms class: graph algorithms (eg BFS/DFS), dynamic programming, etc.
Enforced Prerequisite: Yes. CSE 101 or 105 (or equivalent).
Recommended Preparation for Those Without Required Knowledge: Sipser - theory of computation (covers core computability theory)
Link to Past Course: http://cseweb.ucsd.edu/classes/wi18/cse200-a/
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 206A - Lattice Algorithms & Applications with Prof. Daniele Micciancio
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 210 - Principles of Software Engineering with Prof. Bill Griswold
Description: Building a great, successful software system is an intellectually challenging activity that is more likely to fail than succeed. Yet, software is becoming increasingly sophisticated and now permeates every aspect of our lives. In short, software is becoming harder to build, but it's increasingly important to build it right.
The methods for creating software have changed dramatically to keep pace. This course is an introduction to the state of the art and hot trends in software development. This course will not only introduce the salient concepts of software engineering, but it will also introduce valuable practices and develop our skills in applying them through a small team project (several projects have gone into production over the years). We will study insightful case studies such as the Mythical Man Month and Microsoft Secrets, as well as classic and leading-edge articles from the research literature, including XP and Design Patterns.
This course is run as a seminar (albeit at a large scale), requiring daily preparation (with hand-ins) and constant, deep participation. There is also a project with weekly milestones and a project presentation at the end.
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: https://cseweb.ucsd.edu/~wgg/CSE210/
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: CSE 120 or equivalent
Link to Past Course: http://cseweb.ucsd.edu/classes/fa18/cse221-a/
CSE 227 - Computer Security with Prof. Stefan Savage
Description: This course focuses on computer and network security, exploring a range of topics design to illustrate some of the modern research challenges in the area and the standards for advancement. It is not designed to be a tutorial course, but rather to give students the context to understand current security research and evaluate their interest in the field. We will explore a range of topics on both the defensive and offensive side of the field, as illustrated by papers and via lecture. This class will have two primary means of evaluation: classroom participation and a quarter-long research project of your own choosing with results presented both in writing and orally.
Required Knowledge: N/A
Enforced Prerequisite: None.
Recommended Preparation for Those Without Required Knowledge: N/A
Link to Past Course: http://cseweb.ucsd.edu/classes/fa19/cse227-a/
CSE 230 - Principles/Program Languages with Prof. Ranjit Jhala
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, but 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/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) aspects and features of modern 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 expected to know SQL and database schema design in advance.
Enforced Prerequisite: Yes. Knowledge of database schema design and SQL querying, as provided in CSE132A or similar classes at other universities or extensive industry experience. The prerequisite is 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 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 and the latest research. This is a lecture-driven course involving a mandatory paper reviewing component for all students. There will be two alternate pathways for additional learning evaluation components: one based on written quizzes and exams and the other based on a research or survey project ending with a report and presentation. Students must pick a pathway early on in the class. Both pathways can be pursued and if so, the better of the two grades will be used. 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 needed (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 needed. Alternatively, DSC 102 will suffice on both counts. Another alternative is substantial prior industrial/real-world project experience with scalable ML systems, 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: http://cseweb.ucsd.edu/classes/fa20/cse291-d/
CSE 237C - Validation & Testing/EmbeddedSys with Prof. Ryan Kastner
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: None.
Recommended Preparation for Those Without Required Knowledge: Please see the website below for all relevant course information.
Link to Past Course: http://kastner.ucsd.edu/ryan/cse237c/
CSE 240A - Princ/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 243A - Intr Synthesis Method VLSI CAD with Prof. Alex Orailoglu
Description:
Required Knowledge:
Enforced Prerequisite:
Recommended Preparation for Those Without Required Knowledge:
Link to Past Course:
CSE 250A - Probabilistic Reasoning & Learning with Prof. Lawrence Saul
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 Python, Matlab, Java, or C. Programming assignments are completed in the language of the student's choice.
Enforced Prerequisite: None.
Recommended Preparation for Those Without Required Knowledge: Review of multivariable calculus and linear algebra.
Link to Past Course: http://cseweb.ucsd.edu/classes/fa20/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/fa19/cse252A-a/
CSE 257 - Search and Optimization with Prof. Sean Gao
Description: The course will cover core search and optimization algorithms for decision-making. Topics include heuristic search, deep reinforcement learning, Monte Carlo tree search, numerical optimization, and combinatorial search.
Required Knowledge: Have previously taken at least one course in AI or machine learning.
Enforced Prerequisite: None for graduate students. Undergraduate students must have taken CSE 150B.
Recommended Preparation for Those Without Required Knowledge: N/A
Link to Past Course: https://scungao.github.io/ucsd-s21/index.html
CSE 258 - Recommender Systems & 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: http://cseweb.ucsd.edu/classes/fa20/cse258-a/
CSE 260 - Parallel Computation with Prof. Bryan Chin (CLASS CANCELLED FOR QUARTER)
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/cse260fall2020/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. CSE 167 or equivalent.
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: http://cseweb.ucsd.edu/~viscomp/classes/cse274/wi18/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, polls, quizzes, and assignments Evaluating your own progress in the course on a regular basisRecommended Preparation for Those Without Required Knowledge: François-Lavet, V., Henderson, P., Islam, R., Bellemare, M.G. and Pineau, J., 2018. An Introduction to Deep Reinforcement Learning. Foundations and Trends® in Machine Learning, 11(3-4), pp.219-354.
Link to Past Course: First-time offering
CSE 291 (6) - Usable Security and Privacy with Prof. Imani Sherman
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.
Required Knowledge: N/A
Enforced Prerequisite: N/A
Recommended Preparation for Those Without Required Knowledge: N/A
Link to Past Course: N/A
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.
Enforced Prerequisite: None.
Recommended Preparation for Those Without Required Knowledge: N/A
Link to Past Course: http://www.hichristensen.com/CSE276C-20/
CSE 291 (1) - Unsupervised Learning with Prof. Sanjoy Dasgupta
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: There are no enforced prerequisites. 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 is essential.
Enforced Prerequisite: None.
Recommended Preparation for Those Without Required Knowledge: CSE 250A, CSE 251A, CSE 258.
Link to Past Course: N/A
CSE 291 (2) - Introduction to Computer Science Education Research with Prof. Leo Porter
Description: (Please note: this course is currently suppressed and enrollment is closed.) Computer science as a major has high societal demand. In addition, computer programming is a skill increasingly important for all students, not just computer science majors. However, computer science remains a challenging field for students to learn. This course examines what we know about key questions in computer science education: Why is learning to program so challenging? What pedagogical choices are known to help students? How do those interested in Computer Science Education Research (CSER) study and answer pressing research questions?
This course surveys the key findings and research directions of CSER and applications of those findings for secondary and post-secondary teaching contexts. We study the development of the field, current modes of inquiry, the role of technology in computing, student representation, research-based pedagogical approaches, and important open research questions. CSER is a relatively new field and there is much to be done; an important part of the course engages students in the design phases of a CSER study and asks students to complete a significant project (e.g., a review of an area of CSER research, prototyping of a software system to aid student learning).
Required Knowledge: None.
Enforced Prerequisite: None.
Recommended Preparation for Those Without Required Knowledge: None.
Link to Past Course: N/A
CSE 291 (3) - Internet Infrastructure with Prof. Aaron Schulman
Description: The Internet's success can largely be attributed to the simple abstraction it provides: any host can send packets to any other host, on any type of link, anywhere in the world. Hidden underneath this simple abstraction, the Internet is made of a vast network of heterogeneous infrastructure. In this course, we will read and discuss the latest research on the infrastructure behind the Internet. Topics will include wireless Internet access links that provide high performance in increasingly challenging environments, including 5G mobile, rural ISPs, and Low Earth Orbit satellite networks. Also, we will discuss large-scale wireline Internet infrastructure, including metropolitan and long-distance fiber, Fiber-To-The-Home, and Fiber-To-The-Node (e.g., DOCSIS).
Required Knowledge: Minimum Undergraduate Networking, Graduate Networking Preferred
Enforced Prerequisite: None.
Recommended Preparation for Those Without Required Knowledge: None.
Link to Past Course: N/A
CSE 291 (4) - Towards Human-Centered AI with Prof. Nadir Weibel
Description: In this class we will discuss topics at the intersection of AI and Design, specifically focusing on important points at this intersection that should be part of computer science and data science education.
Required Knowledge: None.
Enforced Prerequisite: None.
Recommended Preparation for Those Without Required Knowledge: N/A
Link to Past Course: N/A
CSE 291 (5) - Deep Reinforcement Learning with Prof. Rose Yu
Description: Deep reinforcement learning is the combination of reinforcement learning (RL) and deep learning. This field of research is at the forefront of machine learning. Deep RL is able to solve a wide range of complex decision-making tasks, opening up new opportunities in domains such as healthcare, robotics, smart grids, finance, and many more. This class will cover recent advances in deep RL, including imitation learning, inverse RL, Policy Gradients, Deep Q-learning, Actor-Critic algorithms, model-based RL, and meta-learning. The course will be a combination of lectures, student presentations, and projects.
Required Knowledge: Familiarity with machine learning, deep learning, reinforcement learning, and numerical optimization.
Enforced Prerequisite: Yes. 1. CSE 150B (or equivalent) & CSE 151A (or equivalent), or CSE 250A; and 2. CSE 151B (or equivalent)
Learn how to model data using interpolation, linear regression, and higher-order approximation methods. Consider these skills to recognize objects from point-cloud data.
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.Textbook: Robotics, Vision & Control, Peter Corke, Springer Verlag. (see its webpage for links)
Required Knowledge: This is an introductory graduate class, so a minimum of formal requirements is assumed beyond an ability to program.
Enforced Prerequisite: None.
Recommended Preparation for Those Without Required Knowledge: N/A
Link to Past Course: http://www.hichristensen.com/CSE276A-20/
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
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.
The goal of the course is to help you accomplish the following: - Spring 2021 Graduate Course Information
-
This is historical data. This page serves the purpose to help graduate students understand each graduate course offered during Spring 2021.
CSE 205A - Logic in Computer Science with Prof. Victor Vianu
Description: The goal of this course is to introduce students to mathematical logic as a tool in computer science. After covering basic material on propositional and predicate logic, the course presents the foundations of finite model theory and descriptive complexity. Other topics, including temporal logic, model checking, and reasoning about knowledge and belief, will be discussed as time allows. Evaluation is based on homework sets and a take-home final.
Required Knowledge: Basic computability and complexity theory (CSE 200)
Enforced Prerequisite: Yes. CSE 200.
Recommended Preparation for Those Without Required Knowledge: Sipser, Introduction to the Theory of Computation
Link to Past Course: N/A
CSE 207 - Modern Cryptography with Prof. Mihir Bellare
Description: This course is an introduction to modern cryptography. 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 and then proving that schemes achieve the defined goals via reductions. 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.
Note: In Sp21 this is a fully online course.
Required Knowledge: Graduate theory of computation (CSE 200) or algorithms (CSE 202). Can be substituted by CSE 227 or CSE 107. Very good performance in undergraduate theory and algorithms both (CSE 105, CSE 101) may substitute.
Enforced Prerequisite: Yes. Theory of computation and algorithms experience in some form.
Recommended Preparation for Those Without Required Knowledge: Sipser's theory of computation book, Cormen Leiserson and Rivest algorithms book.
Link to Past Course: http://cseweb.ucsd.edu/~mihir/cse207/index.html
CSE 223B - Distributed Computing & Systems with Prof. Alex Snoeren
Description: CSE 223B is a 4-unit graduate subject with lectures, paper discussions, a midterm, a final, and a major term research project culminating in writing a research paper of your own. It will present abstractions and implementation techniques that facilitate the design of distributed systems–including both operating systems and sophisticated Internet servers–that can deal with the demands of real-world workloads. Topics will include efficient operating system primitives, high-performance network servers, load shedding, storage systems, security, and fault tolerance.
Required Knowledge: CSE 221 (or consent of instructor) and substantial programming experience for lab assignments and term project. Note that CSE 223A is not a prerequsite. However, those interested in the theoretical underpinnings of distributed computation are encouraged to take CSE223A as well. CSE223A and CSE223B may be taken in any order.
Enforced Prerequisite: Yes. CSE 221 or consent of instructor.
Recommended Preparation for Those Without Required Knowledge: CSE221 / CSE222A
Link to Past Course: http://cseweb.ucsd.edu/classes/sp20/cse223B-a/
CSE 227 - Computer Security with Prof. Deian Stefan
Description: This course focuses on computer security, exploring a range of topics – from systems security to web security, edge security, and privacy – to illustrate some of the modern research challenges in the area and the standards for advancement. It is not designed to be a tutorial course, but rather to give students the context to understand current security research and evaluate their interest in the field. The course will examine both the defensive and offensive side of the field. At the conclusion of the course, the students will have the foundation to conduct research in computer security and to apply the latest security research to a particular area of practice.
Required Knowledge: Undergrad security. And at least some background in OS, PL, and compilers.
Enforced Prerequisite: None.
Recommended Preparation for Those Without Required Knowledge: Look at past course and study ahead.
Link to Past Course: https://cseweb.ucsd.edu/~dstefan/cse227-spring20/
CSE 237D - Design Automation & Prototyping for Embedded Systems with Prof. Ryan Kastner
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: None.
Recommended Preparation for Those Without Required Knowledge: Contact instructor
Link to Past Course: http://kastner.ucsd.edu/ryan/cse-237d-embedded-system-design/
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 251C - Principles of Machine Learning: Machine Learning Theory with Prof. Michal Moshkovitz
Description: Theoretical foundations of machine learning. Topics include concentration of measure, the PAC model, uniform convergence bounds, and VC dimension. As time permits, we cover explainable machine learning methods, including post-hoc and intrinsic explanations.
Required Knowledge: Information taught in CSE 101, CSE 103, CSE 250A, and CSE 251A
Enforced Prerequisite: Yes. CSE 250B/CSE 251A.
Recommended Preparation for Those Without Required Knowledge: Take CSE 101, CSE 103, CSE 250A, CSE 251A
Link to Past Course: https://sites.google.com/eng.ucsd.edu/cse250c/home?authuser=1
http://rbassily.eng.ucsd.edu/home/teaching/spring-2017---cse-250c-machine-learning-theoryCSE 252D - Advanced Computer Vision with Prof. Manmohan Chandraker
Description: (Formerly CSE 252C. Students cannot receive credit for both CSE 252C and CSE 252D) This course will cover advanced concepts in computer vision and focus on recent developments in the field. Example topics include 3D reconstruction, object detection, semantic segmentation, multi-target tracking, action recognition, reflectance estimation, image captioning and domain adaptation. The class will be composed of lectures by the instructor, but with a participation element, too, where students will engage through lightning presentations. Grading will be based on a mid-term, final exam, and course project.
Required Knowledge: Previous experience with computer vision and deep learning is required. Programming experience in Python is required.
Enforced Prerequisite: Yes. Students who have taken 2 out of the following courses are allowed to enroll directly: 252A, 252B, 250B, 253, 254. For students who have taken only 1 of those courses, please add yourself to the waitlist and send the instructor an email, with the subject “SP21 CSE 252D: Request to enroll”. The email should contain your PID and a description of your prior coursework and project experience relevant to computer vision.
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: http://cseweb.ucsd.edu/~mkchandraker/classes/CSE252C/Spring2020/
CSE 257 - Search and Optimization with Prof. Sicun Gao
Description: The course will cover core search and optimization algorithms for decision-making problems. Topics include heuristic search, deep reinforcement learning, numerical optimization, and combinatorial search.
Required Knowledge: Some familiarity with AI and machine learning.
Enforced Prerequisite: None.
Recommended Preparation for Those Without Required Knowledge: N/A
Link to Past Course: https://scungao.github.io/ucsd291/index.html
CSE 283 - Genomics/proteomics/netwk biol with Prof. Vineet Bafna
Description: The goal of this course is to (a) introduce you to the data modalities common in OMICS 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: While the course should be self-contained, we assume some mathematical maturity. Students who have taken CSE202, CSE282 will find the material more accessible.
Enforced Prerequisite: Yes. Instructor consent.
Recommended Preparation for Those Without Required Knowledge: Online class on Bioinformatics algorithms
Link to Past Course: http://proteomics.ucsd.edu/vbafna/teaching-2/data-wrangling-in-bix/
CSE 284 - Personal Genomics for Bioinformaticians 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) - Embedded Systems & The IoT with Prof. Patrick Pannuto
Description: Researchers, policymakers, citizen scientists, and curious individuals have an innumerable array of questions about the world around them. How does physical proximity affect disease transmission? What changes would have the greatest impact on the carbon footprint of an urban environment? What is the historical air quality like for asthmatics in the neighborhoods where I am shopping for houses? This course is about the design and implementation of platforms and systems capable of capturing the data to answer such questions.
Formally, this is the study of embedded systems and wireless sensor networks. These are computing systems that are deployed widely in the physical world, which creates unique constraints in their physical size, deployment, management, communication, energy availability, and operation. We will begin with a history of impactful deployments, then study each of the pieces, in turn, both traditional sensor architectures and more exotic designs such as batteryless systems, backscatter communication, and how to do machine learning with less than 1 MB of memory.The course will also include a quarter-long project that will result in a draft of a conference-style paper. This course is timed to align with the traditional deadline for workshop papers at MobiCom (mid-June). For interested groups, there will be support available for turning the class project into a submission for potential publication.
Required Knowledge: Enthusiasm to learn.
Enforced Prerequisite: None.
Recommended Preparation for Those Without Required Knowledge: N/A
Link to Past Course: https://patpannuto.com/classes/2020/winter/cse291/
CSE 291 (B00) - Advanced Statistical Natural Language Processing with Prof. Taylor Berg-Kirkpatrick
Description: This course will explore current statistical techniques for the automatic analysis of natural (human) language data. The dominant modeling paradigm is corpus-driven statistical learning, with a split focus between supervised and unsupervised methods. Advanced Statistical NLP is a lab-based course. Instead of homework assignments and exams, you will complete four hands-on coding projects. We will also consider practical constraints that affect the scalability of real-world NLP systems to big data.
Required Knowledge: This course assumes a strong background in probability, some background in probabilistic graphic models, and a strong ability to program in Java. Prior experience with linguistics or natural languages is helpful, but not required. There will be a lot of statistics, algorithms, and coding in this class. Recommended perquisites are courses on discrete mathematics, probability, statistics, probabilistic graphical models, algorithms, and linear algebra.
Enforced Prerequisite: None
Recommended Preparation for Those Without Required Knowledge: Review probability theory (e.g. conditional independence, probabilistic graphical models) and practice dynamic programming (e.g. Viterbi algorithm) in a language like C++ or Java.
Link to Past Course: http://www.cs.cmu.edu/~tbergkir/11711fa17/
CSE 291 (C00) - Big Data Science and Knowledge with Prof. Nuno Bandeira
Description: Computational analysis of massive volumes of data holds the potential to transform society. However, the computational translation of data into knowledge requires more than just data analysis algorithms – it also requires proper matching of data to knowledge for interpretation of the data, testing pre-existing knowledge and detecting new discoveries. This course will cover these data science concepts with a focus on the use of biomolecular big data to study human disease – the longest-running (and arguably most important) human quest for knowledge of vital importance. Building on the growing availability of hundreds of terabytes of data from a broad range of species and diseases, we will discuss various computational challenges arising from the need to match such data to related knowledge bases, with a special emphasis on investigations of cancer and infectious diseases (including the SARS-CoV-2/COVID19 pandemic). Prior knowledge of molecular biology is not assumed and is not required; essential concepts will be introduced in the course as needed.
Required Knowledge:
CSE 100 (Advanced data structures) and CSE 101 (Design and analysis of algorithms) or equivalent strongly recommended Knowledge of graph and dynamic programming algorithms Experience with C++, Java or Python programming languagesRecommended Preparation for Those Without Required Knowledge: N/A
Link to Past Course: N/A
Enforced Prerequisite: None.
Recommended Preparation for Those Without Required Knowledge: Read CSE101 or online materials on graph and dynamic programming algorithms.
Link to Past Course: http://proteomics.ucsd.edu/spring21/cse291/
CSE 291 (D00) - 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 the 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: Go through CSE291-I in Winter 2021 (taught by Prof. Su).
Link to Past Course: https://robotmlcourse.github.io/SP20/index.html
CSE 291 (E00) - Physics Simulation with Prof. Steve Rotenberg
Description: This class covers a range of 3D physics simulation topics. The main emphasis will be on the dynamic simulations of elastic bodies, rigid bodies, and fluids. Additional topics will include vehicle dynamics, galactic dynamics, electromagnetics, and molecular dynamics. Physics will be the subject, but there will be a focus on the computational aspects such as data structures and algorithms. The class includes programming projects with 3D simulation and visualization.
Required Knowledge: Basic 3D graphics experience (such as CSE167) and working knowledge of OpenGL or similar. Also, knowledge of Newtonian physics is required.
Enforced Prerequisite: None.
Recommended Preparation for Those Without Required Knowledge: Familiarity with OpenGL, such as https://learnopengl.com/
Link to Past Course: https://canvas.ucsd.edu/courses/12858 (2020); https://cseweb.ucsd.edu/classes/sp19/cse291-d/ (2019)
CSE 291 (F00) - Continual Learning with Prof. Sanjoy Dasgupta
Description: This is a reading course in which students will read and present papers on continual learning. The types of topics we will cover include: online learning; domain adaptation and transfer learning; self-supervised learning; memory models in deep learning; models of teaching; metric learning; learning to reason; explanation-based learning; models of early childhood development.
Required Knowledge: Basic machine learning and statistics.
Enforced Prerequisite: None.
Recommended Preparation for Those Without Required Knowledge: N/A
Link to Past Course: N/A
CSE 291 (G00) - High-Dimensional Expanders with Prof. Shachar Lovett
Description: Expander graphs have been extensively studied in mathematics over the past several decades, and in that time found numerous applications to computer science, such as in the design of fast error-correcting codes and resilient networks. High-dimensional expanders is an emergent area that ties together topology, algebra, and combinatorics, and underlies a surprising range of applications in computer science, ranging from fast MCMC sampling to efficient quantum codes.
The first half of this course will cover classical topics in expander graphs, the second half recent topics in high-dimensional expanders.
Required Knowledge: The course assumes mathematical maturity. Background in linear algebra and graph theory can be useful but is not mandatory.
Enforced Prerequisite: None.
Recommended Preparation for Those Without Required Knowledge: Undergraduate classes in linear algebra and graph theory.
Link to Past Course: N/A
CSE 291 (H00) - Human-Centered Computing for Health with Prof. Nadir Weibel
Description: HC4H is an interdisciplinary course that brings together students from Engineering, Design, and Medicine, and exposes them to designing technology for health and healthcare. The course is focused on studying how technology is currently used in healthcare and identify opportunities for novel technologies to be developed for specific health and healthcare settings.
In the first 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 room 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.
Successful students in this class often follow up on their design projects with the actual development of an HC4H project and its deployment within the healthcare setting in the following quarters.
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: http://hc4h.ucsd.edu/
CSE 291 (I00) - Computational Photography with Prof. Ben Ochoa
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. MATLAB, Python, 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/sp20/cse291-f/
CSE 291 (J00) - Double Feature: Trustworthy Browsers // Secure Compilation using WebAssembly with Prof. Deian Stefan
Description: This a double feature graduate course on trustworthy browsers and WebAssembly. The underlying theme between the two features is to build secure Web systems using techniques from programming languages, compilers, and verification. This is a research-oriented course: We will read (sometimes hot-off-the press) research papers and work on a large research project spanning one or both of the features.
Feature 1: Trustworthy Browsers
This feature will cover the design and implementation of modern browsers security architectures. The feature will explore modern attack techniques on browsers and study different techniques for addressing these classes of attack. Students will carry out attacks on browsers (e.g., by exploiting JIT compiler bugs) and build systems (e.g., sandboxing, bugfinding, static analyses, and verification tools) to harden real world browsers.
Feature 2: Secure Compilation using WebAssembly
This feature explores the use of secure compilations---a discipline that spans programming languages, compiler design, verification, and hardware---to build secure systems, and to rigorously specify and reason about security of these systems. The feature will expose students to both formal approaches to secure compilations---covering different attacker models, security criteria, and proof techniques---and practical secure compiler design.
Required Knowledge: 1. Background in two of: Security, Compilers, Programming Languages, or Architecture. 2. You must be able to figure out how to compile Firefox on your own.
Enforced Prerequisite: None.
- Winter 2021 Graduate Course Information
-
This is historical data. This page serves the purpose to help graduate students understand each graduate course offered during Winter 2021.
CSE 202 - Algorithm Design and Analysis with Prof. Daniele Miccancio
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, back-tracking, dynamic programming, and hill-climbing. For each technique, we will see a variety of applications of the technique, starting with relatively straight-forward 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 a valid proof. For example, CSE 20, CSE 21, and CSE 101 cover the prerequisite material. We will cover many of the same topics from an 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: Please see above.
Link to Past Course: https://sites.google.com/a/eng.ucsd.edu/cse101/cse202
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, duality concepts, gradient descent, conjugate gradient, interior-point methods, and applications. The objective of the course is to provide students the background and techniques for scientific computing and system optimization.
Required Knowledge: Linear algebra
Enforced Prerequisite: None.
Recommended Preparation for Those Without Required Knowledge: Read the appendix of the textbook
Link to Past Course: http://cseweb.ucsd.edu/classes/wi20/cse203B-a/
CSE 216 - Interaction Design Research with Prof. Scott Klemmer
Description: This course is a broad graduate-level introduction to interaction design research. The course begins with seminal work on interactive systems, and moves through current and future research areas in interaction techniques and the design, prototyping, and evaluation of user interfaces. Topics include social computing, crowdsourcing, software tools, design and evaluation methods, ubiquitous and context-aware computing, tangible interfaces, and mobile interfaces.
COGS 230 / CSE 216 is a 4-unit course. Students will need four skills: critically reading research papers, undertaking a small research project, giving a presentation, and writing a paper. Students registered for the class will receive a letter grade; the "credit/no credit" option is not available. Students in this course are encouraged to enroll in the Design at Large (CSE 219) seminar for 1 unit.
Required Knowledge: Please see website below for more information.
Enforced Prerequisite: Open to PhDs. MS students need an Intro to HCI course (CSE 170 or equivalent).
Recommended Preparation for Those Without Required Knowledge: Please see website below for more information.
Link to Past Course: https://d.ucsd.edu/IxD/research/2020/
CSE 221 - Operating Systems with Prof. Geoffrey 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 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: https://cseweb.ucsd.edu/classes/wi14/cse202-a/
CSE 231 - Advanced Compiler Design with Prof. Joseph Politz
Description: The course will focus on optimizations and runtime systems for programming languages, and will be project-focused. Students will work individually or in groups to construct and measure interesting, modern approaches to compiler construction and program optimization. Topics may vary depending on the interests of the class and the trajectory of the projects. Likely topics are just-in-time (JIT) compilation, memory management, and compiling for the Web (e.g. WASM, JavaScript), along with standard control-flow and value-based ahead-of-time optimizations.
Required Knowledge: Preparation similar to CSE 131 (one offering: https://ucsd-cse131-f19.github.io/). This includes experience programming in a structurally recursive style as in Ocaml, Haskell, or similar; ability to implement syntax transformations/code generation up to a simple calling convention; ability to write C code that works with pointer representations; an understanding of process and memory layout.
Enforced Prerequisite: None.
Recommended Preparation for Those Without Required Knowledge: The materials for CSE 131 are available online; you can complete the assignments at your own pace (https://ucsd-cse131-f19.github.io/).
Link to Past Course: https://ucsd-pl.github.io/cse231/wi18/ (though this offering may have some significant updates, the spirit of the material remains the same)
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 comfortable programming in Java.
Enforced Prerequisite: Yes. Java programming, introductory database course, or equivalent experience with SQL databases.
Recommended Preparation for Those Without Required Knowledge: Online Java programming course and intro db course or db project.
Link to Past Course: http://ubicomp.ucsd.edu/cse218
CSE 240C - Advanced Microarchitecture with Prof. Samira Mirbagher
Description: 240c is primarily a paper-driven course and has one project. This course has been presented before. To better accommodate for a remote class, changes are applied to improve learning quality online. You will be expected to read the papers before each class, turn in your paper summaries, and come prepared to participate in the discussion.
Computer architects have been striving to improve performance and efficiency since the first stored program computer was designed half a century ago. Superscalar and multithreading execution are key technique towards this aim but come with the cost of security and power. The course will explore microarchitectural approaches to improve performance, efficiency and security.Topics covered will include: Historical Perspective, Branch Prediction, ILP and Speculation, Multithreading, Thread-level speculation, Cache and Memory, Prefetching, Energy and Power, Fault Tolerance, Application-Specific Processors, Spatial/grid processing, GPU Architecture, Hardware security
Five elements will factor into your grade in this class: (1) Paper slides and presentations (2) Future work summaries (3) Participation (4) Project (5) Final exam. The schedule of papers will be posted on Piazza.1. Paper summaries (due via private piazza messages, 10 minutes before class (no late summaries accepted) -- a paper summary is no more than 1 page long (no more than 2 pages total for all papers for a particular day), and contains the following information: Summary of the paper [in the neighborhood of 2-3 sentences, everything else about 1 sentence each]; What is the most important result?; One strength of the paper; One weakness of the paper; One thing you didn't understand; If you wrote this paper, what would your next paper be about? (Don't overthink this -- if a question is inappropriate for the paper, skip it.)
2. Presentations. Each student will make a presentation of a particular topic to the class. Think of it as a mini research exam, where you become the expert on a topic, and lead discussion of a couple of papers. It is important that you not only establish yourself as an expert in the area, but also foster discussion among the class.
3. Participation. Each class will be a DISCUSSION of a particular set of papers. I expect each student to participate in, but not dominate, the conversations about the papers.
4. Projects -- more discussion of this on Piazza.
5. We will have a final exam. It will cover the papers you read during the quarter.
By the end of this course, you will gain a general knowledge of advanced microarchitecture designs and evaluation methodologies, as well as an in-depth understanding of one problem you pick for your project. You will also gain skills in critically reviewing papers and doing many gain experience on developing novel ideas that improve current studies.Required Knowledge: General Computer Architecture and C/C++ skills for the project.
Enforced Prerequisite: Yes. CSE 240A.
Recommended Preparation for Those Without Required Knowledge: Get a book on C++ and practice. Students must have taken 240a.
Link to Past Course: https://cseweb.ucsd.edu/classes/sp15/cse240C-a/papers.html
CSE 240D - Application-Specific Processors with Prof. Hadi Esmaeilzadeh
Description: Deep learning is set to revolutionize medicine, robotics, commerce, transportation and numerous other aspects of our lives. However, these impacts are contingent upon providing high-performance compute capabilities alongside restrained power consumption. Significant effort has been made both by modifying hardware and software in the direction of enhancing the speed of neural networks and their consumed energy. The compute intensity of neural networks and the inability of general purpose processors to meet this high demand accentuate the need for applications specific hardware accelerators that are custom designed for deep neural network computations. In this course, you will gain insight on the design process of these accelerators, as well as deep neural network architectures and characteristics by discussing the prevalent literature in the area. This is a project-based course, so you will also acquire hands-on knowledge on how to actually construct an accelerator through the project. The project will step by step guide you through outlining your architecture and developing a functional and timing simulator for it.
The course will be a combination of lectures, student presentation, project and separate brainstorming sessions in which we will collectively explore and develop new ideas on each topic. The students will do a project in which they design an accelerator for deep neural networks and develop a simulator for their design.
Required Knowledge: There are no pre-requisites for the course but students will be expected to be comfortable with a) basic computer organization, and b) programming in a language such as Python or C/C++. The course is open to both PhD and MS students. Undergraduate students require permission from the instructor.
Enforced Prerequisite: None.
Recommended Preparation for Those Without Required Knowledge: See "Required Knowledge."
Link to Past Course: https://hadiclass.github.io/cse240d-fa19/index.html
CSE 241A - VLSI Integrated Computing Circuitry with Prof. Andrew Kahng
Description: Design methodologies and tradeoffs in the physical ("netlist to layout") implementation of VLSI systems. Algorithm and optimization foundations for solution of interconnection, clustering, partitioning, placement, power-ground distribution, clocking, routing, performance estimation, timing closure and other fundamental VLSI physical design problem classes. Computer-aided design and performance analysis algorithms and optimization frameworks are studied in the context of lectures/homeworks, design exercises and mini-projects.
Textbook: Weste and Harris, CMOS VLSI Design: A Circuits and Systems Perspective, 4th edition.
Required Knowledge: Layout (ECE 165 or ECE 260A) and logic design (CSE 140) are strongly recommended as background.
Enforced Prerequisite: None.
Recommended Preparation for Those Without Required Knowledge: Study of a VLSI Design book such as Weste/Harris (used in ECE 260A), and browsing of a VLSI physical design algorithms book such as Sherwani.
Link to Past Course: Not possible (course website is password-protected due to IP access restrictions agreed to by UCSD and various companies (EDA, foundry).
CSE 251A - ML: Learning Algorithms with Prof. Kamalika Chaudhuri
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: Knowledge of linear algebra, calculus, probability and programming
Enforced Prerequisite: None.
Recommended Preparation for Those Without Required Knowledge: Online probability and linear algebra class.
Link to Past Course: https://cseweb.ucsd.edu/classes/wi20/cse250B-a/index.html
CSE 251B: Neural Networks for Pattern Recognition (AKA “Deep Learning”) with Prof. Gary Cottrell
Description: (Formerly CSE 253. Students cannot receive credit for both CSE 253 and CSE 251B) Neural networks have come back into fashion since 2012 - especially for computer vision - when a deep network won the ImageNet Large Scale Visual Recognition Challenge (ILSVRC). They are now also used for language translation (google translate), language generation (GPT-3), image generation, game playing, and speech recognition. This course covers perceptrons, logistic and softmax regression, multilayer networks and back propagation, deep learning, convolutional networks, recurrent nets, transformers, reinforcement learning, and some recent papers. The course is in a lecture format, but most of your learning will occur from doing programming assignments. The course will involve four programming assignments roughly every two weeks, a final project (done in teams), and two in-class midterms. A typical final project will replicate some recent work, perhaps on a different dataset. This course is like a full-time job – don’t take any other courses that are time-consuming at the same time.
Required Knowledge: Students should be fluent in linear algebra, vector calculus, probability and programming. They should know what gradient descent is.
Enforced Prerequisite: None.
Recommended Preparation for Those Without Required Knowledge: If you are missing the math background, you should acquire it via online courses or by taking classes at UCSD. This math background is essential. Look up gradient descent.
Link to Past Course: Here is the syllabus from CSE 253 (the prior course number): https://cseweb.ucsd.edu/~gary/253/CSE_253_syllabus_w20.pdf
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, basic probability and statistics. MATLAB, 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/wi20/cse252B-a/
CSE 276E - Robotic System Design & Implementation with Prof. Steven Swanson
Description: End-to-end system design of embedded electronic systems including PCB design and fabrication, software control system development, and system integration. The course is an intensive capstone project course that provides students a chance to integrate knowledge from a wide range of domains into a single project.
Required Knowledge: Basic electronics and intermediate C/C++ programming.
Enforced Prerequisite: None.
Recommended Preparation for Those Without Required Knowledge: Read through an undergraduate circuits textbook. If you don’t know how to program, you should not take the class.
Link to Past Course: https://sites.google.
com/a/eng.ucsd.edu/ quadcopterclass/ CSE 280A - Algorithms/Computational Biol with Prof. Vineet Bafna
Description: The course presents selected topics in Computational Molecular Biology, with an emphasis on designing algorithms for biological data analysis. We focus specifically on problems from Population genetics and genomics.
Required Knowledge: The student should be comfortable with basic combinatorics and algorithms. Otherwise, the course should be self-contained. No knowledge of biology is assumed, but the student must have an interest in learning some new topics.
Enforced Prerequisite: None.
Recommended Preparation for Those Without Required Knowledge: One or more of the following classes would be great: CSE 101, CSE 202, CSE 181, CSE 282.
Link to Past Course: http://proteomics.ucsd.edu/vbafna/teaching-2/cse280a-algorithms-for-genetics/
CSE 282 - Bioinformatics II: Sequence and Structure Analysis - Methods and Applications 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 291 (C00) - Security, Privacy, and US Law with Prof. Stefan Savage
Description: This course will explore the intersection of the technical and the legal around issues of computer security and privacy, as they manifest in the contemporary US legal system. The goal of the course is multifold: First, to provide a better understanding of how key portions of the US legal system operate in the context of electronic communications, storage and services. Second, to provide a pragmatic foundation for understanding some of the common legal liabilities associated with empirical security research (particularly laws such as the DMCA, ECPA and CFAA, as well as some understanding of contracts and how they apply to topics such as "reverse engineering"). Third, we will explore how changes in technology and law co-evolve and how this this process is highlighted in current legal and policy "fault lines". This will very much be a readings and discussion class, so be prepared to enage if you sign up.
Required Knowledge: None, but it we are going to assume you understand enough about the technical aspects of security and privacy (e.g., such as having taking an undergraduate class in security) that we, at most, need to do cursory reviews of any technical material.
Enforced Prerequisite: None.
Recommended Preparation for Those Without Required Knowledge: Review lectures/readings from CSE127
Link to Past Course: N/A
CSE 291 (D00) - Dependable Systems with Prof. Yuanyuan Zhou
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: Yes. 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 (E00) - Advanced Studies in Classical Operating Systems with Prof. Joseph 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)
Link to Past Course: http://cseweb.ucsd.edu/classes/wi20/cse291-i/
CSE 291 (F00) - Domain Adaptation in Computer Vision with Prof. Manmohan Chandraker
Description: Computer vision has made rapid progress in the era of deep learning. This is largely attributed to the availability of large-scale labeled data, coupled with GPU computation. Yet, computer vision models trained on a domain, say day images, often do not generalize to new domains, say images acquired at night. It is expensive to label data for all possible scenarios, but unlabeled data is easier to obtain. In this course, we will study concepts in unsupervised domain adaptation, with applications to various computer vision problems, such as image classification, semantic segmentation, object detection, face recognition and 3D reconstruction.
Required Knowledge: This is an advanced class, covering recent research progress. Graduate students with a strong interest in computer vision may enroll. Prior background in computer vision and machine learning is required, preferably through research experience or as covered by CSE 252 and similar offerings. Students are encouraged to contact the instructor if unsure about meeting any criteria for enrollment.
Enforced Prerequisite: None.
Recommended Preparation for Those Without Required Knowledge: CSE 252A, CSE 252C, or Stanford CS 231n
Link to Past Course: http://cseweb.ucsd.edu/~mkchandraker/classes/CSE291/Winter2020/
CSE 291 (H00) - Introduction to Computing Education Research with Prof. Gerald Soosai Raj
Description: Computer Science as a major has high societal demand. In addition, computer programming is a skill increasingly important for all students, not just computer science majors. However, computer science remains a challenging field for students to learn. This course examines what we know about key questions in computer science education: Why is learning to program so challenging? What pedagogical choices are known to help students? What barriers do diverse groups of students (e.g., non-native English speakers) face while learning computing? How do those interested in Computing Education Research (CER) study and answer pressing research questions?
This course surveys the key findings and research directions of CER and applications of those findings for secondary and post-secondary teaching contexts. We study the development of the field, current modes of inquiry, the role of technology in computing, student representation, research-based pedagogical approaches, efforts toward increasing diversity of students in computing, and important open research questions. CER is a relatively new field and there is much to be done; an important part of the course engages students in the design phases of a computing education research study and asks students to complete a significant project (e.g., a review of an area in computing education research, designing an intervention to increase diversity in computing, prototyping of a software system to aid student learning).
Required Knowledge: None.
Enforced Prerequisite: None.
Recommended Preparation for Those Without Required Knowledge: None.
Link to Past Course: N/A
CSE 291 (I00) - Machine Learning Meets Geometry with Prof. Hao Su
Description: This is a graduate-level course to cover core concepts and algorithms of geometry that are being used in computer graphics, computer vision and machine learning. I will cover key concepts of differential geometry, the usage of geometry in computer graphics, vision, and machine learning. Students are required to do a course project in pairs.
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: None.
Link to Past Course: https://geoml.github.io/
CSE 291 (J00) - 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
- Fall 2020 Graduate Course Information
-
This is historical data. This page serves the purpose to help graduate students understand each graduate course offered during Fall 2020.
CSE 200 - Computability and Complexity with Prof. Mihir Bellare
Description: This class is an introduction to computational complexity theory. This area aims to understand the computational resources required to solve various computational problems. Such resources include the obvious ones, such as time and memory, but also possibly less obvious ones, such as randomization, interaction and non-uniformity. In addition, we will attempt to classify problems as computationally "easy" or "hard", study relations between easy and hard problems and reductions between them. We study different complexity classes that model different computational capabilities, and study the relations between these.
Required Knowledge: CSE 20, 21, 101, 105 or equivalent classes
Enforced Prerequisite: Yes. CSE 21, CSE 101, and CSE 105, or their equivalents.
Recommended Preparation for Those Without Required Knowledge: Standard textbooks on discrete math, algorithms and computability.
Link to Past Course: http://cseweb.ucsd.edu/classes/wi18/cse200-a/
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 straight-forward 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 210 - Principles of Software Engineering with Prof. Thomas Powell
Description: Building a successful software system is an intellectually challenging activity that is more likely to fail than succeed. 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 important than ever that it is built "right."
Building things "right" is not necessarily a settled thought. What "right" is shifts as the methods for creating software and associated practices have changed to keep pace with various changes in technology and industry conditions. This course is an introduction to classical best practices as well as current trends in software engineering practices. Readings and case studies including Mythical Man Month, various works from Steve McConnell, and numerous classic and current articles covering topics ranging from patterns, methods, and team practices will be covered. This course will not only introduce foundational concepts of software engineering but will also provide practical experience for students to develop engineering and collaborative skills as they execute a small team project.
This course is run as a seminar, but this quarter will be performed entirely in a remote fashion. While many course aspects allow asynchronous execution, practically speaking the course requires constant and deep participation including near-daily preparation (with hand-ins) and communication with your peers in paper reviews. The project will have weekly milestones and various ceremonies that adhere to common Agile practices and students will be expected to do this in a remote fashion. 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: https://cseweb.ucsd.edu/~wgg/CSE210/
CSE 218 - Advanced Topics in Software Engineering with Prof. Nadir Weibel
Description: Good software engineering (SE), when applied to the real world, is hard to achieve. The tendency is to focus on developing a rushed prototype, and then get to a product as fast as possible, without having enough time to think about the good SE principles that we have been learning in school.
This course is a Software Engineering in Practice course that teaches students how to maintain good software engineering practices, even when under the constant pressure of weekly deadlines, and the continuous need to demonstrate new weekly features of the system under development.
In CSE 218 we will refresh the basic principles of Agile Software Development, and extend it into Agile Project Management. We will learn to use Agile tools and work in a team that embraces Agile practices, such as delivering weekly results, and move from ideation to design, prototyping, and development, with the ultimate goal of creating a working system by the end of the quarter.
In order to make the course more exciting, we pair the software engineering part of the course with a specific topic related to Ubiquitous Computing. The Ubiquitous Computing setting allows us to integrate and explore affordable sensors and interaction devices (e.g., webcams, mobile phone-based sensors, digital pens, Microsoft SenseCam, Microsoft Kinect, Google glasses, portable eye-tracking, HoloLens, Oculus Rift, etc.) and wireless mobile computing devices (e.g., mobile smartphones, Arduino boards with 802.11b wireless connectivity, etc.) to create boundless opportunities for in-the-world computing applications that can transform our lives.
In Fall 2020 CSE 218 will be a remote class and will focus on human-centered design and agile development of Mobile and Web-based Mixed Reality experiences. We will use a range of mobile devices and investigate how to create AR and VR experiences on smartphones, tablets, and laptops. Students will work in remote distributed teams and will develop MR applications that will be demonstrated in a virtual showcase at the end of the quarter.
Required Knowledge: Required is general knowledge in programming applications specifically using C++/C# and Java, as well as web technology. Basic knowledge of Software Engineering methodologies and techniques are required. Interest and knowledge in research methodologies, as well as being capable to read/understand/discuss scientific literature will be important to progress through the readings.
Moreover, graduate students will be required to lead groups, so initiative and willingness to manage a project is required.
Enforced Prerequisite: Yes. CSE 110 and CSE 100, or their equivalents.
Recommended Preparation for Those Without Required Knowledge: https://www.coursera.org/course/hciucsd, https://www.edx.org/course/software-engineering-introduction-ubcx-softeng1x
Link to Past Course: http://ubicomp.ucsd.edu/cse218
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 its equivalent.
Recommended Preparation for Those Without Required Knowledge: CSE 120 (or equivalent)
Link to Past Course: http://cseweb.ucsd.edu/classes/fa18/cse221-a/
CSE 224 - Graduate Networked Systems with Prof. George Porter
Description: This course will provide a broad understanding of exactly how the network infrastructure supports distributed applications ranging from web browsing to cloud computing. Topics covered in the course include sockets programming, data centers, and cloud computing, Remote Procedure Calls, scale-out distributed directories, distributed fault tolerance and state management, indirection, overlay networks, load balancing, security, and virtualization.
Required Knowledge: An understanding of operating systems concepts and concurrency is recommended.
Enforced Prerequisite: None.
Recommended Preparation for Those Without Required Knowledge: Review an undergraduate textbook for information on mutexes, condition variables, mutual exclusion, context switching, processes and basic OS and compiler concepts.
Link to Past Course: http://cseweb.ucsd.edu/~gmporter/classes/fa19/cse224/
CSE 229A - Tops/Seminar/Computer Systems with Prof. Alex Snoeren
Description: Discussion of timely, ongoing work being conducted in the Systems and Networking Research Group and elsewhere.
Required Knowledge: Actively conducting research with a faculty member in the Systems and Networking Research Group
Enforced Prerequisite: Yes. Enrollment is restricted to students working with a faculty member in the group.
Recommended Preparation for Those Without Required Knowledge: N/A
Link to Past Course: N/A
CSE 229C - Tops/Seminar/Computer Security with Prof. Nadia Heninger
Description: Discussion on problems of current research interest in computer security. Topics to be presented by faculty and students under faculty direction. Topics vary from quarter to quarter. May be repeated for credit.
Required Knowledge: N/A
Enforced Prerequisite: Yes. Consent of instructor.
Recommended Preparation for Those Without Required Knowledge: N/A
Link to Past Course: N/A
CSE 230 - Principles/Program Languages with Prof. Ranjit Jhala
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 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, but 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/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) aspects and features of modern 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. While this is important knowledge for power users of database systems, the class is NOT an introduction to SQL. The students are supposed to know SQL in advance.
Enforced Prerequisite: Yes. 132A or its equivalent.
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: http://www.db.ucsd.edu/static/CSE232S18/
CSE 237C - Validation and Testing of Embedded Systems with Prof. Ryan Kastner
Description: This class focuses on creating embedded system prototypes using a programmable system-on-chip. The class is graded primarily based on the performance in projects that are spread across the class. The projects require the student to implement a digital signal processing (DSP) core and integrate it into a prototype wireless RF system. Students will learn how to use modern high-level synthesis tools to create different DSP architectures.
Required Knowledge: This class is part of the 237 “Embedded Systems” series. This class stands on its own and does not require knowledge from any of the previous 237 classes. Having some understanding of basic digital signal processing (sampling, filtering, transforms) and wireless systems (modulation, estimation) is useful but not required. Equally helpful is having taken classes in computer architecture (and in particular understanding pipelining, memory hierarchy, and digital design). Again, it will be useful but not required as the class is taught in a way that is self-contained. Do note that most students have a good background in at least one of these areas (DSP or computer architecture); if you do not know either, then you will have to work harder.
Enforced Prerequisite: None.
Recommended Preparation for Those Without Required Knowledge: You can start by reading the book! The class is built around this book (and vice-versa) and the projects are related to the chapters in that book. For those who do not know DSP, there are countless resources for this. You can learn the basics of finite impulse response (FIR) filters, discrete Fourier transform, and fast Fourier transforms. These form some of the core computations for the projects. Each of these topics will be described in class, but you would be wise to have at least a decent understanding of how these work. The same is true for computer architecture; there are countless resources for this. You generally want to understand the components of a data path (control flow, data flow) and the tradeoffs in memory design (number of ports, throughput, hierarchy, etc.). We will primarily be using the Xilinx Vivado HLS design tool. There are a number of tutorials on this tool at the Xilinx website. If you want to start using the tool early, contact the instructor.
Link to Past Course: http://kastner.ucsd.edu/ryan/cse237c/
CSE 239A - Topics/Seminar in Databases with Prof. Arun Kumar
Description: Weekly seminar on the cutting edge of database research and practice.
Required Knowledge: N/A. It will help if you know what databases are.
Enforced Prerequisite: None.
Recommended Preparation for Those Without Required Knowledge: Take the relevant courses (232A, 232B, 233, 234, 132A, 132B, 132C) if interested in learning more about databases.
Link to Past Course: Active seminar webpage: https://dbucsd.github.io/seminar
CSE 240A - Princ/Computer Architecture with Prof. Hadi Esmaeilzadeh
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.
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: https://cseweb.ucsd.edu/classes/fa17/cse240A-a/
CSE 243A - Intr Synthesis Method VLSI CAD with Prof. Alex Orailoglu
Description: This course will provide an introduction to the main synthesis methodologies in hardware design, primarily, logic synthesis, and architectural synthesis.
Required Knowledge: Undergraduate level knowledge in digital design and Computer Architecture
Enforced Prerequisite: None.
Recommended Preparation for Those Without Required Knowledge: Please review Undergraduate level knowledge in digital design and Computer Architecture
Link to Past Course: http://cseweb.ucsd.edu/classes/fa18/cse243A-a/
CSE 249B - Topics/Seminar in VLSI with Prof. Andrew Kahng
Description: CSE 249B, Fall 2020, will focus on machine learning applications in IC physical design.
The goal is for each student to identify and execute a project that achieves a "project writeup that is submittable to a high-quality conference", by the end of the quarter. Project topics may be pursued in collaboration with others in the class. Instructor approval at the outset, and fairly continuous interactions, are expected. Students should have done well in CSE 241A / ECE 260B or otherwise be familiar with IC implementation (e.g., in an industrial IC design organization). Background and interest in the application of machine learning to areas wherein success depends heavily on domain knowledge, and where data is "small and expensive", are also required.
We will meet weekly Wednesdays 11:00am - 12:20pm (Pacific Time) by Zoom at a channel to which all enrolled students are invited. Students who are overseas should email Prof. Kahng to develop mechanisms by which course participation becomes viable.
Required Knowledge: Students should be familiar with IC physical implementation. Coursework such as CSE 250A, 250B or 253 is a plus. Familiarity with combinatorial algorithms is a plus. Students should have interest in the application of machine learning to areas wherein success depends heavily on domain knowledge, and where data is "small and expensive".
Enforced Prerequisite: Yes. Consent of instructor.
Recommended Preparation for Those Without Required Knowledge: Students who do not have the recommended preparation should contact the instructor well in advance of the quarter to obtain a reading list and some practice exercises.
Link to Past Course: N/A
CSE 250A - Probabilistic Reasoning & Learning with Prof. Lawrence Saul
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 Python, Matlab, Java, or C. Programming assignments are completed in the language of the student's choice.
Enforced Prerequisite: None.
Recommended Preparation for Those Without Required Knowledge: Review of multivariable calculus and linear algebra.
Link to Past Course: http://cseweb.ucsd.edu/classes/fa19/cse250A-a/
CSE 252A - Computer Vision I with Prof. David Kriegman
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. Will include both classical methods and those based on deep learning.
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/fa18/cse252A-a/
CSE 258 - Recommender Systems & 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: http://cseweb.ucsd.edu/classes/fa19/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: Yes. 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-winter-2020/home
CSE 274 - Selected Topics in Graphics (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. CSE 176 is recommended.
Enforced Prerequisite: None, but be aware of the required knowledge information.
Recommended Preparation for Those Without Required Knowledge: The course content will be similar to the Caltech/CMU course https://www.cs.cmu.edu/~kmcrane/Projects/DDG/ by Keenan Crane.
Link to Past Course: https://www.cs.cmu.edu/~kmcrane/Projects/DDG/
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, polls, quizzes, and assignments Evaluating your own progress in the course on a regular basisRequired Knowledge: Basic computational complexity, such as taught in CSE 200
Enforced Prerequisite: None.
Recommended Preparation for Those Without Required Knowledge: CSE 200
Link to Past Course: N/A, first offering
CSE 291 (J00) - Deep Learning Lab on Computer Vision Problems with Prof. Hao Su
Description: Deep learning has become a basic method for many application domains of artificial intelligence. While teaching materials of deep learning are easily accessible today, it is still tricky to practically apply the method after learning the theories. Many skills, such as choosing the correct toolchain, cleaning and augmenting training data, diagnosing errors, interpreting learned models, designing ablation experiments, have to be trained through extensive practices, better with instructions from experienced researchers.
This course aims to train students to solve challenging real problems, by working on a single project for the whole quarter. Candidate projects are carefully selected open challenges in Computer Vision (e.g., 3D segmentation of autonomous driving scenes, http://semantic-kitti.org/). The organization of the course will be in the flipped-class format: groups of students will collaborate to work on the project offline; the main content of the classes would be the discussions between the instructing staff and each group. Resources, guidance and feedback will be provided. It is expected that each student will invest above 20 hours per week.Required Knowledge: Participants have to be master or undergraduate students who have taken deep learning related courses on campus, or have previous research experiences in academia/industry labs.
Enforced Prerequisite: Yes. Instructor approval via Google Form.
Recommended Preparation for Those Without Required Knowledge: N/A
Link to Past Course: N/A
Required Knowledge: Since this is a graduate course we are typically quite loose with prerequisites.
Enforced Prerequisite: None.
Recommended Preparation for Those Without 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 Matlab as part of the class.
Link to Past Course: http://www.hichristensen.com/CSE276C-19/
CSE 290 (C00) - Automation and Algorithms Seminar with Prof. Sean Gao
Description: Students will present recent development in the algorithms for automation in a broad range of domains such as robotics, computer systems, and scientific discovery.
Required Knowledge: Familiarity with search/learning/optimization algorithms and knowledge/interest in a relevant engineering/scientific domain. Have relevant research work to present.
Enforced Prerequisite: None.
Recommended Preparation for Those Without Required Knowledge: N/A
Link to Past Course: N/A
CSE 290 (G00) - Data Center Reliability & Security Management with Prof. YY Zhou
Description: We will read and discuss very recent research papers and topics related to data center reliability and security, and identify new research ideas.
Required Knowledge: N/A
Enforced Prerequisite: Yes. Consent of instructor.
Recommended Preparation for Those Without Required Knowledge: N/A
Link to Past Course: N/A
CSE 290 (H00) - Pixel Cafe with Prof. Ravi Ramamoorthi
Description: Seminar covering latest research in visual computing (computer vision and graphics). Speakers include faculty, students within the center for visual computing, and external speakers.
Required Knowledge: N/A
Enforced Prerequisite: Yes. Consent of instructor.
Recommended Preparation for Those Without Required Knowledge: N/A
Link to Past Course: N/A
CSE 290 (I00) - Learning for Interaction Seminar with Prof. Hao Su
Description: This seminar is for students and visitors to present research progress on using machine learning methods to integrate perception, planning, and control for building autonomous agents that can intelligently interact with the physical world. Research problems include learning principles such as reinforcement learning, imitation learning, and continual learning, and their applications for learning-based geometry/dynamics modeling, multi-body interaction, robot simulator construction, object manipulation, etc.
Required Knowledge: N/A
Enforced Prerequisite: Yes. Consent of instructor.
Recommended Preparation for Those Without Required Knowledge: N/A
Link to Past Course: N/A
CSE 291 (A00) - Advanced Data-Driven Text Mining with Prof. Jingbo Shang
Description: 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, and 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: None.
Recommended Preparation for Those Without Required Knowledge: Intro-level AI, ML, Data Mining courses.
Link to Past Course: None, this is the first offering.
CSE 291 (C00) - Probabilistic Approaches to Unsupervised Learning with Prof. Sanjoy Dasgupta
Description: This course is a rigorous treatment of latent variable models and other probabilistic approaches to unsupervised learning. The models we'll cover include exponential families, mixture models, hidden Markov models, Dirichlet processes, topic models, and variational autoencoders. The class will emphasize algorithms with provable guarantees for sampling, inference, and learning.
Required Knowledge: Familiarity with the basics of linear algebra, probability and statistics, and algorithms.
Enforced Prerequisite: None
Recommended Preparation for Those Without Required Knowledge: Course will not be manageable without acquiring this background.
Link to Past Course: None, this is the first offering of the course.
CSE 291 (D00) - Data Systems for Machine Learning 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 and the latest research. This is a lecture-driven course with quizzes, exams, and paper reading components for evaluation. It is primarily tailored for MS students interested in the state of the art of systems for scalable data science and ML engineering.
Required Knowledge: A course on ML 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, but no specific course numbers are enforced. A mainstream ML algorithms course is needed (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 needed.
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: http://cseweb.ucsd.edu/classes/wi19/cse291-f/
CSE 291 (E00) - 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, symmetric cryptography, stream ciphers, block ciphers, hash functions, modes of operation, public-key cryptography and cryptanalysis, RSA, Diffie-Hellman, DSA, elliptic curve cryptography, algorithmic techniques in cryptanalysis, secure channels, TLS, and cryptography in practice.
Required Knowledge: Mathematical maturity
Enforced Prerequisite: Yes. CSE 202 or consent of instructor.
Recommended Preparation for Those Without Required Knowledge: N/A
Link to Past Course: https://cseweb.ucsd.edu/classes/sp20/cse291-i/
CSE 291 (F00) - Algorithms for Big Data with Prof. Cyrus Rashtchian
Description: Many data-driven areas (computer vision, AR/VR, recommender systems, computational biology) rely on probabilistic and approximation algorithms to overcome the burden of massive datasets. This course explores a foundational view of these techniques by analyzing them through a geometric lens. The first two weeks will review linear algebra (normed spaces, orthogonality, random matrices) and randomized algorithms (approximation guarantees, concentration inequalities). Then, we dive into designing and analyzing algorithms for big data. The main topics include: sampling/sketching, dimensionality reduction, clustering, nearest neighbor search, and distributed models. Throughout the course, we will discuss motivating applications and current research trends, such as adversarial robustness, explainable AI, and learned embeddings.
Required Knowledge: Intermediate understanding of algorithms, linear algebra, and probability theory. Mathematical maturity is a must: the class is based on theoretical ideas, and you are expected to be able to read and write formal mathematical proofs. Exposure to graduate-level randomized algorithms is a plus.
Enforced Prerequisite: None.
Recommended Preparation for Those Without Required Knowledge: Review algorithmic ideas (data structures, hashing, binary search), linear algebra fundamentals (Euclidean distance, Manhattan distance, inner products, cosine similarity), and probability fundamentals (expectation, variance, independence, Markov's inequality).
Link to Past Course: http://madscience.ucsd.edu/cse291.html
CSE 291 (G00) - Deep Generative Models with Prof. 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, molecular design, amongst many others. This course will cover recent advances in deep generative models, including variational autoencoders, generative adversarial networks, autoregressive models, and normalizing flow models. This is a Ph.D. level course with 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 250A or its equivalent.
Recommended Preparation for Those Without Required Knowledge: CSE 253 Deep Neural Networks or equivalent, experience with deep learning frameworks
Link to Past Course: N/A, first offering
CSE 291 (H00) - Social 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: N/A
Enforced Prerequisite: None.
Recommended Preparation for Those Without Required Knowledge: N/A
Link to Past Course: N/A, first offering
CSE 291 (I00) - The KRW Conjecture with Prof. Shachar Lovett
Description: The KRW conjecture is a central conjecture in computational complexity theory. It speculates that not all computational problems can be parallelized efficiently, and some computational tasks are inherently sequential. During the last several decades, there has been progress towards resolving this conjecture, but many open questions remain. This course would both survey known results and discuss these open problems, as well as connections to other fields.
Textbook: Robotics, Vision & Control, Peter Corke, Springer Verlag. (see its webpage for links)
Required Knowledge: This is an introductory graduate class, so a minimum of formal requirements is assumed beyond an ability to program.
Enforced Prerequisite: None.
Recommended Preparation for Those Without Required Knowledge: N/A
Link to Past Course: http://www.hichristensen.com/CSE276A-19/
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. Consider these skills to recognize objects from point-cloud data. 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. - Spring 2020 Graduate Course Information
-
This is historical data. This page serves the purpose to help graduate students understand each graduate course offered during Spring 2020.
CSE 201A - Advanced Complexity with Prof. Russell Impagliazzo
Description: This class picks up where CSE 200 leaves off, presenting advances in computational complexity since the 1980s. In particular, we will consider the impact of the resolution of open problems in complexity to cryptography, machine learning, approximation algorithms, heuristics, and derandomization.
Required Knowledge: We assume students have had a previous graduate course in basic complexity, such as CSE 200, and have some general mathematical maturity, including the ability to recognize and write a valid proof. 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.
Enforced Prerequisite: Yes. Students who have not taken CSE 200 or the equivalent need permission from the instructor.
Recommended Preparation for Those Without Required Knowledge: CSE 200 is being offered in Winter 2020. Students could audit this class.
Link to Past Course: https://cseweb.ucsd.edu/classes/sp11/cse201A-a/
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: See above
Recommended Preparation for Those Without Required Knowledge: See above
Link to Past Course: https://cseweb.ucsd.edu/~wgg/CSE218/index.html
CSE 223B - Distributed Computing and Systems with Prof. Alex Snoeren
Description: CSE 223B is a 4-unit graduate subject with lectures, paper discussions, labs, a midterm, a final, and a term project. It will present abstractions and implementation techniques that facilitate the design of distributed systems--including both operating systems and sophisticated Internet servers--that can deal with the demands of real-world workloads. Topics will include efficient operating system primitives, high-performance network servers, load shedding, storage systems, security, and fault tolerance.
Required Knowledge: CSE 221 (or consent of instructor) and substantial programming experience for lab assignments and term project. Note that CSE 223A is not a prerequsite. However, those interested in the theoretical underpinnings of distributed computation are encouraged to take CSE223A as well. CSE223A and CSE223B may be taken in any order.
Enforced Prerequisite: Yes. CSE 221 or instructor consent
Recommended Preparation for Those Without Required Knowledge: CSE221 / CSE222A
Link to Past Course: http://cseweb.ucsd.edu/classes/sp18/cse223B-a/
CSE 227 - Computer Security with Prof. Deian Stefan
Description: This course focuses on computer security, exploring a range of topics – from systems security to web security, IoT security, and privacy – to illustrate some of the modern research challenges in the area and the standards for advancement. It is not designed to be a tutorial course, but rather to give students the context to understand current security research and evaluate their interest in the field. The course will examine both the defensive and offensive side of the field. At the conclusion of the course, the student will have the foundation to conduct research in computer security and to apply the latest security research to a particular area of practice.
Required Knowledge: Undergrad security + some OS class or some PL class
Enforced Prerequisite: Yes. Two classes from the following choices: CSE 127, CSE 120/221, and CSE 130/230
Recommended Preparation for Those Without Required Knowledge: Take CSE 120, CSE 127, CSE 130, CSE 221, and/or CSE 230
Link to Past Course: N/A
CSE 230 - Principles/Program Languages with Prof. Ranjit Jhala
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 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, but 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 233 - Database Theory with Prof. Victor Vianu
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 237D - Design Automation & Prototyping with Prof. Ryan Kastner
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: None.
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: http://kastner.ucsd.edu/ryan/cse-237d-embedded-system-design/
CSE 240C - Advanced Microarchitecture with Prof. Hadi Esmaeilzadeh
Description: This incarnation of the CSE 240C will focus on Accelerated Architecture Design for Machine Learning and Artificial Intelligence.
A wide range of commercial and enterprise applications such as health monitoring, social networking, e-commerce, and financial analysis, rely on Machine Learning (ML) to accomplish their objectives. In fact, the advances in machine learning are changing the landscape of computing towards a more personalized and targeted experience for users. For instance, services that provide personalized health-care and targeted advertisements are either prevalent or on the horizon. Nevertheless, machine learning algorithms are computationally intensive workloads. Specifically, learning a model from data requires substantial amount of computation that is repeated over the training data for a relatively large number of iterations. While the demand for these computationally intensive techniques is increasing, the benefits from general-purpose solutions is diminishing. With the effective end of Dennard scaling, traditional CMOS scaling no longer provides performance and efficiency gains commensurate with increases in transistor density. The current paradigm of general-purpose processor design falls significantly short of the traditional cadence of performance improvements. These challenges have coincided with the explosion of data where the rate of data generation has reached an overwhelming level that is beyond the capabilities of current computing systems to match. As a result, both the industry and the research community are focusing on programmable accelerators, which can provide large gains in efficiency and performance by restricting the workloads they support. In this course, we will first thoroughly examine these trends to understand the underlying research challenges and opportunities. Second, we will devise novel technologies to build the foundation of next generation computing systems for artificial sentience and consciousness.
The course will be a combination of lectures, student presentation, and separate brainstorming sessions in which we will collectively explore and develop new ideas on each topic. The students will do a project based on one of these ideas. There is no required textbook. All relevant materials will be made available online.
Required Knowledge: The students are expected to be comfortable with a) computer architecture, and b) programming in a language such as Python or C/C++.
Enforced Prerequisite: None
Recommended Preparation for Those Without Required Knowledge: Through the study of computer architecture and mastering programming.
Link to Past Course: https://hadiclass.github.io/cse240c-wi18/index.html
CSE 240A - Princ/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://hadiclass.github.io/cse240a-fa18/index.html
CSE 252C - Advanced Computer Vision with Prof. Manmohan Chandraker
Description: This course will cover advanced concepts in computer vision and focus on recent developments in the field. Example topics include 3D reconstruction, object detection, semantic segmentation, multi-target tracking, action recognition, reflectance estimation, image captioning and domain adaptation. The class will be composed of lectures by the instructor, but with a participation element too where students will engage through lightning presentations. Grading will be based on a participation, mid-term, final exam and course project.
Required Knowledge: Previous experience with computer vision and deep learning is required. Programming experience in Python is required.
Enforced Prerequisite: Yes. Students who have taken 2 out of the following courses are allowed to enroll directly: 250B, 252A, 252B, 253, 254.
For students who have taken only 1 of those courses, please put on waitlist and student should send the instructor an email, with subject “SP20 CSE 252C: Request to enroll.” The email should contain description of their prior coursework and project experience relevant to computer vision.
Recommended Preparation for Those Without Required Knowledge: CSE 252A, CSE 252B, graduate machine learning classes offered in the CSE and COGS departments.
Link to Past Course: http://cseweb.ucsd.edu/~mkchandraker/classes/CSE252C/Spring2019/
CSE 276D - Healthcare Robotics with Prof. Laurel Riek
Description: Robotics has the potential to improve well-being for millions of people, support caregivers, and aid the clinical workforce. This course brings together engineers, clinicians, and end-users to explore this exciting new field. It is project-based, interactive, and hands-on, and involves working with stakeholders to develop prototypes that solve real-world problems. Students will explore the latest research in healthcare robotics, human-robot teaming, and health design.
Required Knowledge: This course will involve design thinking, physical prototyping, and software development. Students with backgrounds in engineering should be comfortable with building and experimenting within their area of expertise. (e.g., CSE students should be experienced in software development, MAE students in rapid prototyping, etc.). Students with backgrounds in design should be comfortable employing mixed-methods approaches to designing with stakeholders. All students should be open to learning how to work with stakeholders from the community, including clinicians and people with disabilities.
Enforced Prerequisite: None.
Recommended Preparation for Those Without Required Knowledge: Any of the following: CSE 276A, CSE 276B, CSE 216, CSE 219, MAE 207, MED 265, CLRE 252
Link to Past Course: N/A
CSE 276E - Robotic System Design & Implementation with Prof. Steven Swanson
Description: End-to-end system design of embedded electronic systems including PCB design and fabrication, software control system development, and system integration. The course is an intensive capstone project course that provides students a chance to integrate knowledge from a wide range of domains into a single project.
Required Knowledge: Basic electronics and intermediate C/C++ programming.
Enforced Prerequisite: None.
Recommended Preparation for Those Without Required Knowledge: Read through an undergraduate circuits textbook. If you don’t know how to program, you should not take the class.
Link to Past Course: https://sites.google.com/a/eng.ucsd.edu/quadcopterclass/
CSE 283 - Genomics/proteomics/netwk biol with Prof. Vineet Bafna
Description: The development of omics technologies provides us with an unprecedented opportunity to understand cellular function, and higher levels of organization. In this class, we will focus on big data being generated in biology, and the techniques used to analyze the data.
Required Knowledge: While the course should be self-contained, we assume some mathematical maturity. Students who have taken CSE202, CSE282 will find the material more accessible.
Enforced Prerequisite: None.
Recommended Preparation for Those Without Required Knowledge: Online class on Bioinformatics algorithms
Link to Past Course: http://proteomics.ucsd.edu/vbafna/teaching-2/data-wrangling-in-bix/
CSE 284 - Personal Genomics/Bioinformatics with Prof. Melissa Gymrek
Description: Genome-sequencing is quickly becoming a commodity, and more than a million 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: CSE 185
Link to Past Course: http://gymreklab.com/teaching/personal_genomics/personal_genomics_2017.html
CSE 291 (A00) - Advanced Statistical Natural Language Processing with Prof. Taylor Berg-Kirkpatrick
Description: This course will explore current statistical techniques for the automatic analysis of natural (human) language data. The dominant modeling paradigm is corpus-driven statistical learning, with a split focus between supervised and unsupervised methods. Advanced Statistical NLP is a lab-based course. Instead of homework assignments and exams, you will complete four hands-on coding projects. We will also consider practical constraints that affect the scalability of real-world NLP systems to big data.
Required Knowledge: This course assumes a strong background in probability, some background in probabilistic graphic models, and a strong ability to program in Java. Prior experience with linguistics or natural languages is helpful, but not required. There will be a lot of statistics, algorithms, and coding in this class. Recommended perquisites are courses on discrete mathematics, probability, statistics, probabilistic graphical models, algorithms, and linear algebra.
Enforced Prerequisite: None
Recommended Preparation for Those Without Required Knowledge: Review probability theory (e.g. conditional independence, probabilistic graphical models) and practice dynamic programming (e.g. Viterbi algorithm) in a language like C++ or Java.
Link to Past Course: http://www.cs.cmu.edu/~tbergkir/11711fa17/
CSE 291 (B00) - Topics in Trustworthy Machine Learning with Prof. Kamalika Chaudhuri
Description: This is a PhD level course on emerging topics in trustworthy machine learning. Traditionally machine learning research has focussed largely on designing methods that have high classification accuracy; however, putting these methods into practice requires attention to other aspects -- such as robustness, interpretability, privacy and fairness -- so that the results obtained can be trusted. This class will look at some of these aspects -- in particular, robustness and causality. If time permits, we will also look at privacy.
Required Knowledge: One or more graduate-level machine learning classes -- CSE 250A/B/C. Graduate-level probability.
Enforced Prerequisite: None
Recommended Preparation for Those Without Required Knowledge: Take the recommended classes in Required Knowledge.
Link to Past Course: N/A
CSE 291 (C00) - Topics on Numerical Methods for Engineering with Prof. CK Cheng
Description: The class covers topics on numerical methods for engineering. We model the system in high dimensional space with temporal behavior. The techniques of matrix solvers, matrix functions, and parallel processing will be discussed. The numerical issues for approximation such as stiffness, stability, and convergence will be reviewed. Students are encouraged to carry out the state of the art projects with team members.
Required Knowledge: Linear algebra
Enforced Prerequisite: Yes. CSE203B, ECE273 or MATH 245A
Recommended Preparation for Those Without Required Knowledge: N/A
Link to Past Course: http://cseweb.ucsd.edu/classes/sp14/cse291-b/
CSE 291 (D00) - Unsupervised Learning with Prof. Sanjoy Dasgupta
Description: A broad overview of unsupervised learning, with emphasis on basic principles and on algorithmic and statistical guarantees.
Required Knowledge: Basic coursework in machine learning (at the level of CSE 250B); algorithms (at the level of CSE 202); probability and statistics (at the level of CSE 103); and linear algebra (at the level of Math 18).
Enforced Prerequisite: None.
Recommended Preparation for Those Without Required Knowledge: Consult materials for the courses listed above.
Link to Past Course: N/A
CSE 291 (E00) - Deep Learning for Sequences with Prof. David Kriegman
Description: Deep learning has had an enormous impact and has been especially effective for images (ConvNets) and sequences (RNN’s). This course focusses on deep learning for sequence processing and their application including video understanding, language translation, speech recognition, image captioning, OCR, and financial market prediction. After creating a foundation in common architectures (RNN, LSTM, GRU, Attention) and their training, we will dig into recently published papers that highlight methods and applications of deep learning for sequence processing. Each paper will be presented by a student, and all students are expected to participate in a critical discussion of these papers. There will be one or two programming assignments and a full quarter project (individual or small group).
Required Knowledge: Students should have sufficient experience in deep learning to both present papers and engage in critical discussion; they should have experience with deep learning frameworks to implement a substantial full quarter project. There are many ways to have acquired this background including, but not limited to courses such as CSE 253, COGS 181, etc
Enforced Prerequisite: None.
Recommended Preparation for Those Without Required Knowledge: N/A
Link to Past Course: https://paper.dropbox.com/doc/CSE291G-2019-Syllabus-Deep-Learning-for-Sequences--As9DXJb3Vv7TPEIC9wkz8paUAg-wmrBlSsIMnBsZt5kOFHcj
CSE 291 (F00) - Computational Photography with Prof. Ben Ochoa
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. MATLAB, Python, 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.
CSE 291 (G00) - Deep Learning for Semantics, Geometry, and Physics in Robotics with Prof. Hao Su
Description: We will study the latest progress of machine learning methods for semantic understanding, geometry reconstruction and processing, and physics simulation. The course is project-based and will include lecturer presentation and student presentation of fundamental knowledge and recent papers.
Required Knowledge: Machine Learning, Deep Learning, Computer Vision, Geometry, and Physics
Enforced Prerequisite: Yes. WI20 CSE 291 (F00), WI19 CSE 291 (C00), or instructor consent
Recommended Preparation for Those Without Required Knowledge: Go through CSE291-F in Winter 2020.
Link to Past Course: N/A
CSE 291 (H00) - Physics Simulation with Prof. Steven Rotenberg
Description: This course will focus on computational physics simulation with an emphasis on the dynamics of motion. Specific sub-topics include rigid body dynamics, deformable body dynamics, contact, fracture, and fluid dynamics. Additional topics may include galactic, molecular, and vehicle dynamics.
Required Knowledge: Familiarity with Newtonian mechanics. Familiarity with C++ or similar programming language. Familiarity with OpenGL or similar graphics API.
Enforced Prerequisite: None.
Recommended Preparation for Those Without Required Knowledge: Gain familiarity with the topics listed above.
Link to Past Course: https://cseweb.ucsd.edu/classes/sp19/cse291-d/
CSE 291 (I00) - Applied Cryptography with Prof. Nadia Heninger
Description: This course will cover topics in applied cryptography, with a focus on cryptography in the real world. This quarter we will plan to focus on practical cryptanalysis. There will be implementation exercises and a project.
Required Knowledge: The main prerequisite is mathematical maturity. Algorithms, some algebra, basic number theory, and probability will be useful. Students coming from mathematics should be comfortable with programming.
Enforced Prerequisite: None.
Recommended Preparation for Those Without Required Knowledge: N/A
Link to Past Course: N/A
CSE 291 (J00) - Advanced Deep Learning with Prof. Gary Cottrell
Description: CSE 291 is a seminar on recent advances in Deep Learning. Students are expected to present one or two papers to the class (depending on enrollment) The course consists of students giving 30 minute talks (+ 10 for questions) on recent papers on a variety of topics in deep learning. Students are encouraged to find papers they are interested in, although a list will also be provided by the professor. Eighty percent of the grade will be based on a project developed over the quarter by students working by themselves or in pairs. The last two weeks of the course will be devoted to project presentation. The project should incorporate a significant extension to some recent results, although it does not need to be successful in the sense of advancing the state of the art in order to get full credit. Successful projects should be submitted to NeurIPS.
Required Knowledge: Familiarity with and experience using deep learning.
Enforced Prerequisite: Yes. CSE 253, an equivalent course, or work experience.
Recommended Preparation for Those Without Required Knowledge: CSE 253 or an equivalent course in deep learning.
Link to Past Course: N/A; this is the first offering of course
- Winter 2020 Graduate Course Information
-
This is historical data. This page serves the purpose to help graduate students understand each graduate course offered during Winter 2020.
CSE 200 - Computability and Complexity with Prof. Shachar Lovett
Description: This class is an introduction to computational complexity theory. This area aims to understand the various resources needed to solve computational problems. Such resources include the obvious ones, such as time and memory, but also possibly less obvious ones, such as randomization, interaction and non-uniformity. In addition, we will attempt to classify problems as "easy" or "hard", study relations between easy and hard problems, as understand why the "P vs NP" problem is possibly the most important open problem in computer science, mathematics and science at large.
Required Knowledge: CSE 20, 21, 101, 105 or equivalent classes
Recommended Preparation for Those Without Required Knowledge: Standard textbooks on discrete math, algorithms and computability.
Link to Past Course: http://cseweb.ucsd.edu/classes/wi18/cse200-a/
CSE 202 - Algorithm Design and Analysis with Prof. Ragesh Jaiswal
Description: We will cover basic algorithm design paradigms such as greedy algorithms, divide and conquer, dynamic programming, and network flows. We will also learn about computational intractability. If time permits, we will take up advanced topics such as randomized algorithms and Linear Programming.
Required Knowledge: I will assume that the students have exposure to undergraduate discrete mathematics and algorithm design and analysis. Students should be comfortable with reading and writing proofs. I will follow the Algorithm Design book by Kleinberg and Tardos and I will assume that students are comfortable with chapters 1-3 in the book.
Recommended Preparation for Those Without Required Knowledge: Students without adequate background in Discrete Mathematics and Algorithms should consider taking undergraduate courses CSE20, CSE21, CSE101.
Link to Past Course: http://cseweb.ucsd.edu/~rajaiswal/cse202/index.html
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, duality concepts, gradient descent, conjugate gradient, interior-point methods, and applications. The objective of the course is to provide students the background and techniques for scientific computing and system optimization.
Required Knowledge: Linear algebra.
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: http://cseweb.ucsd.edu/classes/fa17/cse291-a/
CSE 208 - Advanced Cryptography with Prof. Mihir Bellare
Description: Topics are Non-interactive Zero-Knowledge and Post-Quantum Cryptography.
Required Knowledge: Modern cryptography as per CSE 207
Recommended Preparation for Those Without Required Knowledge: Foundations of Cryptography by Oded Goldreich
Link to Past Course: N/A
CSE 216 - Research Topics in Human-Computer Interaction with Prof. Scott Klemmer
Description: Please see website below for more information.
Required Knowledge: Please see website below for more information.
Recommended Preparation for Those Without Required Knowledge: Please see website below for more information.
Link to Past Course: https://d.ucsd.edu/IxD/research/2019/
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 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.
Recommended Preparation for Those Without Required Knowledge: CSE 120 (or equivalent)
Link to Past Course: http://cseweb.ucsd.edu/classes/fa18/cse221-a/
CSE 222A - Computer Communication Networks with Prof. George Porter
Description: CSE 222A is a graduate course on computer networks. The continued exponential growth of the Internet has made the network an important part of our everyday lives. Companies use the network to conduct business, doctors to diagnose medical issues, etc. This course will provide a broad understanding of exactly how the network infrastructure supports distributed applications. Topics covered in the course include: Internet routing, software-defined networking, data centers, content distribution networks, and peer-to-peer systems.
This is a research-oriented course focusing on current and classic papers from the research literature. Further, all students will work on an original research project, culminating in a project writeup and conference-style presentation. In the past, the very best of these course projects have resulted (with additional work) in publication in top conferences.
Required Knowledge: Knowledge of operating systems required. Ideally exposure to an undergraduate-level computer networking course (e.g. UCSD's CSE 123)
Recommended Preparation for Those Without Required Knowledge: Peterson & Davie, "Computer Networks: A Systems Approach"
Link to Past Course: https://cseweb.ucsd.edu/classes/wi19/cse222A-a/index.html
CSE 231 - Advanced Compiler Design with Prof. Sorin Lerner
Description: In this course, we will explore the basic techniques that are the cornerstone of a variety of program analysis tools, including optimizing compilers, just-in-time compilers, program verifiers, bug fingers, code refactoring tools, garbage collectors, and runtime monitoring systems. These techniques may come in handy, no matter what field of CS you end up working in. The course will have a large project component.
Required Knowledge: Programming in C++.
Recommended Preparation for Those Without Required Knowledge: Learn how to program in C++.
Link to Past Course: https://ucsd-pl.github.io/cse231/wi18/
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 comfortable programming in Java.
Recommended Preparation for Those Without Required Knowledge: N/A
Link to Past Course: https://cseweb.ucsd.edu/classes/sp16/cse232B-a/
CSE 237A - Intro to Embedded Computing with Prof. Tajana Rosing
Description: Increasing integration of communications, multimedia and processing and relentless digitization of data (including even RF data) continues to expand the scope and complexity of embedded systems. To appreciate these advances, and to productively contribute to future advances of these systems, a critical appreciation of the underlying technology underpinning is a must. The goal of this course is to develop a comprehensive understanding of the technologies behind the embedded systems, particularly, those using computing elements (processor, DSP, or ASPs). 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 between different technology choices.
Required Knowledge: None.
Recommended Preparation for Those Without Required Knowledge: undergraduate computer architecture, operating systems, Linux
Link to Past Course: http://cseweb.ucsd.edu/classes/wi18/cse237A-a/
CSE 237C - Validation & Testing of Embedded Systems with Prof. Ryan Kastner
Description: This class focuses on creating embedded system prototypes using a programmable system-on-chip. The class is graded primarily based on the performance in projects that are spread across the class (one approximately every two weeks). The projects require the student to implement a digital signal processing (DSP) core and integrate it into a prototype wireless RF system. Students will learn how to use modern high-level synthesis tools to create different DSP architectures.
Required Knowledge: This class is part of the 237 “Embedded Systems” series. This class stands on its own and does not require knowledge from any of the previous 237 classes. Having some understanding of basic digital signal processing (sampling, filtering, transforms), and even better wireless systems, is useful but not required. Equally helpful is having taken classes in computer architecture (and in particular understanding pipelining, memory hierarchy, and digital design). Again, it will be useful but not required as the class is taught in a way that is self-contained. Do note that most students have a good background in at least one of these areas (DSP or computer architecture); if you do not know either, then you will have to work harder.
Recommended Preparation for Those Without Required Knowledge: For those who do not know DSP, there are countless resources for this. You would be wise to understand finite impulse response (FIR) filters, discrete Fourier transform, and fast Fourier transforms. These form some of the core computations for the projects. Each of these topics will be described in class, but you would be wise to have at least a decent understanding of how these work. The same is true for computer architecture; there are countless resources for this. You generally want to understand the components of a data path (control flow, data flow) and the tradeoffs in memory design (number of ports, throughput, hierarchy, etc.). We will primarily be using the Xilinx Vivado HLS design tool. There are a number of tutorials on this tool at the Xilinx website. If you want to start using the tool early, contact the instructor.
Link to Past Course: http://kastner.ucsd.edu/ryan/cse237c/
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. Topics covered include but not limited to: multiprocessor cache coherency, data consistency and data ordering models, synchronization mechanisms, heterogeneous systems, distributed shared memory computer systems, programming models, accelerators, data center architectures.
Required Knowledge: Background in computer architecture. Some knowledge of C programming is helpful but not essential. 240A or equivalent.
Recommended Preparation for Those Without Required Knowledge: See instructor.
Link to Past Course: N/A
CSE 241A - VLSI Integrated Computing Circuitry with Prof. Andrew Kahng
Description: Design methodologies and tradeoffs in the physical ("netlist to layout") implementation of VLSI systems. Algorithm and optimization foundations for solution of interconnection, clustering, partitioning, placement, power-ground distribution, clocking, routing, performance estimation, timing closure and other fundamental VLSI physical design problem classes. Computer-aided design and performance analysis algorithms and optimization frameworks are studied in the context of lectures/homeworks, design exercises and mini-projects.
Textbook: Weste and Harris, CMOS VLSI Design: A Circuits and Systems Perspective, 4th edition.
Required Knowledge: Layout (ECE 165 or ECE 260A) and logic design (CSE 140) are strongly recommended as background.
Recommended Preparation for Those Without Required Knowledge: Study of a VLSI Design book such as Weste/Harris (used in ECE 260A), and browsing of a VLSI physical design algorithms book such as Sherwani.
Link to Past Course: Not possible (course website is password-protected due to IP access restrictions agreed to by UCSD and various companies (EDA, foundry).
CSE 250B - Learning Algorithms with Prof. Kamalika Chaudhuri
Description: The course will cover three broad subjects:
I. Prediction problems (classification, regression, and conditional probability estimation). Methods covered will include nearest neighbor classification, generative models for classification, linear regression, logistic regression, support vector machines, kernel methods, boosting, and random forests. The emphasis will be on developing a sound understanding of these methods, based on probability, linear algebra, and optimization.
II. Representation learning. Methods covered will include k-means clustering, hierarchical clustering, principal component analysis, singular value decomposition, multidimensional scaling, and manifold learning.
III. Deep learning. Deep networks will be presented as a marriage of representation learning and predictive modeling.
Throughout the course, the focus will be on four desiderata: efficiency, confidence, convergence, and interpretability.
Required Knowledge: No prerequisites are enforced, but lack of the following will prove to be a significant impediment:
Proficiency with Python, preferably using notebooks.
Familiarity with multivariate calculus, basic probability, and linear algebra.Recommended Preparation for Those Without Required Knowledge: N/A
Link to Past Course: http://cseweb.ucsd.edu/~dasgupta/250B/index.html
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: No prerequisites are enforced, but lack of the following will prove to be a significant impediment: MATLAB, Python, or other programming experience; and linear algebra, calculus, basic probability and statistics.
Recommended Preparation for Those Without Required Knowledge: Undergraduate courses and textbooks.
Link to Past Course: https://cseweb.ucsd.edu/classes/wi19/cse252B-a/
CSE 253 - Neural Networks and Deep Learning with Prof. Gary Cottrell
Description: This course covers logistic and softmax regression, back propagation, deep learning, convolutional networks, recurrent nets, and some recent papers. The course is in a lecture format, but most of your learning will occur from doing programming assignments. The programming assignments are time consuming. There are four of them plus a final project of your own choosing at the end (done in teams). A typical final project will replicate some recent work, perhaps on a different dataset.
Required Knowledge: Linear algebra, multivariate calculus, probability and statistics.
Recommended Preparation for Those Without Required Knowledge: If you are missing the math background, you should acquire it via online courses or by taking classes at UCSD. This math background is essential.
Link to Past Course: The course uses Piazza as its web page; everything will be there. The previous version of the course is inactive.
CSE 254 - Statistical Learning with Prof. Yoav Freund
Description: This is probably the simplest example of online learning:
A binary sequence is revealed to you one bit a time: x_1,x_2,x_3 .... Before you each prediction of the bit x_t, you get the predictions of n experts: e^1_t, e^2_t, .... e^n_t (e^i_t are bits as well).Your goal is to predict the sequence with as few mistakes as possible. You know that one of the experts is perfect: never makes a mistake.
There is a simple strategy that is guaranteed to make at most log_2(n) mistakes. Can you find it?
This simple idea has been expanded and extended in the last 20 years to many different problems including game theory, Stochastic gradient descent, Portfolio selection as well as many many others.
This class will tour parts of this vast research area. As starting points we will use the following three books:
1. Prediction Learning and Games, by Nicolo Cesa-Bianchi and Gabor Lugosi
2. Online Convex Optimization by Elad Hazan
3. Probability and Finance, It's only a game! by Glenn Shafer and Vladimir Vovk.Required Knowledge: This class is intended for PhD students working in theoretical computer science, computational learning theory and math. To see if you are ready to take this class read pages 1-20 of book 1 (sections 1.1 - 2.3 inclusive). You should be able to explain the proofs.
Recommended Preparation for Those Without Required Knowledge: N/A
Link to Past Course: https://yoavfreund.miraheze.org/wiki/OnlineLearning2018
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++). Familiarity with computer architecture and operating systems is useful but not strictly 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 instructor for more help or advice.
Link to Past Course: https://sites.google.com/eng.ucsd.edu/cse260-winter-2019/home
CSE 280A - Algorithms in Computational Biology with Prof. Vineet Bafna
Description: This course covers algorithms for population genetics. The ability to re-sequence our genomes has given us an unprecedented ability to understand our genetic history. In this course, we cover some of the basic theory and algorithmic strategies used to mine our genome.
Required Knowledge: Basic undergraduate level probability and combinatorics, knowledge of data structures and algorithms (CSE101 or equivalent), and some linear algebra. No Biological knowledge is assumed, but the student is expected to learn modern biology as it is being taught in class.
Recommended Preparation for Those Without Required Knowledge: Please take CSE282, CSE202, or UCSD's online course on algorithms.
Link to Past Course: http://proteomics.ucsd.edu/vbafna/teaching-2/cse280a-algorithms-for-genetics/
CSE 282 - Bioinformatics II: Sequence and Structure Analysis - Methods and Applications 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.
Recommended Preparation for Those Without Required Knowledge: If you don’t have the required knowledge listed above, you should take the online UCSD course on Algorithms on Coursera.
Link to Past Course: N/A
CSE 291 (A00) - Domain Adaptation in Computer Vision with Prof. Manmohan Chandraker
Description: Computer vision has made rapid progress in the era of deep learning. This is largely attributed to the availability of large-scale labeled data, coupled with GPU computation. Yet, computer vision models trained on a domain, say day images, often do not generalize to new domains, say images acquired at night. It is expensive to label data for all possible scenarios, but unlabeled data is easier to obtain. In this course, we will study concepts in unsupervised domain adaptation, with applications to various computer vision problems, such as image classification, semantic segmentation, object detection, face recognition and 3D reconstruction.
Required Knowledge: This is an advanced class, covering recent research progress. Graduate students with a strong interest in computer vision may enroll. Prior background in computer vision and machine learning is required, preferably through research experience or as covered by CSE 252 and similar offerings. Students are encouraged to contact the instructor if unsure about meeting any criteria for enrollment.
Recommended Preparation for Those Without Required Knowledge: CSE 252A, CSE 252C, or Stanford CS 231n
Link to Past Course: http://cseweb.ucsd.edu/~mkchandraker/classes/CSE291/Winter2019/
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)
Recommended Preparation for Those Without Required Knowledge: N/A
Link to Past Course: https://github.com/nadia-polikarpova/cse291-program-synthesis/wiki
CSE 291 (C00) - Topics in Search and Optimization with Prof. Sean Gao
Description: The course will discuss important algorithmic ideas for NP-hard search and optimization problems. Topics include heuristic search, Monte Carlo tree search, conflict-driven search, deep reinforcement learning, nonlinear optimization, mixed-integer optimization, and reliable global optimization.
Required Knowledge: Linear optimization
Recommended Preparation for Those Without Required Knowledge: N/A
Link to Past Course: https://scungao.github.io/s19/index.html
CSE 291 (D00) - Topics in Computer Science with Prof. YY Zhou
Description: This class aims to build the inter-discipline foundation for graduate students or advanced undergraduate students to conduct research and projects on system architecture (aka, working on projects that require knowledge about the entire hardware-system stack). It includes classic topics and recent trends ranging from computer architectures, compilers, program analysis to operating systems.
Required Knowledge: Advanced operating system concepts, basic computer architecture concepts and principles, basic compiler concepts.
Recommended Preparation for Those Without Required Knowledge: Take/audit the prerequisite classes.
Link to Past Course: N/A
CSE 291 (F00) - Topics in Computer Science with Prof. Hao Su
Description: This course will explore the state of the art algorithms for both supervised and unsupervised machine learning on geometric data - analysis as well as synthesis. After a brief introduction to geometry foundations and representations, the focus of the course will be machine learning methods for 3D shape classification, segmentation, and symmetry detection, as well as new shape synthesis. Deep neural architectures appropriate for data in the form of point clouds or graphs will also be studied, as well as architectures that can associate semantic information with object models, including functionality. Techniques for analyzing not only individual 3D models but entire collections of such through computing alignments, and maps or correspondences, will be discussed.
Required Knowledge: Linear algebra, Calculus, Deep learning
Recommended Preparation for Those Without Required Knowledge: Deep learning and machine learning courses on campus.
Link to Past Course: CSE291-I offered in Winter, 2019
CSE 291 (G00) - Computational Statistics with Prof. Daniel Kane
Description: We cover recent developments in computational statistics including various distribution testing and learning problems. Topics include discrete distribution testing, A_k distance and structured distributions, and high dimensional robust statistics.
Required Knowledge: Students should have a solid background in algorithms and probability theory, as well as substantial mathematical maturity.
Recommended Preparation for Those Without Required Knowledge: CSE 101 or 202 and Math 180A or 183.
Link to Past Course: http://cseweb.ucsd.edu/~dakane/CSE291/ (though this will probably get replaced when the new course starts)
CSE 291 (H00) - Human-Centered Computing for Health (HC4H) with Prof. Nadir Weibel
Description: HC4H an interdisciplinary course that brings together students from CSE, ECE, CogSci, DBMI, Medicine, Public Health and others, and exposes them to designing technology for health and healthcare.
The course is focused on studying how technology is currently used in healthcare and identify opportunities for novel technology to be developed for specific health and healthcare settings.Throughout the course, students will be engaging in dedicated visits to hospital facilities, such as emergency rooms, trauma rooms, operating rooms, outpatient medical offices, medical students teaching facilities, measurement centers, sleep clinics, and technology-centered health companies. In the first part of the year, students will approach the field by first studying regulations, ethics, and human protection, followed by engagement with clinicians expert in specific aspects of healthcare, to understand how to design solutions using novel interactive technologies. The second part of the year will focus on a design group project that will capitalize on their visits and discussions within the healthcare environment, to propose specific technological solutions and present them to the healthcare stakeholders.
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 Spring quarter and beyond.
You need instructor permission to add this class.
Required Knowledge: Technology-centered mindset, experience and/or interest in health or healthcare, experience and/or interest in design of new technology.
Recommended Preparation for Those Without Required Knowledge: N/A
Link to Past Course: https://www.ubicomp.ucsd.edu/teaching
CSE 291 (I00) - Advanced Studies in Classical Operating Systems with Prof. Joseph Pasquale
Description: This course is an in-depth look at classical works in operating systems. We analyze a small set of papers that have had a deep and lasting influence in the field and seek to understand in each paper what the key ideas are and how these ideas have affected modern operating system design.
Required Knowledge: Operating systems, probability.
Recommended Preparation for Those Without Required Knowledge: Reading list for CSE221 (or any graduate-level operating systems course)
Link to Past Course: N/A (first offering)
CSE 291 (J00) - Virtualization with Prof. Yiying Zhang
Description: Do you want to learn about what's behind the scene of VMware virtual machines, AWS instances, Docker, Kubernetes, and serverless computing? Do you want to have some hands-on experience with low-level virtualization systems? Or are you interested in doing systems research? This course will be the right one for you.
This new CSE291 course will introduce the broad area of virtualization, focusing on virtualization techniques used in real-world cloud environments. The topics covered include traditional virtualization techniques for virtualizing X86, memory, storage, and network, non-conventional virtualization techniques like container and serverless computing, and alternative virtualization techniques like para-virtualization and hardware-assisted virtualization.
About half to 2/3 of the course will be lecture based, while the rest will be paper/online-material discussion. There will be no homework or exams. Grades will be mainly based on project(s).
Required Knowledge: Equivalence of undergrad OS
Recommended Preparation for Those Without Required Knowledge: Reading the free OS textbook http://pages.cs.wisc.edu/~remzi/OSTEP/
Link to Past Course: N/A
CSE 291 (K00) - Platforms and Systems to Bridge the Digital and Physical World with Prof. Patrick Pannuto
Description: Researchers, policy makers, citizen scientists, and curious individuals have an innumerable array of questions about the world around them. How does
physical proximity affect disease transmission? What changes would have the greatest impact on the carbon footprint of an urban environment? What is the
historical air quality like for asthmatics in the neighborhoods where I am shopping for houses? This course is about the design and implementation of platforms and systems capable of capturing the data to answer such questions.Formally, this is the study of embedded systems and wireless sensor networks. These are computing systems that are deployed widely in the physical world, which creates unique constraints in their physical size, deployment, management, communication, energy availability, and operation. We will begin with a history of impactful deployments, then study each of the pieces in turn, both traditional sensor architectures and more exotic designs such as batteryless systems, backscatter communication, and how to do machine learning with less than 1 MB of memory.
During the last week of the course, we will shift focus a bit from technology development. Often advances in embedded systems can lead to unexpected leaps
in capability: modern RF techniques can build camera-like structures that "see-through" walls to capture occupancy, gestures, or even biometrics like respiration and heart rate; my PhD work helped build energy-harvesting, wireless (optical) cameras about a cubic millimeter in size and acoustic recorders small and thin enough to be imperceptibly embedded in thick paper. We will finish the term with thoughts on the ethical implications of recent and future advancements, how policy might encode social norms and expectations, and what technological solutions could enforce these policies.The intended audience of this course is PhD students or masters students who are interested in pursuing a PhD in the future. The course will also include a quarter-long project that will result in a draft of a conference-style paper.
Required Knowledge: Equivalent of an undergraduate degree in any of Electrical Engineering, Computer Engineering, Computer Science, Data Science, Information Science, or similar. This is a vertical slice through the computing stack, and we will touch on topics from programming languages and distributed systems down to
circuits and wireless. An enthusiasm and willingness to learn a little about a lot of new things is far more important than any one specific background.Recommended Preparation for Those Without Required Knowledge: Try playing with some hardware! A Raspberry Pi Zero is $5, various Arduino boards run $10-30, or check out the tutorials and hardware from places like maker.io -- or stop by my office (3202 CSE) starting ~Dec 9 and I'll happily loan you something to play with over the holidays. If you'd prefer something more textbook-y, leeseshia.org is a good free book (though a bit more of a formal-methods take than this course).
Link to Past Course: N/A
- Fall 2019 Graduate Course Information
-
This is historical data. This page serves the purpose to help graduate students understand each graduate course offered during Fall 2019.
CSE 202 - Algorithm Design and Analysis with Prof. Mohan Paturi
Description: Please see website below for more information.
Required Knowledge: Please see website below for more information.
Recommended Preparation for Those Without Required Knowledge: Please see website below for more information.
Link to Past Course: http://algorithms.eng.ucsd.edu/cse202
CSE 207 - Modern Cryptography with Prof. Mihir Bellare
Description: This course is an introduction to modern cryptography. 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, defining security for various primitives 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: Theory of computation, algorithms, probability, mathematical proofs and maturity
Recommended Preparation for Those Without Required Knowledge: CSE 200
Link to Past Course: http://cseweb.ucsd.edu/~mihir/cse207/index.html
CSE 210 - Principles of Software Engineering with Prof. Bill Griswold
Description: Building a great, successful software system is an intellectually challenging activity that is more likely to fail than succeed. Yet, software is becoming increasingly sophisticated and now permeates every aspect of our lives. In short, software is becoming harder to build, but it's increasingly important to build it right.
The methods for creating software have changed dramatically to keep pace. This course is an introduction to the state of the art and hot trends in software development. This course will not only introduce the salient concepts of software engineering, but it will also introduce valuable practices and develop our skills in applying them through a small team project (several projects have gone into production over the years). We will study insightful case studies such as the Mythical Man Month and Microsoft Secrets, as well as classic and leading-edge articles from the research literature, including XP and Design Patterns.
This course is run as a seminar (albeit at a large scale), requiring daily preparation (with hand-ins) and constant, deep participation. There is also a project with weekly milestones and a project presentation at the end.
Required Knowledge: An undergraduate degree in computer science (or equivalent) is a prerequisite, but an undergraduate software engineering class is not.
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: https://cseweb.ucsd.edu/~wgg/CSE210/
CSE 218 - Advanced Topics in Software Engineering with Prof. Nadir Weibel
Description: Good software engineering (SE), when applied to the real world, is hard to achieve. The tendency is to focus on developing a rushed prototypes, and then get to a product as fast as possible, without having enough time to think about the good SE principles that we have been learning in school.
This course is a Software Engineering in Practice course that teaches students how to maintain good software engineering practices, even when under the constant pressure of weekly deadlines, and the continuous need to demonstrate new weekly features of the system under development.
In CSE 218 we will refresh the basic principles of Agile Software Development, and extend it into Agile Project Management. We will learn to use Agile tools and work in a team that embraces Agile practices, such as delivering weekly results, and move from ideation to design, prototyping, and development, with the ultimate goal of creating a working system by the end of the quarter.
In order to make the course more exciting, we pair the software engineering part of the course with a specific topic related to Ubiquitous Computing. The Ubiquitous Computing setting allows us to integrate and explore affordable sensors and interaction devices (e.g., web cams, mobile phone based sensors, digital pens, Microsoft SenseCam, Microsoft Kinect, Google glasses, portable eye-tracking, HoloLens, Ocolus Rift, etc.) and wireless mobile computing devices (e.g., mobile smart phones, Arduino boards with 802.11b wireless connectivity, etc.) to create boundless opportunities for in-the-world computing applications that can transform our lives.
In Fall 2019, we will focus on Augmented Reality and Microsoft HoloLens.
This course explores these opportunities in the form of a project-based class that focuses on the development of specific applications and interaction techniques based on the available devices. As we practice good Agile SE, we will also learn from the literature of ubiquitous computing, pervasive computing, and human-computer interaction.
Besides class time, every team will be required to meet on a regular basis every week to work on their project. Teams will have to report on a regular basis their milestones and releases, which will be checked and discussed by the assigned TA
Required Knowledge: Required is general knowledge in programming applications specifically using C++/C# and Java, as well as web technology. Basic knowledge of Software Engineering methodologies and techniques are required. Interest and knowledge in research methodologies, as well as being capable to read/understand/discuss scientific literature will be important to progress through the readings.
Moreover, graduate students will be required to lead groups, so initiative and willingness to manage a project is required.
Recommended Preparation for Those Without Required Knowledge: https://www.coursera.org/course/hciucsd, https://www.edx.org/course/software-engineering-introduction-ubcx-softeng1x
Link to Past Course: http://ubicomp.ucsd.edu/cse218
CSE 221 - Graduate Operating Systems with Prof. YY Zhou
Description: This is an advanced class on operating systems where we critically review some of the more influential operating systems research literature. As a result of taking this class, you will learn the major principles of operating system design from original sources. We will be reviewing both older ("classic") and modern papers on operating systems. Topics covered include operating system structure, protection, virtual memory, synchronization, communication, virtual machines, networked and distributed operating systems, file systems, scheduling, and virtual machines.
Required Knowledge: Undergraduate operating systems.
Recommended Preparation for Those Without Required Knowledge: CSE 120.
Link to Past Course: http://cseweb.ucsd.edu/classes/wi08/cse221
CSE 224 - Graduate Networked Systems with Prof. George Porter
Description: This course will provide a broad understanding of exactly how the network infrastructure supports distributed applications ranging from web browsing to cloud computing. Topics covered in the course include sockets programming, data centers and cloud computing, Remote Procedure Calls, scale-out distributed directories, distributed consensus and state management, indirection, overlay networks, load balancing, and security.
Required Knowledge: Projects will be implemented in C/C++ and Java. An understanding of operating systems concepts and concurrency is recommended.
Recommended Preparation for Those Without Required Knowledge: Review C/C++ programming and Java using online resources. Review an undergraduate textbook for information on mutexes, condition variables, mutual exclusion, context switching, processes and basic compiler concepts.
Link to Past Course: https://cseweb.ucsd.edu/~gmporter/classes/sp18/cse291/
CSE 227 - Computer Security with Prof. Stefan Savage
Description: This course focuses on computer and network security, exploring a range of topics design to illustrate some of the modern research challenges in the area and the standards for advancement. It is not designed to be a tutorial course, but rather to give students the context to understand current security research and evaluate their interest in the field. We will explore a range of topics on both the defensive and offensive side of the field, as illustrated by papers and via lecture. This class will have two primary means of evaluation: classroom participation and a quarter-long research project of your own choosing with results presented both in writing and orally.
Required Knowledge: Should have undergraduate-level familiarity with machine organization, operating systems, computer architecture and networking.
Recommended Preparation for Those Without Required Knowledge: Take CSE 120, CSE 127, CSE 130, CSE 221, and/or CSE 230
Link to Past Course: https://cseweb.ucsd.edu/classes/sp17/cse227-a/syllabus.html
CSE 232 - Principles of Database Systems with Prof. Arun Kumar
Description: This is a graduate course on the systems principles of database management systems (DBMSs), especially, relational DBMSs (RDBMSs). RDBMSs are the cornerstone of large-scale data management in numerous application domains that define our modern world, including finance, insurance, retail, logistics, telecommunications, healthcare, governance, and education. Furthermore, concepts developed in the context of RDBMSs are indispensable for the underpinnings of the so-called Big Data and NoSQL systems that were developed for new applications such as Web search, e-commerce, social media, and advanced analytics. This course will cover key principles and systems design issues in RDBMSs, including storage management, query processing and optimization, parallel RDBMSs and dataflow systems, data integration and cleaning, transaction management, and concurrency control. More recent topics such as non-volatile memory and applying ML to RDBMSs likely be covered too. This course will overlap with the 190 from Spring'19, but this course will focus less on the storage subsystem and relational operator implementations but instead, cover other newer topics. Also, this course has no programming projects.
The class meets 3 times a week from 3:00pm to 3:50pm at CSB 2. This course will have two in-class midterm exams (20% of the grade each) and one cumulative final exam (60% of the grade).
Required Knowledge: Relational algebra and SQL
Recommended Preparation for Those Without Required Knowledge: Take 132A; online tutorials on relational algebra and SQL
Textbook: Database Management Systems (3rd edition), by Raghu Ramakrishnan and Johannes Gehrke (aka the "cow book").Link to Past Course: My Fall'18 edition: http://cseweb.ucsd.edu/classes/fa18/cse232-a/ My Fall'19 edition will have a similar schedule, format, and grading scheme.
Yannis's older edition: http://www.db.ucsd.edu/CSE232S18/CSE 240A - Principles of Computer Architecture with Prof. Dean Tullsen
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
Recommended Preparation for Those Without Required Knowledge: CSE 141
Link to Past Course: https://cseweb.ucsd.edu/classes/fa17/cse240A-a/
CSE 250A - Probabilistic Reasoning & Learning with Prof. Lawrence Saul
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 Python, Matlab, Java, or C. Programming assignments are completed in the language of the student's choice.
Recommended Preparation for Those Without Required Knowledge: Review of multivariable calculus and linear algebra.
Link to Past Course: http://cseweb.ucsd.edu/classes/fa18/cse250A-a/
CSE 250C - Machine Learning Theory with STAFF
Description: Theoretical foundations of machine learning. Topics include concentration of measure, the PAC model, uniform convergence bounds and VC dimension. Possible topics include boosting, clustering, and reinforcement learning. CSE 103 and CSE 101 or similar course recommended.
Required Knowledge: Graduate standing in CSE.
Recommended Preparation for Those Without Required Knowledge: CSE 101 and CSE 103.
Link to Past Course: http://rbassily.eng.ucsd.edu/home/teaching/spring-2017---cse-250c-machine-learning-theory
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 feature detection), 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. Python or other programming experience.
Recommended Preparation for Those Without Required Knowledge: Undergraduate courses and textbooks.
Link to Past Course: https://cseweb.ucsd.edu/classes/fa18/cse252A-a/
CSE 256 - Statistical Natural Lang Proc with Prof. Ndapa Nakashole
Description: Natural language processing (NLP) is a field of AI which aims to equip computers with the ability to intelligently process natural (human) language. This course will explore statistical techniques for the automatic analysis of natural language data. Specific topics covered include: probabilistic language models, which define probability distributions over text passages; text classification; sequence models; parsing sentences into syntactic representations; and machine translation.
Required Knowledge: Basic concepts of probability.
Recommended Preparation for Those Without Required Knowledge: Basic concepts of probability can be found here: https://see.stanford.edu/materials/aimlcs229/cs229-prob.pdf. However, we will spend one lecture revising this material
Link to Past Course: This is an introduction to NLP course, similar in content to: http://cseweb.ucsd.edu/~nnakashole/teaching/190_wi18.html
CSE 258 - Recommender Systems & 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.
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: http://cseweb.ucsd.edu/classes/fa18/cse258-a/
CSE 276A - Introduction to Robotics with Prof. Henrik Christensen
Description: This course offers a comprehensive introduction to robotics covering topics such as kinematics, dynamics, sensor systems, estimation, control, path planning, and system architectures. The desired outcome includes:
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, polls, quizzes, and assignments Evaluating your own progress in the course on a regular basisCSE 291 (H00) - Modern Data Center Systems with Prof. Yiying Zhang
Description: This course will introduce how modern datacenters like AWS/Amazon, Azure/Microsoft, Google Cloud/Google, and Facebook work. It will focus on system designs and emerging trends in real-wold datacenters. The topics covered in this course include datacenter storage systems, datacenter networking, datacenter hardware, virtualization and container, modern cloud concepts like serverless, big-data and data-processing systems, AI software and hardware systems in datacenters, etc.
Required Knowledge: Basic understanding of computer systems
Recommended Preparation for Those Without Required Knowledge: Reading about operating system, computer organization, and networking (undergrad level)
Link to Past Course: N/A
CSE 291 (I00) - Topics in Embedded Computing and Communication with Prof. Aaron Schulman
Description: Embedded computing devices such as smartphones, wearables, and IoT devices have overtaken PCs as the predominant platform for computation and communication with billions of devices in use. The shift to the embedded platform has brought with it a host of new challenges. Embedded devices have severely constrained energy capacity, their network connectivity is exclusively provided by unreliable bandwidth-constrained wireless links, they carry a standard set of sensors that are seemingly insufficient for certain applications and also can inadvertently leak private information about their users. Also, embedded devices are notoriously difficult to secure because they lack hardware security primitives.
In this course, we will discuss research that addresses the challenges introduced by the embedded computing platform. As with many other research seminars, the course will be predominantly a discussion of a set of research papers. However, we will also discuss the origins of these research projects, the impact that they had on the research community, and their impact on industry (spoiler alert: the impact on industry generally is hard to predict). The course will also include a quarter-long project that will result in a draft of a conference-style paper.
Required Knowledge: Students must have taken an undergraduate systems course, either networking or operating systems. Some experience with embedded systems (e.g., Arduino hacking) and wireless communication (e.g., Software Defined Radios such as the RTL-SDR) is preferred.
Recommended Preparation for Those Without Required Knowledge: Read the following chapters from MIT's 6.02 course from MIT OpenCourseWare: 4, 10, 14, 15. Read the following chapters in "Introduction to Embedded Systems" by Lee & Seshia: 7, 8, 10, 17
Link to Past Course: https://cseweb.ucsd.edu/~schulman/class/cse291_f18/
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 Matlab as part of the class.
Recommended Preparation for Those Without Required Knowledge: N/A
Link to Past Course: https://cseweb.ucsd.edu/classes/fa18/cse276C-a/
CSE 291 (A00) - Modern Storage Systems with Prof. Steve Swanson
Description: We will cover a range of topics in modern storage systems, including file systems, disks, solid state disks, and persistent memory.
Required Knowledge: Undergrad or grad operating systems.
Recommended Preparation for Those Without Required Knowledge: N/A
Link to Past Course: http://swanson.ucsd.edu/modern-storage-systems/
CSE 291 (E00) - Successful Engineering Entrepreneurship with Prof. Rakesh Kumar
Description: The major objectives of this course are to:
Encourage and Coach students to think like and become successful entrepreneurs; Describe major reasons why Microsystem start-ups typically are not successful, and; Educate them in the breadth of methodologies required for success in getting their innovative Microsystem ideas to the marketplace.
Experienced guest lectures will be invited to share their success stories and lessons learned. In addition to reading assignments, and class participation exercises students will be required to bring forward their own innovative ideas in teams of 3-5 students and will be required to develop a first pass business plan, and a "prototype" for their start-up company as a team project. The learnings from this course will also benefit students that choose to work as intrapreneurs within larger organizations.
Required Knowledge: Master's students in good standing
Recommended Preparation for Those Without Required Knowledge: N/A
Link to Past Course: N/A
CSE 291 (F00) - Data Science Through a Geometric Lens with STAFF
Description: This is an advanced algorithms course, with a focus on geometric algorithms motivated by data science. Many applications (computer vision, AR/VR, recommender systems, computational biology, etc) rely on geometric ideas and data representations. In this context, geometry refers to distances between high-dimensional vectors (e.g., Euclidean and Hamming distances) or strings (e.g., edit distance). This course will provide the foundations for designing and analyzing algorithms operating on data with geometric structure. We will begin by reviewing standard tools such as dimensionality reduction and sampling/sketching. Then, we will explore many algorithmic problems such as clustering and approximate nearest neighbor search via locality sensitive hashing. Finally, we will address massive data sets by adapting algorithms to distributed and streaming models. Throughout the course, students will be exposed to many open research problems.
Required Knowledge: Algorithms at a graduate level. Linear algebra and probability theory. Mathematical maturity is a must: the class is based on theoretical ideas and is proof-heavy. You are expected to be able to read and write formal mathematical proofs. Some familiarity with algorithms and randomness will be assumed (exposure to graduate-level randomized algorithms is a plus).
Recommended Preparation for Those Without Required Knowledge: Review basic linear algebra (real-valued vector norms, inner products, orthogonality) and probability theory (vectors of random variables, pairwise independence, Chernoff bounds).
Link to Past Course: N/A
CSE 291 (G00) - Geometry of Data with Prof. Gal Mishne
Description: This course focuses on unsupervised machine learning methods for analysis of high-dimensional data, covering topics on data exploration, visualization, organization, and dimensionality reduction. The course will also review the role graphs play in modern signal processing and machine learning, for example, signal processing on graphs and learning representations with deep neural networks.
Required Knowledge: Linear algebra, probability theory/statistics and programming experience in Python / Matlab. The course will introduce necessary concepts from spectral graph theory and harmonic analysis.
Recommended Preparation for Those Without Required Knowledge: Review basic linear algebra (inner products, orthogonality, eigen-decomposition) and probability theory (multivariate random variable, statistical independence, covariance)
Link to Past Course: N/A
Required Knowledge: Knowledge of linear algebra and probabilistic inference is desirable.
Recommended Preparation for Those Without Required Knowledge: Intro AI (grad course)
Link to Past Course: https://cseweb.ucsd.edu/classes/fa18/cse276A-a/
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. Consider these skills to recognize objects from point-cloud data. 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. -
New accordion content