CSE 492 seminars are credit/no credit and generally do not apply to CSE senior elective credit. CSE majors may opt for one of the following to apply to CSE senior electives (CSE 301 internship 2 credits, OR ENGR 321 internship 2 credits OR one credit of 492).

CSE 490s that are graded DO count as CSE senior electives. Occasionally a CSE 490 will be allowed as a Core Course, but that is on a case by case basis.



CSE 490A: Software Entrepreneurship

Taught by: A. Leong

4 credits, CSE Senior Elective

Prerequisites: None

This is the class which served as a startup launching pad for many startups. You aren’t required to launch, but you will rehearse the steps to actually do this. This class doesn’t require that you have any software background. It takes all kinds to build a software startup.

CSE 490C: Cryptography

Taught by: R. Lin

4 credits, CSE Core Course and CSE Senior Elective

Prerequisites: CSE 312 and CSE 332

Cryptography provides important tools for ensuring the confidentiality and integrity of sensitive digital data. Core cryptographic tools, such as encryption and digital signature, are used daily behind millions of online transactions, and form the basis for more advanced cryptographic systems, such as, cryptocurrency.

This course gives an introduction to cryptography, by focusing on the design and application of selected important cryptographic objects. For each cryptographic object, we formalize its functionality and security requirements (also known as security definitions), present schemes that achieve the desired functionality, and explain why they are secure.

Overall, we aim to survey the cryptography landscape, train cryptographic thinking, and convey proper usage of important cryptographic tools.

CSE 490 G1: Introduction to Deep Learning (linked to CSE 599 G1: Introduction to Deep Learning)

Taught by: Redmon

4 credits, CSE Core Course CSE Senior Elective

Prerequisites: CSE 446 OR CSE 455 OR CSE 416

A survey class of neural network implementation and applications. Topics include: optimization – stochastic gradient descent, adaptive and 2nd order methods, normalization; convolutional neural networks – image processing, classification, detection, segmentation; recurrent neural networks – semantic understanding, translation, question-answering; cross-domain applications – image captioning, vision and language.

CSE 490N: Neural Engineering

Taught by: BIOE

3 credits, CSE Core Course CSE Senior Elective

Prerequisites: Either BIOL 130, BIOL 162, or BIOL 220; and one of the following: MATH 308, AMATH 301, or AMATH 352

Introduces the field of Neural Engineering: overview of neurobiology, recording and stimulating the nervous system, signal processing, machine learning, powering and communicating with neural devices, invasive/non-invasive brain-computer interfaces, spinal interfaces, smart prostheses, deep-brain stimulators, cochlear implants and neuroethics. Heavy emphasis on primary literature Offered: jointly with BIOEN/EE 460.

CSE 490Q: Quantum Computation

Taught by: K. Zatloukal

3 credits, CSE Senior Elective,

Prerequisites: Math 308 and (CSE 312 or MATH/STAT 391)

This course provides an introduction to the quantum model of computation. After describing the model, we will survey a number of examples where quantum computation provides an advantage over classical computation such as efficiently factoring large numbers, efficiently learning from exponentially large data sets, and generatingcertifiablyrandom numbers.

The class assumes no physics background. However, we may briefly discuss areas where quantum computation provides useful applications or insights to physics or other sciences, such as using quantum computers to determine how molecules interact (e.g., for vaccine development), quantum communication to "teleport" data over long distances, quantum information to understand black holes, or quantum error correction to understand quantum gravity.

The only requirements for the course are MATH 308 (linear algebra) and CSE 312 or MATH 394 (probability), as these are necessary to describe the standard models of quantum computation. We may also discuss alternative descriptions of quantum computation using diagrams rather than linear algebra.

The course will have weekly or bi-weekly homework assignments of a mathematical nature, and a final project that involves reading literature in the field.


CSE 492E: Computer Ethics Seminar

Taught by: Moore

2 credits, Senior Elective

Prerequisites: None

Be it social media platforms, robots, or big data systems, the code Allen School students write—the decisions they make—influences the world in which it operates. This is a survey course about those influences and how to think about them. We recognize “the devil is in the implementation details.”

The course is divided into two parts: In the first part, we survey historical and local issues in tech, particularly those concerning data. We then engage with critical perspectives from disciplines such as machine ethics and science and technology studies as a framework for students to articulate their own beliefs concerning these systems. In the second part, we apply these perspectives to urgent issues in emerging technologies, such as facial recognition and misinformation.

Throughout students hone their critical reading and discussion skills, preparing them for a life-long practice of grappling with the—often unanticipated—consequences of innovation.

