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.

Autumn 2020 CSE Special Topics & Seminar Courses

Autumn 2020 CSE 490 Special Topic Courses

CSE 490C: Cryptography

Prerequisites: CSE 312 and CSE 332
CSE Core Course & CSE Senior Elective, 4 credits

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)

Prerequisites: CSE 446 OR CSE 455 OR CSE 416
CSE Core Course & CSE Senior Elective, 4 credits

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

Prerequisites: Either BIOL 130, BIOL 162, or BIOL 220; and one of the following: MATH 308, AMATH 301, or AMATH 352.
CSE Core Course & CSE Senior Elective, 3 credits

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

Prerequisites: Math 308 and (CSE 312 or MATH/STAT 391)
CSE Senior Elective, 3 credits

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 generating certifiably random 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.

Autumn 2020 CSE 492 Seminars

CSE 492E: Computer Ethics Seminar

2 credits, CR/NC
Taught by: 
TBA

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

Pre/co-requisite: CSE 332
1 credit, CR/NC
Taught By: Kim Nguyen, Allen School Lecturer

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 P1: Patterns for Career Success Seminar

Pre/co-requisite: CSE 332
1 credit, CR/NC
Taught By: Philip Su, CEO of Audere

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.

Pre-requisite: CSE 331, internship experience preferred
1 credit, CR/NC
Taught By: Mark Friedman

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.


Winter 2021 CSE Special Topics/Seminar Courses

Winter 2021 CSE 490 Special Topic Courses

TBD

Winter 2021 CSE 492 Seminars

TBD

Spring 2021 CSE Special Topics/Seminar Courses

Spring 2021 CSE 490 Special Topic Courses

CSE 490: Physical Computing

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

Spring 2021 CSE 492 Seminars

TBD

 -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Spring 2020 CSE Special Topics Courses: 

  • Graded undergraduate courses (CSE 390, 490):

    • Incentives in Computer Science, Anna Karlin (also available as CSE M599)

    • Wireless Communication, Josh Smith

    • Advanced Programming Languages, James Wilcox

    • Academic Skill Building Through Bottom-Up Computing, Dan Grossman & Leslie Ikeda & Aaron Johnston

  • CR/NC undergraduate seminars (CSE 390, CSE 492)

    • Mathematics for Computation Workshop, instructor tbd, CSE390Z

    • Career Seminar, Kim Nguyen and Katherine Siyu Wang

    • Computer Ethics, Dan Grossman

  • Graded graduate courses (CSE 599):

    • Reinforcement Learning, Byron Boots

    • Molecular Information Systems, Luis Ceze and Jeff Nivala

    • Topics in Natural Language Understanding, Luke Zettlemoyer

    • Computing for Social Good, Kurtis Heimerl

    • Intro to Quantum Computing, Nathan Wiebe

CSE 490Z Incentives in Computer Science, Anna Karlin (also available as CSE M599)

Pre-requisite: CSE 312 
3 credits

