Updated February 13, 2023
- 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
-
Spring 2019 Graduate Course Information
-
This is historical data. This page serves the purpose to help graduate students understand each graduate course offered during Spring 2019.
CSE 205A - Logic in Computer Science with Prof. Victor Vianu
Description: The goal of this course it 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)
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, 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 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. Students will: critically read research papers, undertake a small research project, give a presentation, and write a paper.
Required Knowledge: All PhD students can be admitted. Master's students who have taken an introduction to HCI course can be admitted. Undergraduate students that have taken COGS 14A or CSE 20 can be admitted, as well as undergraduate students who have earned an A- or better in CSE 170/COGS 120 or COGS 102C.
Recommended Preparation for Those Without Required Knowledge: Take one of the required courses listed above to prepare.
Link to Past Course: https://d.ucsd.edu/IxD/research/2018/
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 by petition.
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 & Systems with Prof. George Porter
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 and/or CSE 222A. Note that undergraduate level operating systems courses (such as CSE 120) do not fulfill the prerequisite requirement, which will be strictly enforced.
Recommended Preparation for Those Without Required Knowledge: N/A
Link to Past Course: N/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
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 237D - Design Automation and Prototyping of 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.
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 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.
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 - Select Topic/Vision & Learning 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.
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: N/A
CSE 254 - Statistical Learning with Prof. Sanjoy Dasgupta
Description: This is a research-oriented course on methods of unsupervised learning that use neural nets: variational autoencoders, GANs, etc. The focus will be on understanding the behavior of these methods, relating them to other forms of unsupervised learning, and identifying good research questions. Each student will give a detailed presentation of a paper in this area.
Required Knowledge: Basic machine learning at the level of CSE 250B.
Recommended Preparation for Those Without Required Knowledge: "Machine Learning: A Probabilistic Approach" by Kevin Murphy
Link to Past Course: N/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 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.
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.
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 291 (A00) – Biomolecular Big Data Systems with Prof. Nuno Bandeira
Description: With the sequencing of the genome and subsequent identification of the list of parts (genes and their protein products), there is renewed emphasis on understanding the many roles of the protein gene products using automated high-throughput approaches. The last few years have thus seen tremendous improvement in the quality and quantity of available mass spectrometry data, as well as the realization that advanced algorithms and big data crowdsourced platforms are critical to the success of this technology. This course will cover the computational, statistical and algorithmic foundations of computational analysis of mass spectrometry data from high-throughput proteomics (the “cellular computers”) and metabolomics (e.g., hormones, drugs, antibiotics) experiments. In addition, we will also cover data science aspects of how these algorithms are integrated with global big data repositories and how these support communities of experts in distributed collaborative annotation of biomolecular ‘living data’.
Required Knowledge: CSE 100 (Advanced data structures) and CSE 101 (Design and analysis of algorithms) or equivalent very strongly recommended; Knowledge of graph and dynamic programming algorithms; Experience with Java or Python programming languages
Recommended Preparation for Those Without Required Knowledge: Online courses and practice of graph and dynamic programming algorithms in Java or Python.
Link to Past Course: N/A
CSE 291 (B00) - Topics in Search and Reasoning with Prof. Sicun Gao
Description: The course will discuss the details of the following algorithms: RRT, MCTS, TRPO/PPO, CDCL. Students will be required to present papers and explore related research topics.
Required Knowledge: Reasonable familarity of at least one of the algorithms mentioned in the description.
Recommended Preparation for Those Without Required Knowledge: N/A
Link to Past Course: N/A
CSE 291 (C00) - Genomic Data Science with Prof. Iana Safonova
Description: This course covers various fields of genomic data science, including but not limited to genome assembly, haplotype assembly, analysis of RNA-seq data, computational immunology, and structural genomics. In this course, we discuss various computational problems arising in these fields, algorithms and the state-of-the-art tools solving them. Students will complete a number of homework assignments involving analysis of real sequencing data and interpretation of the results. Students will also complete a scientific project dedicated to one of discussed topics.
Required Knowledge: Any programming language (e.g., Python), algorithms, and basic biology
Recommended Preparation for Those Without Required Knowledge: Take online courses (e.g., at Coursera, Stepik, edx) covering basics of programming and algorithms.
Link to Past Course: Here is a link to online information of this course: https://sites.google.com/view/yana-safonova/cse291
CSE 291 (D00) - Physics Simulation with Prof. Steven Rotenberg
Description: This course will focus on computational physics simulation with 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.
Recommended Preparation for Those Without Required Knowledge: Gain familiarity with the topics listed above.
Link to Past Course: N/A
CSE 291 (E00) - 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 homeworks 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 good background in basic probability 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, algorithms, and linear algebra.
Recommended Preparation for Those Without Required Knowledge: Review basic probability theory and and practice dynamic programing in a language like C++ or Java.
Link to Past Course: http://www.cs.cmu.edu/~tbergkir/11711fa17/
CSE 291 (F00) - Post-relational Data Models in the Big Data Era with Prof. Alin Deutsch
Description: The course surveys a wide range of data models and high-level query languages that have achieved prominence with the advent of the Big Data era. These include graph database models and query languages in their various incarnations, such as XML and its standard query languages XPath and XQuery; JSON and SparkSQL, AQL, MongoDB's query language, etc.; RDF and Semantic Web data (SparQL); graph databases (neo4j's graph data model and the Cypher query language, the Gremlin query language). The course emphasizes the common ideas across these models and languages, connecting them to their common roots in object-oriented and SQL databases.
Required Knowledge: Prerequisite is CSE 132A or CSE232 or equivalent (check with instructor).
Recommended Preparation for Those Without Required Knowledge: Any introductory undergraduate database class suffices.
Link to Past Course: N/A
- Winter 2019 Graduate Course Information
-
This is historical data. This page serves the purpose to help graduate students understand each graduate course offered during Winter 2019. Please use this page as a guideline to help decide what courses to take.
CSE 200 - Computability and Complexity with Prof. Russell Impagliazzo
Description: This is an introduction to computational complexity (and a bit of decidability) geared for first-year non-theory students. We cover such topics as time hierarchy, completeness for NP and related classes, randomized computation, and the polynomial hierarchy.
Required Knowledge: Some basic algorithms is important, such as an undergraduate class on the subject that includes say, dynamic programming. A class in formal languages is helpful but not really required. The more abstract mathematics you've had the better, not because it will be used, but because the level of abstraction is the biggest challenge students face in CSE 200.
Recommended Preparation for Those Without Required Knowledge: If you skim through the early chapters of Sipser, and are comfortable solving the problems given, you should be prepared. Otherwise, you might want to take CSE 105 first.
Link to Past Course: http://cseweb.ucsd.edu/classes/wi16/cse200-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, 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 221 - Graduate Operating Systems with Prof. Joseph Pasquale
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 222A - Computer Communication Networks with Prof. Alex Snoeren
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, datacenters, content distribution networks, and peer-to-peer systems.
Required Knowledge: Prerequisites for the course include a general understanding of computer networks, distributed systems, and operating systems.
Recommended Preparation for Those Without Required Knowledge: CSE120, CSE123
Link to Past Course: http://cseweb.ucsd.edu/classes/wi18/cse222A-a/
CSE 230 - Principles of Program Languages with Prof. Ranjit Jhala
Description: Unlike most engineering artifacts, Programming Languages and Programs are mathematical objects whose properties can be formalized. The goal of this course is to introduce students to fundamental intellectual and mechanical tools required to rigorously analyze Languages and Programs and to expose them to recent developments in and applications of these techniques. We shall study operational and axiomatic semantics, two different ways of precisely capturing the meaning of programs by characterizing their executions. We will see how the lambda calculus can be used to distill essence of computation into a few powerful constructs. We use that as a launching pad to study expressive type systems useful for for analyzing the behavior of programs at compile-time and then, how to derive expressive program analyses using Abstract Interpretation.
Required Knowledge: Basic discrete math (sets, boolean algebra, induction etc.).
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://cseweb.ucsd.edu/classes/wi08/cse230/
http://cseweb.ucsd.edu/classes/wi13/cse230-a/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: CSE 132A or CSE 232
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 240B - Parallel Computer Architecture with Prof. Bryan Chin
Description: The days of improving computer performance via frequency and scalar micro-architectural improvements are long gone. Moore's Law is reaching its limits and the challenges related to Dennard scaling have prevented the easy performance gains we enjoyed in the past. Parallel computation has been and continues to be a powerful method at our disposal to take advantage of new silicon capabilities. This course is divided into two parts. In the first part, we will study advanced computer architecture topics such as cache coherency for NUMA machines and memory consistency models. In particular, we will look at the challenges for architecture as the number of processors scales to large numbers.
In the second part of the course, we will explore recent advances and research in parallel computation and advanced computer architecture. Past topics have included: GPUs, TPUs, transactional memory, wide SIMD and vectorization, SIMT, and on-chip interconnects. Topics may change, depending on the interests of the class.
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: https://sites.google.com/eng.ucsd.edu/cse240bspring2018/home
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 (B00) - Learning Algorithms with Profs. Kamalika Chaudhuri & Sanjoy Dasgupta
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. Benjamin 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, probability and statistics. MATLAB, 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/wi18/cse252B-a/
CSE 254 - Statistical Learning with Prof. Yoav Freund
Description: The focus of this course will be on notions of intrinsic dimension and dimensionality reduction.
It is often the case that very high dimensional data, such as images, can be compressed into low dimensional vectors with small reconstruction error. The dimension of these vectors is the **intrinsic dimension** of the data. We will discuss several techniques for estimating intrinsic dimension and for mapping data vectors to their low-dimensional representations. The ultimate goal is to find streaming algorithms can can process very large dataset in linear or sub-linear time.
Techniques we will cover will include:
Principle component analysis, K-means analysis, Haussdorff dimension, Kmeans-dimension, Stability and information of K-means, Locally linear embeddings (LLE), Graph laplacian, random walk, heat dissipation and their eigen-vectors, The heat kernel, the Laplace-Beltrami operator and its eigenfunctions, Combining Kmeans++ and the heat kernel
Required Knowledge: The course is intended to grad students with a strong math background and the ability to fill in gaps in their math knowledge. Specific areas of that will be used include: linear algebra, graph theory, streaming algorithms, differential equations and differential geometry.
Recommended Preparation for Those Without Required Knowledge:
Link to Past Course:
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/cse260winter2018/
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 experimental 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 seminal and recent papers in the field, and engage in team-based projects with physical, mobile robots.
Required Knowledge: This class requires expertise in programming and data structures. Students should be comfortable decomposing a complex problem, selecting suitable algorithms, and implementing them. Prior exposure to robotics, computer vision, or machine learning is helpful, but not required. Experience using unix-like operating systems is also a plus. Students should be comfortable reading and analyzing scientific papers at the graduate level. Please note, this class will be time-intensive. It involves both software development and significant reading and discussion of graduate-level research papers.
Recommended Preparation for Those Without Required Knowledge:
Link to Past Course:
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, butthe 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 required knowledge listed above, you should take the online UCSD course on Algorithms on Coursera.
Link to Past Course: N/A
CSE 291 (A00) - Topics in Emerging Computer Architectures with Prof. Jishen Zhao
Description: This course provides an introduction to state-of-the-art and emerging computer architecture designs and a vision of future trends. Students are expected to explore research opportunities related to what are discussed in this class. Topics that will be covered in this class include but not limited to: (1) advanced topics in memory system organization and design; (2) emerging technologies and their applications in various computer systems, such as CPU, GPU, and data centers (including 3D/2.5D integration, nonvolatile memories, photonic network-on-chip (NoC)); (3) datacenter architectures, fabrication, and metrics; (4) non-von Neumann architectures and neuromorphic computing.
Required Knowledge: undergraduate or graduate-level computer architecture
Recommended Preparation for Those Without Required Knowledge: Textbook on advanced computer architecture
Link to Past Course: N/A
CSE 291 (B00) - Communication Complexity with Prof. Shachar Lovett
Description: Communication complexity is an computational model which captures communication bottlenecks in algorithm design. In its simplest setting, there are two players, Alice and Bob, each holding their own input. Their goal is to compute a function of their joint inputs, while minimizing the communication involved.
This abstract model captures many real-life scenarios. These include time-space tradeoffs for data structures, streaming algorithms, sketching algorithms, sub-linear time algorithms, and the ability of linear programs to approximate NP-hard optimization problems.
In this class, we will both show applications of the communication complexity model to prove lower bounds for computational problems (such as the ones described above), as well as learn some of the techniques used to prove communication complexity lower bounds.
Required Knowledge: There is no specific required knowledge, except for mathematical maturity. It is good to have taken graduate algorithms (202) and complexity (200) classes before to get a broader view of computation, but it is not a strict requirement.
Recommended Preparation for Those Without Required Knowledge: Reviewing the material for CSE 200 and CSE 201.
Link to Past Course: N/A
CSE 291 (C00) - Machine Learning on Geometrical Data 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: strong background of linear algebra, machine learning, and deep learning, preliminary in statistics and geometry
Recommended Preparation for Those Without Required Knowledge: convex optimization, differential geometry
Link to Past Course: N/A
CSE 291 (D00) - Computer Vision: Advances in 3D Reconstruction with Prof. Manmohan Chandraker
Description: The field of 3D reconstruction has made tremendous progress in recent years, with popular applications such as self-driving and augmented reality. Yet, significant unsolved problems remain, for instance, in generalizing to complex materials, fast motions, non-rigid deformations or semantic concepts. On the other hand, the advent of deep learning has led to significant gains in image classification and recognition. This has opened the possibility of translating those advances to tackle some of the above challenges in 3D reconstruction. In this course, we will review some of the fundamental concepts that play a role in 3D reconstruction and study recent developments that enhance or use them in novel ways. Consistent with recent advances, several of our topics will exploit frameworks based on deep learning.
Required Knowledge: This is an advanced class, covering recent developments in computer vision research. Students at all levels including undergraduates, masters and PhD, 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 152, 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 152, CSE 252 or similar at UCSD, CS231n at Stanford (online material)
Link to Past Course: http://cseweb.ucsd.edu/~mkchandraker/classes/CSE291/2017/
CSE 291 (F00) - Advanced Data Analytics and Machine Learning Systems with Prof. Arun Kumar
Description: This is a research-oriented course on the emerging area of advanced data analytics and machine learning (ML) systems, at the intersection of data management, ML, and systems. This area is a driving force behind several modern data-driven applications that use large-scale ML, machine perception, and machine reading to analyze large and complex datasets, including enterprise business intelligence, healthcare, recommendation systems, social media analytics, Web search, Web security, and Internet of Things. Students will learn about the latest research in this area and get hands-on experience doing either a research project or an in-depth survey of one of the course topics. The topics covered include scalable analytics and ML systems; systems for scalable linear algebra, feature engineering, and model selection; statistical relational learning systems; deep learning systems; hardware-software co-design for ML; data sourcing for ML; and model serving systems.
Required Knowledge: Courses on machine learning, operating systems, and database systems (at UCSD or elsewhere). Or prior research experience on one of the course topics, subject to the consent of the instructor.
Recommended Preparation for Those Without Required Knowledge: Learn the foundations of machine learning (algorithms and a bit of theory) from standard textbooks, e.g., "Elements of Statistical Learning" by Hastie, Tibshirani, and Friedman, or "Machine Learning" by Tom Mitchell
Learn the basics of operating systems and database systems from standard textbooks, e.g., "Operating Systems: Three Easy Pieces" by Remzi and Andrea Arpaci-Dusseau and "Database Management Systems" by Raghu Ramakrishnan and Johannes Gehrke.Link to Past Course: http://cseweb.ucsd.edu/classes/wi18/cse291-a/
http://cseweb.ucsd.edu/classes/wi17/cse291-g/CSE 291 (G00) - 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 particpate 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
Recommended Preparation for Those Without Required Knowledge: N/A
Link to Past Course: N/A
CSE 291 (H00) - 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 (I00) - Introduction to Computer Science Education Research with Prof. Leo Porter
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? 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
Recommended Preparation for Those Without Required Knowledge: None
Link to Past Course: N/A
CSE 291 (K00) - Human-Computer Interaction for Health (HCI4H) with Prof. Nadir Weibel
Description: Human-Computer Interaction for Health (HCI4H) explores the challenges of designing and introducing new interactive and sensing technology to study healthcare and address its core problems. In this class students will be exposed to the healthcare domain at large, including visits to hospital facilities, such as emergency rooms, trauma rooms, operating rooms, radiology clinics, outpatient medical offices, medical students teaching facilities like the Medical Education Building (MET), which includes the Simulation Training Center (STC), the Center for the Future of Patient Care (CFS), and the Center for the Future of Surgery (CFS), but also other measurement centers such as the Calit2 Exercise and Physical Activity Resource Center (EPARC), sleep clinics, and technology-centered health companies such as the West Health Institute.
The HCI4H class will approach the field by being exposed to the health-related regulations and the human protection courses offered by the CITI program. We will also brainstorm about the application of a variety of cutting-edge interactive technologies that are currently being used and can potentially be used in the near future to support healthcare, including Microsoft Kinect, Google glasses, Digital Pens, Mobile Health tracking devices (Fitbit/digital scales/Basis/Microsoft Band/Apple Watch), Microsoft HoloLens, and more. We will explore current research with and around this technology based on a variety of currently running projects in the Human-Centered and Ubiquitous Computing Lab (http://ubicomp.ucsd.edu)Required Knowledge: The course is aimed to be interdisciplinary and bring together students from CSE, CogSci, DBMI, Medicine, Biology, Public Health and others. Given the diversity of potential students, course pre-requisites fro this class are hard to establish. The only real pre-reqs are to be well experienced in your domain, to have a deep interest in research around technology and healthcare, and to have some experience in healthcare, technology or both.
Recommended Preparation for Those Without Required Knowledge: CSE 118 (Weibel), CSE 218 (Weibel), CSE 170, technology in healthcare classes, Innovation in Healthcare (Med school class)
Link to Past Course: http://hci4h.ucsd.edu/
CSE 291 (L00) - Bioinformatics & HW Acceleration with Prof. Tajana Rosing
Description: The course will cover Pavel Pevzner's textbook on Bioinformatics, but with specific focus on how algorithms described in the book can be accelerated in hardware.
Required Knowledge: Undergraduate-level digital logic.
Recommended Preparation for Those Without Required Knowledge: Read a relevant textbook.
Link to Past Course: N/A
- Fall 2018 Graduate Course Information
-
This is historical data. This page serves the purpose to help graduate students understand each graduate course offered during Fall 2018. Please use this page as a guideline to help decide what courses to take.
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 208 - Advanced Cryptography with Prof. Daniele Micciancio
Description: Advanced topics in cryptography, e.g., interactive protocols, zero-knowledge proofs, secure computation, obfuscation, homomorphic encryption, theoretical foundations, or other topics not covered in the introductory course CSE 207. Exact coverage changes every quarter.
Required Knowledge: Introductory modern cryptography course, like CSE 207, or equivalent.
Recommended Preparation for Those Without Required Knowledge: CSE 207
Link to Past Course: http://cseweb.ucsd.edu/classes/wi17/cse208-a/
http://cseweb.ucsd.edu/~mihir/cse208-Fa13/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: The advent of affordable sensors and interaction devices (e.g., webcams, mobile phone-based sensors, digital pens, Microsoft SenseCam, Microsoft Kinect, Google glasses, etc.), eye-tracking systems, and wireless mobile computing devices (e.g., mobile smartphones, Arduino boards with 802.11b wireless connectivity, etc.) has created boundless opportunities for in-the-world computing applications that can transform our lives.
This course explores these opportunities in the form of both a project-based class and an in-depth discussion of a range of ubiquitous computing technologies and applications.
On the one hand, we will explore the development of applications and systems based on those devices. On the other hand, we will critically read, and discuss research papers from the literature of ubiquitous computing, pervasive computing, and human-computer interaction.
Every week a new ubiquitous computing device will be introduced and we will discuss the technology behind it, and how it has been used in research (i.e. reading and discussing technical and research papers).
In addition, we will form teams to undertake small research projects. **Teams will span CSE 218 graduate students and CSE 118 undergraduate. Graduate students will take a leadership role in the projects and manage the projects.** The projects will involve the design and implementation of a ubiquitous computing application, based on one of the devices presented in class. Depending on availability of equipment, we might focus on a variety of different devices. Past classes focused on mobile devices, Microsoft Kinect, Google Glass, mobile eye-tracking.
Required Knowledge: Required is general knowledge in programming applications specifically using C++/C# and Java, as well as web technology. 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
Link to Past Course: http://weibel.ucsd.edu/cse218
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
Link to Past Course: http://cseweb.ucsd.edu/classes/fa17/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 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. 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: Either (1) CSE 221, graduate operating systems or (2) CSE 120/121, undergraduate operating systems, and CSE 127, undergraduate security.
Recommended Preparation for Those Without Required Knowledge: In addition to operating systems, we expect that students have exposure to computer architecture, programming languages, and compilers at a level equivalent to UCSD's undergraduate courses, CSE 141, CSE 130, and CSE 131.
Link to Past Course: N/A
CSE 230 - Principles of Programming Languages with Prof. Sorin Lerner
Description: This course will cover functional programming in OCaml, Object Oriented programming in Python, and constraint logic programming in Prolog. Students will also be required to read state of the art papers about research in programming languages. The course will cover material similar to 130, but with some additional focus on graduate-level research.
Required Knowledge: Undergraduate education in CS should suffice.
Recommended Preparation for Those Without Required Knowledge: None
Link to Past Course: https://ucsd-pl.github.io/cse-130-230/fa17/
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, transaction management, concurrency control, recovery, and parallel DBMSs. More recent topics such as column stores, Big Data systems, data integration, and data cleaning will likely be covered too. This course will overlap with the 190 from Spring'18, but this course does not cover the implementation details of indexing, sorting, and relational operators, although it covers other newer topics. Also, this course has no programming projects.
The class meets 3 times a week from 1:00pm to 1:50pm at CENTR 214. 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 SQL tutorials; Textbook: Database Management Systems (3rd edition), by Raghu Ramakrishnan and Johannes Gehrke (aka the "cow book").
Link to Past Course: http://www.db.ucsd.edu/CSE232S18/ (Note: This past version is by a different instructor)
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 250A - Probalisitic Reasoning and Learning with Prof. Lawrence Saul
Description: An introductory graduate course on probabilistic methods for reasoning and decision-making under uncertainty. Inference and learning in probabilistic graphical models; prediction and planning in Markov decision processes; applications to vision, robotics, speech, and natural language processing.
Required Knowledge: Elementary probability, linear algebra, and vector calculus, plus the ability to program in a high-level language (e.g., MATLAB, python, Java, C++, etc).
Recommended Preparation for Those Without Required Knowledge: Equivalent prerequisites at UCSD: CSE 103 - probability & statistics, Math 20E - vector calculus and Math 20F - linear algebra
Link to Past Course: http://cseweb.ucsd.edu/classes/fa14/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 (geometric and photometric image formation, color, image feature detection), inferring 3D properties from images (shape-from-shading, stereo vision, motion interpretation) and object recognition.
Required Knowledge: Students should comfortable with linear algebra, multivariable calculus, basic probability and statistics, and programming.
Recommended Preparation for Those Without Required Knowledge: Review textbooks on the required mathematics background knowledge.
Link to Past Course: http://cseweb.ucsd.edu/classes/fa16/cse252A-a/
CSE 254 - Statistical Learning with Prof. Sanjoy Dasgupta
Description: Neurally-inspired methods for unsupervised learning
Required Knowledge: Students should be comfortable with algorithms (at the level of CSE 202), linear algebra, and probability.
Recommended Preparation for Those Without Required Knowledge: N/A
Link to Past Course: N/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.
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/fa17/cse258-a/
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 website is at: http://cseweb.ucsd.edu/~viscomp/classes/cse274/wi18/274.html
Required Knowledge: CSE 167 (Computer Graphics) or equivalent at another university
Recommended Preparation for Those Without Required Knowledge: Take my CSE 167x course on edX
Link to Past Course: Even better is the link to the current course, http://cseweb.ucsd.edu/~viscomp/classes/cse274/wi18/274.html
Past versions (on different topics) accessible off my website. Since topics vary, students may repeat CSE 274 for credit even if they have taken it before with myself or another instructor.CSE 276A - Introduction to Robotics with Prof. Henrik Christensen
Description: This course provides an introduction to the fundamental of robotics across kinematics, sensor systems, estimation,
control, and planning.The course includes: Introduction to robotics in general, kinematics of robot systems, robot arm systems, sensors for robots, basic vision for robots, estimation methods for extraction of sensor information, robot localization and navigation, control of robot systems, robot motion planning, robot task planning, robot architectures, and evaluation of robot systems
The lectures will be complemented by implementation of key algorithms on small-scale robot systems. The robot will use vision as its primary sensory modality.
Required Knowledge: Basic programming knowledge, linear algebra, statistics
Recommended Preparation for Those Without Required Knowledge: A basis might be CSE 276C - Mathematics for Robotics
Link to Past Course: N/A
CSE 276C - Mathematics for Robotics with Prof. Henrik Christensen
Description: The course will provide a comprehensive introduction to the key mathematical concepts used for modeling, implementing and evaluation of robot systems. The key objectives are: 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, Learn how to model data using interpolation, linear regression, and higher-order approximation methods., Understand different methods for finding roots of equations, in one dimension and higher, including bisection, Newton's method, Müller's method, Generalize finite-dimensional linear algebra concepts such as orthogonal bases to perform function approximation, including using Legendre polynomials and Fourier series to compute least-squares approximations. Learn about different function norms, Understand optimization techniques such as gradient descent, conjugate gradient, Newton's method. Learn the basics of convex optimization, 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. The course will use small home assignments tasks and a larger robot project to exercise the topics covered in class.
Required Knowledge: The students should have a basic knowledge of mathematics and know one or more programming languages such as Python or Matlab for completion of homework assignments.
Recommended Preparation for Those Without Required Knowledge: Talk to lecturer prior to the start of the course.
Link to Past Course: N/A
CSE 291 (A00) - 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) - Software Support for Accelerators with Prof. Tajana Rosing
Description: The course will cover topics related to architecture of hardware accelerators both used today and proposed for future systems, along with software that is needed to support them. The topics covered will include operating system support, device drivers, domain-specific languages and compilers.
Required Knowledge: Undergraduate computer architecture and operating systems
Recommended Preparation for Those Without Required Knowledge: Read textbook required for those courses, or watch an equivalent class on the web
Link to Past Course: N/A
CSE 291 (D00) - 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 mobile platform by inspecting the blurry lines between electrical engineering and computer science.
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). 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: http://cseweb.ucsd.edu/~schulman/class/cse291_w17/
- Spring 2018 Graduate Course Information
-
This is historical data. This page serves the purpose to help graduate students understand each graduate course offered during Spring 2018. Please use this page as a guideline to help decide what courses to take.
CSE 201A - Advanced Complexity with Prof. Russell Impagliazzo
Description: This course surveys important recent research in computational complexity, which aims to identify the computational resources (e.g, time, memory, circuit size, parallel time, randomness) needed to solve computational problems. This course is of particular interest for students whose own work involves or touches on computational complexity, e.g., complexity theory, algorithm design, cryptography, machine learning, database theory or coding theory. We will start with a discussion of the consequences of various outcomes of the P vs. NP question involving both worst-case and average-case complexity. Part of this discussion will involve the complexity-theoretic foundations of cryptography. We will look at randomized interactive protocols both from a cryptographic and complexity-theoretic perspective. This will lead to the PCP theorem and hardness of approximation. Other topics will include randomized algorithms, derandomization, Boolean circuit lower bounds, relativization , and natural proofs. Time permitting, we might cover some of quantum computation, fine-grained complexity, PPAD and hardness of finding Nash equilibria, or other topics suggested by students.
Required Knowledge: We assume some general exposure to computational complexity and its basic notation, and a reasonable level of mathematical sophistication. CSE 200 or the equivalent should be adequate preparation.
Recommended Preparation for Those Without Required Knowledge: CSE 200
Link to Past Course: https://cseweb.ucsd.edu/classes/sp11/cse201A-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, authenticated encryption, asymmetric encryption, digital signatures, certificates, 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: This is a theory course. The minimal background is undergraduate discrete mathematics, algorithms and theory, corresponding to UCSD courses CSE 21, 101 and 105. Graduate background in algorithms and complexity theory, corresponding to UCSD courses CSE 202 and CSE 200, is preferred. In more detail, the needed background includes algorithms, probability theory, randomized algorithms. Some basic complexity theory (eg. P, NP, NP-completeness, reducibility between problems) will help. Most importantly, it needs general “mathematical maturity.” This means being comfortable and adept with mathematical language, abstractions, definitions and proofs.
Recommended Preparation for Those Without Required Knowledge: CSE 101, 105, 202, 200.
Link to Past Course: http://cseweb.ucsd.edu/~mihir/cse207/index.html
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, open to all doctoral students.
Required Knowledge: Students will need four skills: critically reading research papers, undertaking a small research project, giving a presentation, and writing a paper.
Recommended Preparation for Those Without Required Knowledge: Masters students should have taken an intro HCI course like COGS 120 / CSE 170 Human-computer Interaction Design. Undergrads may enroll in this course if they have two prerequisites: Cogs 14a or CSE 20, AND an A- or better in Cogs 120 or 102C.
Link to Past Course: https://d.ucsd.edu/IxD/research/2017/
CSE 218 - Advanced Topics in 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: Programming experience through CSE 100 Advanced Data Structures; Graduate Status or completion of CSE 110 Software Engineering
Recommended Preparation for Those Without Required Knowledge: See above.
Link to Past Course: https://cseweb.ucsd.edu/~wgg/CSE218/index.html
CSE 221 - Operating Systems with Prof. YY Zhou
Description: Operating system structures, concurrent computation models, scheduling, synchronization mechanisms, address spaces, memory management protection and security, buffering, streams, data-copying reduction techniques, file systems, naming, caching, disk organization, mapped files, remote file systems, case studies of major operating systems.
Required Knowledge: Undergraduate OS course (CSE 120 or equivalent)
Recommended Preparation for Those Without Required Knowledge: CSE 120
Link to Past Course: http://cseweb.ucsd.edu/classes/fa16/cse221-a/
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.
Recommended Preparation for Those Without Required Knowledge: CSE221 / CSE222A
Link to Past Course: http://cseweb.ucsd.edu/classes/sp17/cse223B-a/
CSE 227 - Computer Security with Prof. Hovav Shacham
Description: CSE 227 is a graduate course in computer security. Students will read and discuss recent papers in computer security and undertake a substantial research project. Topics vary from year to year but include systems security, network security, web security, usable security, and privacy. Cryptography is not covered in CSE 227; students are instead referred to CSE 207, CSE 208, and CSE 209B.
Required Knowledge: CSE 221, graduate operating systems, is an enforced prerequisite.
Recommended Preparation for Those Without Required Knowledge: In addition to graduate operating systems, we expect that students have exposure to computer architecture, programming languages, and compilers at a level equivalent to UCSD's undergraduate courses, CSE 141, CSE 130, and CSE 131.
Link to Past Course: https://cseweb.ucsd.edu/classes/wi14/cse227-a/
CSE 232 - Principles of Database Systems with Prof. Yannis Papakonstantinou
Description: CSE232 teaches the basic principles of the internals of SQL databases. This includes data structures, query processing, query optimization and transaction processing in SQL relational database management systems. The last weeks also cover database technologies beyond the relational data model and centralized query processing: Query processing on semistructured data, query processing in virtual databases, incremental view maintenance, column databases, parallel databases.
See the slideset and reading list in http://db.ucsd.edu/static/CSE232F16/ for the list of covered topics.
Required Knowledge: The class assumes that the students are already competent in database application programming using SQL and transactions. A prerequisites exam in the first week will test the students' knowledge on prerequisites. The prerequisites exam counts for 10% of the overall grade and is graded on Pass / Fail. That is, you either get full points or zero points. In the latter case, it is strongly advised that you do not continue taking the class.
Recommended Preparation for Those Without Required Knowledge:
To refresh your knowledge on prerequisites (and to cover gaps), see the reading list in http://db.ucsd.edu/static/CSE232F16/
If you have not had a course on designing an SQL database and programming using an SQL database, you are advised to take CSE132A and take CSE232 next year.
Link to Past Course: http://db.ucsd.edu/static/CSE232F16/
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.
Recommended Preparation for Those Without Required Knowledge: Review theoretical background from a standard textbook such as Sipser's "Introduction to the theory of computation."
Link to Past Course: N/A
CSE 240A - Principles of Computer Architecture with Prof. Leo Porter
Description: This course introduces students to the basics of modern processor operation. The topics discussed in the course include: system performance, instruction set architecture, pipelining, branch prediction, out-of-order superscalars, memory-hierarchy design, simultaneous multithreading, and chip multiprocessors.
Required Knowledge: Basics of Instruction Set Architecture, cache design, and the design of single-cycle, multi-cycle, and pipeline processors.
Recommended Preparation for Those Without Required Knowledge: CSE 141
Link to Past Course: https://cseweb.ucsd.edu/classes/fa13/cse240A-a/
CSE 240B - Parallel Computer Architecture with Prof. Bryan Chin
Description: The days of improving computer performance via frequency and scalar micro-architectural improvements are long gone. Moore's Law continues to improve the number of devices on a CPU, but the challenges with Dennard scaling have prevented the easy performance gains we enjoyed in the past. Parallel computation has been and continues to be a powerful method at our disposal to take advantage of new silicon capabilities. This course is divided into two parts. In the first part, we will study advanced computer architecture topics such as cache coherency for NUMA machines and memory consistency models. In particular, we will look at the challenges for architecture as the number of processors scales to large numbers.
In the second part of the course, we will explore recent advances and research in parallel computation and advanced computer architecture. Past topics have included: GPUs, TPUs, transactional memory, wide SIMD and vectorization, SIMT, and on-chip interconnects. Topics may change, depending on the interests of the class.
Required Knowledge: Background in computer architecture. Some knowledge of C programming is helpful but not essential.
Recommended Preparation for Those Without Required Knowledge: See instructor.
Link to Past Course: https://sites.google.com/a/eng.ucsd.edu/cse240bspr2017/
CSE 248 - Algorithmic and Optimization Foundations for VLSI CAD with Prof. Andrew Kahng
Description: Combinatorial algorithms and global optimization foundations for solution of interconnection, clustering, partitioning, placement, estimation and other fundamental VLSI physical design problem classes. Assignments include implementation / experimentation for homework and project.
Required Knowledge: CSE 202 (at least, CSE 101 required), CSE 241A / ECE 260B (strongly recommended), C/C++ programming background (strongly recommended).
Recommended Preparation for Those Without Required Knowledge: Contact professor to discuss.
Link to Past Course: N/A
CSE 252C - Selected Topics in Vision and Learning with Prof. Ben Ochoa
Description: This course is dedicated to recent research on computer vision, including learning-based methods. Students enrolled in this course are required to present a paper in class and complete a project inspired by the paper. All projects will follow specific guidelines, including preparation of a project proposal, draft project report, and final project report. The project should be at the frontier of current research, but need not necessarily advance the state of the field. For example, replicating the results of an innovative paper would be a good project. Projects must be closely inspired by one or two specific high-quality papers and should have an experimental aspect.
Required Knowledge: Linear algebra, calculus, probability and statistics, computer vision.
Recommended Preparation for Those Without Required Knowledge: Graduate-level computer vision courses and textbooks.
Link to Past Course: https://cseweb.ucsd.edu/classes/sp17/cse252C-a/
CSE 255 - Data Mining and Predictive Analytics with Prof. Yoav Freund
Description: In this course you will learn how to use Spark to perform large scale data analysis. Subjects covered: The I/O bottleneck and the memory hierarchy. RDDs and Map-reduce. Spark dataframes and spark SQL. PCA, dimensionality estimation and low dimensionality mapping. Ensemble methods for classification. Deep Neural Networks and tensor flow.
Required Knowledge: Python, Jupyter notebooks. Probability and statistics. Machine Learning.
Recommended Preparation for Those Without Required Knowledge: edX Data-Science Micro-masters: 3 first courses: https://www.edx.org/micromasters/data-science
Link to Past Course: https://mas-dse.github.io/DSE230/class_plan/
CSE 283 - Data Wrangling in Bioinformatics with Prof. Vineet Bafna
Description: The development of omics (genomics, transciptomics, proteomics) 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. While the course should be self-contained, we assume some mathematical maturity.
Required Knowledge: Students are encouraged to take CSE 282 prior to this course.
Recommended Preparation for Those Without Required Knowledge: CSE 282
Link to Past Course: N/A
CSE 291 (A00) - Alternative Computing Paradigms with Prof. Tajana Rosing
Description: This course will cover various new computing paradigms targeted to accelerating big data workloads, ranging from approximate computing, to processing in memory, neuromorphic computing, hyperdimensional computing and other strategies.
Required Knowledge: Graduate-level computer architecture
Recommended Preparation for Those Without Required Knowledge: Textbook on advanced computer architecture
Link to Past Course: N/A
CSE 291 (B00) - Micro-Quadcopter from Scratch with Prof. Steve Swanson
Description: In this course you will build a small, remote-controlled multi-rotor aircraft (i.e., a quadcopter). You will design the circuitry and circuit boards, have the board manufactured, assemble, and fly your quadcopter. This is an intensive project class. You should expect to work hard.
Required Knowledge: Some experience with electronics or control algorithms.
Recommended Preparation for Those Without Required Knowledge: The class is not recommend if you don’t have some experience with electronics or control algorithms.
Link to Past Course: N/A
CSE 291 (C00) - 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, and mutual exclusion.
Link to Past Course: N/A
CSE 291 (D00) - Introduction to Robotics with Prof. Henrik Christensen
Description: This course provides an introduction to the fundamental of robotics across kinematics, sensor systems, estimation,
control, and planning.The course includes: Introduction to robotics in general, kinematics of robot systems, robot arm systems, sensors for robots, basic vision for robots, estimation methods for extraction of sensor information, robot localization and navigation, control of robot systems, robot motion planning, robot task planning, robot architectures, and evaluation of robot systems
The lectures will be complemented by implementation of key algorithms on small scale robot systems. The robot will use vision as its primary sensory modality.
Required Knowledge: Basic programming knowledge, linear algebra, statistics
Recommended Preparation for Those Without Required Knowledge: A basis might be CSE 291 (G00) - Mathematics for Robotics
Link to Past Course: N/A
CSE 291 (E00 + F00) - 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:
Link to Past Course: N/A
CSE 291 (G00) - Advanced Statistical NLP with Prof. Ndapa Nakashole
Description: This is a project and research-oriented course on statistical natural language processing (NLP). The course will contain a lecture component, and a second component with focus on understanding and extending state-of-the-art machine learning algorithms for a series of important topics in NLP. The course will start off with a few introductory lectures and two programming assignments. The course assumes background in basic machine learning.
Required Knowledge: The course assumes knowledge of basic probability. Programming assignments will be in Python.
Recommended Preparation for Those Without Required Knowledge: Contact instructor for more information.
Link to Past Course: The course will contain aspects of two different courses:
http://cseweb.ucsd.edu/~nnakashole/teaching/291_sp17.html
http://cseweb.ucsd.edu/~nnakashole/teaching/190_wi18.htmlCSE 291 (H00) - Management of Large-Scale Graph Data with Prof. Amarnath Gupta
Description: In many application areas, data is structured as a graph of objects and their relationships or interactions. Transportation networks, social networks, biomolecular interactions, product networks, knowledge graphs, internet-of-things are only a few of the domains that produce and analyze large graphs. Companies like Google, Linkedin, Facebook, Walmart, eBay and Amazon use graph-structured data as part of their operational and analytical processes. In many cases, these graphs are very large. In 2015, the Facebook graph had an estimated 1.39B nodes and 1 Trillion edges. Due to the increasing volume and connectedness of graphs, tasks like graph storage, answering queries and performing analytics become a significant bottleneck.
The CSE 291 course on the Management of Large-Scale Graph Data offers an in-depth view of modeling, storing, retrieving and analyzing graph-structured data from the standpoint of Data Management Systems. In this course, we will cover:
Dominant graph data models Graph operations- Graph query languages
- Index structures and algorithms
- Query processing algorithms and optimization techniques for graphs
- Distributed graph computation
- Several real-life industry-strength systems
- Some connections between Graph Data Management and Machine Learning
Link to Past Course: N/A
In covering these topics, we will deliberately take a “big data” perspective to address the problem of scalability for query and analytics workloads.
The class will involve reading research papers and a hands-on project.
Required Knowledge: CSE-232A or equivalent coursework on relational data management. I am expecting students to know SQL and the fundamental mechanisms of relational query processing and optimization, some graph theory, typically covered in a Discrete Math course, and basic graph algorithms covered in an Algorithms class.
Recommended Preparation for Those Without Required Knowledge: N/A