We cover topics such as: AI ethics, social good, utopianism, governance, inclusion, facial recognition, classification, privacy, automation, platforms, speculative design, identity, fairness, power and control, activism, and subversive technologies.

See the 20wi websitefor additional information on what the course is about, though some details are likely to change.

CSE 492J: Landing a Job in the Software Industry Career Seminar

Taught By: Kim Nguyen, Allen School Lecturer

1 credit, Senior Elective

Pre/co-requisite: CSE 332

This seminar is targeted at students who have already completed 332 (or are taking it during Autumn 2020) and need help building their confidence for pursuing software engineering jobs (internship and full-time). Kim will take you through the recruiting process end-to-end: resumes, applying, career fairs, interacting with recruiters, Interviewing, negotiating, etc. The bulk of the course will be focused on software engineering interview techniques.

This pass/fail seminar will include an optional weekly workshop on Thursdays @ 12:30 PM.

**Note, that this seminar is not a good fit for anyone who has already had multiple internships or has had multiple successful experiences interviewing for software opportunities. There will be no exceptions for students that do not meet the CSE 332 pre/co-req.

If you have any questions about the course, please reach out to Kim Nguyen: kim@cs.washington.edu

CSE 492 M: Startup Seminar

Led by: Kurtis Heimrl

1 credit, Senior Elective

Prerequisites: None

Learn tried and true frameworks and strategies to build a venture-scale technology startup from one of the Pacific Northwest’s most tenured and regarded venture capital firms. Madrona Venture Group, along with its incubator, Madrona Venture Labs, and their experienced VCs, founders, and operators, will teach the Startup Seminar, focused on sharing real-world insights, challenges, and best practices to inform and accelerate your startup journey.

CSE 492 P1: Patterns for Career Success Seminar

Taught By: Philip Su, CEO of Audere

1 credit, Senior Elective

Pre/co-requisite: CSE 332

As with the science of computing, careers in computing also have models, patterns, and anti-patterns. This interactive seminar, led by a 20-year industry veteran from Facebook and Microsoft who now leads a Seattle tech nonprofit funded by the Gates Foundation, covers insights across a gamut of topics that will accelerate your career. This pass/fail seminar will include around 15 mins of weekly assignments, and is intended primarily for seniors. The same instructor led this highly-rated seminar in Spring 2018 with a slightly longer format.

CSE 492 S: A Seminar in Software Performance Engineering for juniors and seniors

Taught By: Mark Friedman

1 credit, Senior Elective

Pre-requisite: CSE 331, internship experience preferred

Software Performance Engineering is devoted to building responsive systems and achieving scalability requirements. The seminar will use readings, case studies, and guest lectures to introduce students to the practical tools and techniques that skilled software developers use to solve difficult performance problems. The class discussion will focus each week on a single, performance-related topic: Moore’s Law, RISC machines vs. CISC, benchmarking, parallel processing and Amdahl’s Law, integrating performance into the application development life cycle, load and stress testing, the human psychology of time perception, RTT in TCP, among others.

The instructor is an industry veteran and well-known developer of performance tools. The workshop is based on a fuller version of the class that was first given to graduate students in 2018.

1-credit CR/NC. Regular attendance and roughly 1-2 hours of outside work expected per week.

CSE 492 T: Equitable and Inclusive Computer Science Pedagogy

Taught By: Brett Wortzman

2 credits, Senior Elective

Pre-requisite: CSE 143, CSE 163, or equivalent

Topics in the design and implementation of computer science courses through an equity and inclusion lens, with a particular emphasis on higher education. Focusing on applications of evidence-based best practices and choosing and adapting approaches based on concerns and characteristics specific to a given set of students. Includes basics of teaching and learning theory, pedagogical and assessment techniques, and equity, diversity, and justice concerns. Designed for aspiring teachers or those interested in practical issues of teaching computer science, with the goal of enabling students to create effective, equitable, and inclusive learning environments in their own classrooms.

Notes: Registration is by permission of instructor/add code only. Interested students should fill out this form



CSE 490A: Entrepreneurship: Company-Building (w/ 599A )

Taught by: Gottesman, Lazowska

Prerequisites: None; Offered jointly with CSE 599 A1

5 Credits, CSE Senior Elective

(*can also count as Computer Science or BSMS Capstone but NOT a Computer Engineering Capstone)

For a number of years, Greg Gottesman and his fellow Madrona Venture Group Managing Director Matt McIlwain taught an entrepreneurship course in the Foster School of Business. During Winter 2014 they taught the course in the Paul G. Allen School of Computer Science & Engineering, targeted to a technical audience that included CSE undergraduate and graduate students as well as Foster School MBA students. Greg offered a repeat of the course in Winter 2015 - an offering that added students from Interaction Design and MHCI+D to the mix. In Winter 2016, 2017, 2018 and 2019, Greg - now Managing Director and Co-Founder of Pioneer Square Labs - offered it again. And now, in Winter 2020, Greg will again offer the course, with an assist, as in past years, from Allen School professor Ed Lazowska.

