Current Quarter Course Descriptions & Recommended Preparation

Updated August 13, 2019

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

Fall 2019 Graduate Course Information

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:

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:

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:

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:

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:

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:

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: My Fall'19 edition will have a similar schedule, format, and grading scheme.
Yannis's older edition:

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:

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:

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:

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:

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:  However, we will spend one lecture revising this material

Link to Past Course: This is an introduction to NLP course, similar in content to:

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:

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 basis

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:

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.

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:

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:

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