Many modern applications require the design of software or systems that interact with multiple self-interested participants. This course will teach students how to model and reason about such systems using economic and game theoretic principles.  Topics include auctions (e.g., Facebook's advertising system), equilibrium analysis, cryptocurrencies (e.g. the incentive structure of Bitcoin), two-sided markets (online labor markets, dating markets, etc.), reputation systems and social choice. 

CSE 490W Wireless Communication, Josh Smith

Pre-requisites: CSE 333, MATH 308
4 credits
Lecture Mon, Weds (80 minute lectures) 

TA lab hours Thurs and TBA: Lab activities are self-directed. There is dedicated lab space and equipment you can access at any time.  TAs will be in lab at specific times, but you are not expected to be in lab at those times unless you need to see the TAs

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 explore mainstream applications such as Wi-Fi, Bluetooth, and cellular communication, as well as emerging applications such as 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 discussed 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 490P Advanced Programming Languages, James Wilcox

Pre-requisite: CSE 341
4 credits

A good programming language changes the way you think about solving problems. Building on  our intuition as competent *users* of various programming languages, this course peeks behind the curtain into the art and science of language design and implementation, allowing us to create languages that help people think about problems in new ways. Topics to be covered include semantics, interpreters, type systems, type safety proofs, type checkers, constraint solving, and program correctness proofs. A major aspect of this course will be building a working REPL for an SML-like language.

Instructor bio: James Wilcox defended his PhD in programming languages and verification at UW in 2019. He now works on applying formal methods in industry settings. James taught 341 in Winter 2017 very successfully, making various additions to that course, notably its second homework.

CSE 390Z Mathematics for Computation Workshop, instructor tbd

For students also enrolled in CSE 311
1 credit
Similar motivation to offerings in Fall and Winter

CSE 492J Career Seminar, Kim Nguyen and Katherine Siyu Wang

Pre/co-requisite: CSE 332
1 credit, CR/NC
CSE 492 J: Landing a Job in the Software Industry
Taught By: Kim Nguyen, Allen School Career Counselor and Katherine Wang, Interviewing Extraordinaire

This seminar is targeted at students who have already completed 332 (or are taking it during Autumn 2019) and need help building their confidence for pursuing software engineering jobs (internship and full-time). Kim and Kat 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 492E Computer Ethics, Dan Grossman

2 credits, CR/NC 

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 for Spring.

CSE 599 Molecular Information Systems, Luis Ceze and Jeff Nivala

4 credits

Come hang out with the Molecular Information Systems Lab (MISL) crowd and learn about building systems with molecular, electronic and computational components. We will look closely into:

  • Storing and retrieving data into/from DNA. We will dissect the state-of-the-art in encoding/decoding algorithms, DNA “writing”, manipulation, and “reading” (sequencing).

  • Nanopore DNA sequencing and protein sensing. We will read about the state-of-the-art in molecular sensing, nanopore signal and data analysis and molecular design using machine learning.

  • Fluidics automation using liquid handling robots and digital microfluidics devices.

The class will read and discuss papers, as well as do a project involving a mix of molecular biology, fluidics automation, sequencing, and machine learning.  Here are some initial project ideas:

  • Build an error model from DNA synthesis+sequencing data -- MISL has a gigantic amount of data

  • Cas9 binding affinity with nanopores

  • Similarity search with Cas9 + nanopores

  • Wine (or anything!) analysis with nanopores

  • Molecular tagging -- molecular QR codes?

  • Nanopore Signal Analysis/Classification with ML

  • Implement a protocol in in PurpleDrop (MISL's digital microfluidics system) -- allergen or pathogen detection?

  • Make color "cocktails"!

CSE 599 Topics in Natural Language Understanding, Luke Zettlemoyer

4 credits

The vast majority of research in natural language processing (NLP) has focused exclusively on English language texts. However, there are thousands of languages in the world and recent advances in deep learning for NLP have introduced models that should, in theory, work for any language. In this class, we will review and discuss ideas in multi-lingual NLP, including but not limited to morphological analysis, character-level models, cross-lingual transfer, language model pre-training, and massively multi-lingual machine translation. We will read foundational and advanced papers on these topics, with a focus on more recent work.

CSE 599 Computing for Social Good, Kurtis Heimerl

4 credits

As the role of technology has grown, from mainframes to laptops to mobile phones and pervasive AI, so has the desire to leverage these advances for the good of society. This class will explore the broad, ongoing themes around Computing for Social Good, inclusive of advances in HCI, computer networks, artificial intelligence, and sustainability. We will read about national- and global-scale challenges and more specific subproblems, and relevant technology projects. While we will examine some conventional engineering ethics topics, our aim is much broader: we will start with fundamental social and ecological challenges and then consider what role, if any, technology should play in responding to them. One of our aims will be to differentiate between nice-sounding-but-ineffective tech-for-good solutions and those that have a chance for real impact. As a result, we will take a systems perspective -- to trace root causes and find the right place(s) to make lasting change.

While a working knowledge of critical tech theory is important to doing good work, this is a class for builders and designers. All students will complete a project and end up with an artifact; potentially a tool (designed and/or built) for solving a real-world problem that they bring to the class or a fictional narrative elucidating the potentials and dangers of new ongoing advances.

This is a graduate-level computer science class but particularly motivated and experienced students (including undergrads) from other disciplines can reach out if they'd like to participate.

CSE 599 Intro to Quantum Computing, Nathan Wiebe

4 credits, cross-listed in Physics
Prerequisites: For students from a CSE background: Background in linear algebra, algorithms, and basic complexity theory.  No prior knowledge of quantum mechanics needed.

For students coming from a physics background: 1 quarter or equivalent of graduate-level quantum mechanics.

Aimed at PhD students, but open to Masters students or suitably advanced/enthusiastic undergraduates

This course provides an introduction to the techniques and theory that underlie modern quantum computer science.  It will cover quantum complexity theory, quantum query complexity, the quantum circuit model as well as fundamental techniques such as the quantum Fourier transform, amplitude amplification, quantum error correction, linear-combinations of unitaries as well as their applications to cryptography and quantum simulation.