Greg is the very best. He has invested in over 100 companies as a venture capitalist, played a founding role in more than a dozen startups, and helped fund more than 15 UW CSE spinouts. He and the colleagues he will rope into providing guest lectures and student feedback have a wealth of experience to share. The course is, above all, practical - interdisciplinary teams will develop a pitch, business plan, and product demo. Visit the course page here for more details!

CSE 490: Toolkit for Modern Algorithms (will be updated to CSE 422 during winter quarter)

Taught by: J. Lee

3 credits, CSE Core Course or CSE Senior Elective

Prerequisites: None

This course provides a rigorous introduction to the principles of modern algorithm design, with a particular focus on the analysis of large, noisy data sets, and the algorithmic principles underlying modern statistics and machine learning. For most topics, there will be an associated assignment, where students will get their hands dirty, experimenting with underlying ideas.


CSE 492E: Computer Ethics Seminar

Taught by: Grossman

2 credits, CSE Senior Elective

Prerequisites: None

Be it social media platforms, robots, or big data systems, the code Allen School students write—the decisions they make—influences the world in which it operates. This is a survey course about those influences and how to think about them. We recognize “the devil is in the implementation details.”

The course is divided into two parts: In the first part, we survey historical and local issues in tech, particularly those concerning data. We then engage with critical perspectives from disciplines such as machine ethics and science and technology studies as a framework for students to articulate their own beliefs concerning these systems. In the second part, we apply these perspectives to urgent issues in emerging technologies, such as facial recognition and misinformation.

Throughout students hone their critical reading and discussion skills, preparing them for a life-long practice of grappling with the—often unanticipated—consequences of innovation.

We cover topics such as: AI ethics, social good, utopianism, governance, inclusion, facial recognition, classification, privacy, automation, platforms, speculative design, identity, fairness, power and control, activism, and subversive technologies.

See the20wi website for additional information on what the course is about, though some details are likely to change.

CSE 492J: Landing a Job in the Software Industry Career Seminar

Taught By: K. Nguyen, K. Wang

1 credit, CSE Senior Elective

Pre/co-requisite: CSE 332

This seminar is targeted at students who have already completed 332 (or are taking it during Autumn 2020) and need help building their confidence for pursuing software engineering jobs (internship and full-time). Kim will take you through the recruiting process end-to-end: resumes, applying, career fairs, interacting with recruiters, INTERVIEWING, negotiating, etc. The bulk of the course will be focused on software engineering interview techniques.

This pass/fail seminar will include an optional weekly workshop on Thursdays @ 12:30 PM.

*Note, that this seminar is not a good fit for anyone who has already had multiple internships or has had multiple successful experiences interviewing for software opportunities. There will be no exceptions for students that do not meet the CSE 332 pre/co-req.

If you have any questions about the course, please reach out to Kim Nguyen: kim@cs.washington.edu

CSE 492/590 K1: Designing a More Critical CS Education

Taught by: Shagun Jhaver, Tadayoshi Kohno, Kevin Lin

1 credits, CSE Elective and Graduate Elective

Prerequisites: None

Society and computational systems are deeply intertwined. In this course, students will explore how technologies can embody systemic social inequities by synthesizing selected texts into new educational materials that can be broadly valuable (e.g., other students can use these materials for self-study later, the material could be adopted by instructors nationally). It is expected that students will finish So You Want to Talk About Race by Ijeoma Oluo before the second class, although we would encourage students to read and study this book before the classes begin. During the course, students will each pick and read at least one other complete book. All students reading the same book will (at the start of the quarter) develop a timeline for completing the book over the course of the quarter and then coordinate with one another weekly. Students will then present reports of findings / insights / observations / educational lesson ideas from the readings during classes throughout the quarter. The final portion of the quarter will be devoted to cumulative student presentations about the lessons learned from the books, as well as the educational materials developed as a result. The instructors will provide a set of books to choose from; alternate texts might be possible, but must be approved by the instructors. In addition to the book they choose to read, students enrolled in the 500-level version of this course will be expected to explore at least some of the underlying source literature referenced by their selected book. Some details of the course structure may change based on enrollment. This is a 1-credit CR/NC seminar course. It is distinct from and complementary to the 2-credit undergraduate course CSE 492E and the 4-credit graduate course CSE 599P also offered in winter by Dan Grossman and Katharina Reinecke, respectively.



