Current Courses & Preparation by Course

Updated February 12, 2019

This page serves the purpose to help graduate students understand each graduate course offered during the 2018-2019 academic year. Please use this page as a guideline to help decide what courses to take.

Spring 2019 Graduate Course Information

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: CSE170 or equivalent

Recommended Preparation for Those Without Required Knowledge: Take CSE170 or equivalent

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 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