CSE 490: Wireless Communication

Taught By: J. Smith

up to 5 credits; CSE Core Course or CSE Senior Elective

Prerequisites: None

The course is a self-contained introduction to Wireless Communication. It does not assume any prior experience with the subject. The emphasis is on understanding the principles underlying wireless communication, construed broadly: how can messages be sent reliably through noisy, unreliable communication channels?  The assignments consist of a series of programming exercises that allow you to engage in a hands on fashion with the material, culminating in a project of your choosing. (There are no exams.) We will use simulation, Software Defined Radios, and other programmable platforms to engage with wireless communication techniques through software. We will briefly discuss mainstream protocols such as Wi-Fi, Bluetooth, and cellular communication, as well as emerging standards such as LoRa and protocols for Internet of Things. We will also discuss applications of wireless techniques in areas adjacent to communication, such as storage, sensing, perception, and communication in biological systems. Topics to be covered include signal to noise ratio, frequency domain analysis, bandwidth, capacity of noisy communication channels, modulation, channel coding, error detection, error correction, and connections between machine learning and communication (eg decoding as inference, learning as compression, etc).

CSE 490: Physical Computing

Taught by: Froehlich

CSE Core Course or CSE Senior Elective

Prerequisite: CSE 333

In this course, we will learn how to build interactive systems that capture and react to the wonderfully complex physicality and expressivity of humans and the world around us. Students will work in teams to design their own end-to-end games, including custom input controllers, digitally fabricated cases, and reactive 2D or 3D game environments. The games themselves will be student-proposed—with feedback from peers and the teaching staff—but must support at least two simultaneous players with one controller that requires physical input (e.g., button presses, joystick controls) and the other that responds to a player’s physical movement, sounds, or other body articulations (e.g., by using a webcam, microphone, or remote sensors). While we assume no previous experience with electronics or microcontrollers, you should feel comfortable and confident in at least one programming language.

The assignments will be a mixture of individual and team-based with a greater focus on the latter as the quarter progresses. Individual assignments will be based on our website: https://makeabilitylab.github.io/physcomp/

While the focus this quarter is on producing an interactive game, the games themselves are a vehicle for learning. This is not a game design course, this is a physical computing course. Games provide a wonderfully rich, flexible, and fun medium for learning as they enable you to design the entire interactive experience from custom input controllers to the multimedia game itself.

Core Modules

        • Module 1: Electronics, Microcontrollers, I/O
        • Module 2: Games and human-centered design (intro to graphics programming, sound, game loops, user testing)
        • Module 3: Digital fabrication (form design, 3D printing, embedding electronics)
        • Module 4: Advanced I/O (applied signal processing and machine learning using web APIs).


CSE 492E: Computer Ethics Seminar

Taught by: TBA

2 credits, CSE Senior Elective

Prerequisites: None

Be it social media platforms, robots, or big data systems, the code Allen School students write—the decisions they make—influences the world in which it operates. This is a survey course about those influences and how to think about them. We recognize “the devil is in the implementation details.”

The course is divided into two parts: In the first part, we survey historical and local issues in tech, particularly those concerning data. We then engage with critical perspectives from disciplines such as machine ethics and science and technology studies as a framework for students to articulate their own beliefs concerning these systems. In the second part, we apply these perspectives to urgent issues in emerging technologies, such as facial recognition and misinformation.

Throughout students hone their critical reading and discussion skills, preparing them for a life-long practice of grappling with the—often unanticipated—consequences of innovation.

We cover topics such as: AI ethics, social good, utopianism, governance, inclusion, facial recognition, classification, privacy, automation, platforms, speculative design, identity, fairness, power and control, activism, and subversive technologies.

See the 20wi website for additional information on what the course is about, though some details are likely to change.

CSE 492J: Landing a Job in the Software Industry Career Seminar

Taught By: K. Nguyen, K. Wang

1 credit, CSE Senior Elective

Pre/co-requisite: CSE 332

This seminar is targeted at students who have already completed 332 (or are taking it during Autumn 2020) and need help building their confidence for pursuing software engineering jobs (internship and full-time). Kim will take you through the recruiting process end-to-end: resumes, applying, career fairs, interacting with recruiters, INTERVIEWING, negotiating, etc. The bulk of the course will be focused on software engineering interview techniques.

This pass/fail seminar will include an optional weekly workshop on Thursdays @ 12:30 PM.

*Note, that this seminar is not a good fit for anyone who has already had multiple internships or has had multiple successful experiences interviewing for software opportunities. There will be no exceptions for students that do not meet the CSE 332 pre/co-req.

If you have any questions about the course, please reach out to Kim Nguyen: kim@cs.washington.edu