CSE 390s count towards general electives (not CSE electives). If a CSE 390 course does count towards CSE elective requirements it will be noted in the course description.

CSE 492 seminars are credit/no credit. CSE majors may count up to 2 credits of CSE 301, ENGR 321, and/or CSE 492 towards CSE senior electives.

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 and will be clearly articulated below.

CSE 493s count as core courses.


CSE 390 D: Discrete Math for Computer Science (for non-CSE majors)

  • Taught by: Stuart Reges
  • 4 credits
  • prerequisites: either CSE 123 or CSE 143 AND either MATH 126 or MATH 136.
  • MWF 11:30-12:20 Lecture + Thurs. quiz section

This course provides an introduction to the structures and proof techniques used in computer science. Topics include propositional logic (and set theory), predicate logic, basic number theory, methods of proof, mathematical induction, counting, discrete probability, binary relations, undirected and directed graphs.

CSE 390 F: Tackling Climate Change with Technology

  • Taught by: Travis McCoy
  • 3 credits, CR/NC
  • CS Students only, priority given to sophomore students

Climate change is one of the most complex and urgent issues of our time, threatening to transform our planet and our lives. In that vein, we are offering a brand-new seminar titled Tackling Climate Change with Technology in the fall.

In the course, you’ll explore how computer science can be harnessed to address the challenges that climate change presents. We will consider the ways that technology can be applied to understanding and predicting climate change, its mitigation, and adaptation efforts.

Please fill out this form if you want to enroll in the course.

CSE 390 R: Introduction to Research in CSE

  • Taught by: Leilani Battle
  • 2 credits, CR/NC
  • Intended for CSE undergraduates with little to no research experience

Are you interested in participating in research but you’re unsure of where to start? Consider taking CSE 390R! The purpose of the course is to give you exposure to computing research and to help you build baseline skills prior to seeking research positions within and outside the Allen School. You will get hands-on experience with common research responsibilities for undergraduate researchers and you will hear about exciting research topics and projects being led by Allen School faculty.

How do I register? Course registration requires an add code. You can apply for an add code here: https://forms.gle/ksKZNRt38KegBcGy5. Detailed instructions about the application process are provided in the form description.

Who should I contact about the course if I have questions? The add code application form shares useful details about the course in the form description, so please check that out first. If you still have questions, you can contact us at cse390r@cs.washington.edu.

CSE 490 A1: Big Ideas in AI

  • Taught by: Oren Etzioni
  • 2 credits
  • Prerequisites: CSE 473/573 or CSE 446/546, or equivalent

What is the nature of Intelligence? How can we build intelligent machines? What is the role for humans in an AI world? While neuroscience, philosophy, and psychology all provide insights into these questions, this course will focus on the Big Ideas drawn from the last 60+ years of AI research. We will seek to understand the foundations of machine learning (supervised, unsupervised, and self-supervised), state-space search, representation languages, the power of scale up, and other Big Ideas leading up to the new generation of models such as GPT-4.

We will read foundational papers, discuss them in depth, and write brief essays. The course will meet weekly; in-person attendance and vigorous participation are required. Please apply through the course application: HTTPS://BIT.LY/CSE490A1.

Disclaimer: this course is being offered for the second time. It’s very different from previous offerings by different instructors.

CSE 492 C: Navigating Early Career Challenges
  • Taught BY: Natalie Fetsch
  • 1 credit; CR/NC
  • Prerequisites: None, but primarily intended for students graduating in the next academic year

This course is intended for graduating seniors, but all are welcome. The goal is to prepare students to navigate nuanced situations specific to software-engineering industry careers, including emphasizing impact to set oneself up for a promotion, techniques to decrease onboarding time, finding resources to learn on teams without documentation, and having difficult conversations with managers such as lack of work-life balance or difficulties working with particular teammates. The discussions in this course will be based on not only my experiences, but the recurring themes I’ve seen from working with about 100 new grads and interns, as well as information from more senior mentors. Going into industry with techniques to navigate new situations contributes to short-term career success including earlier promotion and higher reviews, and long-term success, including staying in industry and finding a job where one can grow and pursue rewarding projects. Credit will be participation-based and the main course format will be short presentations with in-depth discussions of actual situations.

CSE 493E: Accessibility

  • Taught by: Jennifer Mankoff
  • 4 credits
  • Prerequisites: The only requirement for this class is that you are comfortable programming and picking up new languages and tools that you have not been exposed to before. You will have some control over this, however, basic web skills are likely to be useful. The primary programming project in this class is one you design yourself.

In this course we will focus on a combination of practical skills such as how to assess accessibility of documents, websites and apps and how to do disability based UX; advanced skills such as how to address accessibility in visualization, AR/VR and AI/ML; and forward looking topics such as intersectional concerns, accessible healthcare, and accessibility in disaster response. The largest project in the class will be an open ended opportunity to explore access technology in more depth. We will also cover disability justice and advocacy.

Please see last year’s course webpage for more information.

CSE 493 G1: Deep Learning

  • Taught by: Ali Farhadi
  • 4 credits
  • Prerequisites: Linear algebra (e.g. MATH 208) and Calculus (e.g. MATH 124, 125)

Deep Learning has become ubiquitous in our society, with applications in search, image understanding, apps, mapping, medicine, drones, and self-driving cars. Core to many of these applications are visual recognition tasks such as image classification, localization and detection and language understanding tasks like summarization, text generation and reasoning. Recent developments in neural network (aka “deep learning”) approaches have greatly advanced the performance of these state-of-the-art systems.

This course is a deep dive into the details of deep learning algorithms, architectures, tasks, metrics, with a focus on learning end-to-end models. We will begin by grounding deep learning advancements particularly for the task of image classification; later, we will generalize these ideas to many other tasks. During the 10-week course, students will learn to implement and train their own neural networks and gain a detailed understanding of cutting-edge research in deep learning. Additionally, the final assignment will give them the opportunity to train and apply multi-million parameter networks on real-world vision problems of their choice. Through multiple hands-on assignments and the final course project, students will acquire the toolset for setting up deep learning tasks and practical engineering tricks for training and fine-tuning deep neural networks.


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

  • Taught by: Kim Nguyen, Kasey Champion
  • 1 credit
  • Pre/co-requisite: CSE 332 or CSE 373

This seminar is targeted at students who have already completed 332 (or are taking it during Winter 2025) 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.

*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 or CSE 373 pre/co-req.

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

CSE 492 L: Alumni Career Experience Seminar

  • Taught by: Ed Lazowska & Dan Grossman
  • 1 credit
  • Prerequisites: None

The Paul G. Allen School Alumni Career Experience Seminar Series, CSE 492L, is a one-credit (CR/NC) seminar series, primarily targeted at upper-division CSE undergraduates, that brings CSE alumni and friends to campus to describe how to be effective in a startup, small company, large company, or less common environment. Our guests will discuss topics such as:

  • What do you need to know in order to succeed, that you don't learn in your classes or during an internship?
  • How do you position yourself to work on interesting projects?
  • In a large company, what strategies can make you influential, vs. a cog in a wheel?
  • What is life like in a startup?
  • If your goal is to start and grow your own company, where do you begin?
  • What are the pros and cons of less common career options, such as teaching high school computer science?
  • Why might you choose graduate school vs. tech industry employment after graduation?

Additional information can be found here

CSE 492: Program Management

  • Taught by: Ori Wolman
  • 1 credit
  • Prerequisites: None

Software developers often ask what the role or the project manager is, or why is a project manager crucial for the success of a project. During this seminar we will cover all the main aspects of the software project manager role, the essential tools and processes and multiple project management methodologies.

The seminar will consist of weekly discussions, real-world scenarios and hands-on learning activities that will help us understand the project management processes more clearly. Participants will be asked to spend approximately 1 hour a week preparing for class, reading through case studies, and performing hands-on activities.

The seminar is built around the following foundational goals:

  1. Tailored for Developers: We understand the unique challenges faced by software developers. Our seminar focuses on project management principles specifically relevant to software projects, ensuring you gain practical knowledge that directly impacts your work.
  2. Hands-On Learning: Dive into real-world scenarios, case studies, and interactive exercises. Learn by doing and apply project management techniques directly to your software projects.
  3. Comprehensive Curriculum:
    • Planning: Establish project objectives, define project scope, and create a project charter. Accurately estimate schedules and costs.
    • Resourcing: Assemble the project team, assign roles, and leverage individual skills effectively.
    • Tracking: Monitor progress, manage risks, and adapt to changing requirements
  4. Best Tools and Practices: Learn to use industry-standard project management tools, understand how these tools enhance collaboration, streamline workflows, and keep your projects on track.

CSE 492 R: CSE Group Research

  • Taught by: Leilani Battle
  • 1 credit
  • Prerequisites: CSE 390 R or at least one quarter of undergraduate research

This seminar is intended for students who are relatively new to research but are starting to explore a specific research project, either as part of a research lab or through the Allen School Guided Undergraduate Research Program. Students who take this seminar should either have taken CSE 390 R or should have done at least one quarter of undergraduate research (e.g., through CSE 499 credits with a faculty). If you are completely new to research, you can wait until the next offering of CSE 390 R (i.e., Autumn 2025).

Students should also be registered for at least 3 credits of independent research (CSE 499 or similar) during the quarter in which they take CSE 492 R since a lot of the course content will be applied to an ongoing research project.

Add code request form TBA.

CSE 492 T: Equitable and Inclusive Computer Science Technology

  • Taught by: Brett Wortzman
  • 2 credits
  • Prerequisites: Prior or current enrollment in CSE 122, CSE 143, CSE 163, or equivalent; or permission of instructor. Open to non-majors

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.

CSE 493 V: Virtual Reality Systems

  • Taught by: Douglas Lanman
  • 4 credits
  • Prerequisites: CSE 333; MATH 208. Recommended: CSE 455 or CSE 457

Modern virtual reality systems draw on the latest advances in optical fabrication, embedded computing, motion tracking, and real-time rendering. In this hands-on course, students will foster similar cross-disciplinary knowledge to build a fully functional head-mounted display. This overarching project spans hardware (optics, displays, electronics, and microcontrollers) and software (JavaScript, WebGL, and GLSL). Each assignment will build toward this larger goal. For example, in one assignment, students will learn to use an inertial measurement unit (IMU) to track the position of the headset. In another assignment, students will apply real-time computer graphics methods to correct lens distortions. Lectures will complement these engineering projects, diving into the history of AR/VR and relevant topics in computer graphics, signal processing, and human perception. Guest speakers will participate from leading AR/VR companies and academic institutions. This course is designed to be accessible to senior undergraduates and early MS/PhD students without requiring a hardware background. Attendance is limited to 40 students. Requirements include Linear Algebra (MATH 208) and Systems Programming (CSE 333). Students are also recommended to have completed either Vision (CSE 455) or Graphics (CSE 457) coursework. Familiarity with JavaScript will be helpful, but is not required.




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 208, 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 208 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 208 (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

4 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

4 credits; 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 492 E: 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 492 J: 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 T: Equitable and Inclusive Computer Science Pedagogy

Taught By: Brett Wortzman

2 credits, Senior Elective

Pre-requisite: concurrent enrollment in CSE 143, CSE 163, or equivalent; or permission of instructor

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 490: Data Center Systems (Cloud Computing) (453)

Taught by: T. Anderson

Credits 4, CSE Core Course or CSE Senior Elective or CE Systems Elective

Prerequisites: CSE 332, CSE 333. Recommended: CSE 451 or CSE 452.

Multi-tenant data centers and cloud computing are one of the fastest growing segments of the computer industry, with rapid adoption of new technology innovations that is changing almost every aspect of how computer systems are built and used. This course will be a cross- disciplinary investigation of the technologies underlying next generation data centers and some of the challenges needed to leverage those technologies. Topics include: hardware acceleration, low latency programmable networks, RDMA, virtualization, resource isolation, SLA management, disaggregation, storage technologies such as SSDs and NVM, and multi-data center resilience.

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

4 credits, CSE Core Course or 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 or CSE Senior Elective

Prerequisites: CSE 446 OR CSE 455

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 490 N: Neural Engineering

Taught by: R. Rao

3 credits, CSE Senior Elective

Prerequisites: Either BIOL 130, BIOL 162, or BIOL 220; and one of the following: MATH 208, 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 492E (to become CSE 480): Computer Ethics Seminar

Taught by: Dan Grossman and/or Jared Moore

2 credits, CSE Senior Elective (special exception 2 credits will be allowed towards senior electives for the ethics seminar only, usually only 1 credit of 492 or 2 credits of CSE 301 can be applied towards CSE senior electives)

Prerequisites: None

The Allen School faculty recently approved giving this seminar a permanent number, CSE 480, but until this is approved at university levels, we will continue to offer it as CSE 492E. We have offered it every quarter since Winter 2020 and will continue to offer it every quarter of 2021-2022. We have been filling at 25-30 students per quarter, but encourage everyone to take this seminar and will expand capacity this year, which is why the exact teaching plan among the two veteran instructors is still to-be-determined -- we both love this class. :)

So what is this class about? The exact topics evolve a bit from quarter to quarter, but the Spring 2021 website, and especially the syllabus, gives a good idea.You can look at previous quarters too. In all, this class is a mind-expanding 2-quarter overview on the ethics of the systems we build, systems that involve both technology and people.

From the website:

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.

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

Taught By: Kim Nguyen, K. Wang

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 2021) 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 490 A: Entrepreneurship: Company-Building (w/ 599A )

Taught by: Grossman, 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 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 2021) 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 L: Leadership Seminar Series

Taught By: Lazowska & Grossman

credits and core/elective information coming soon

Prerequisites information coming soon

Course information coming soon...



CSE 490: Web Browser Engineering

Taught By: Wilcox

4 credits; CSE Core Course

Prerequisites: CSE 332 and either CSE 333 or permission from the instructor.

We live in a world completely permeated by the internet and the web. It's time to think of the web browser as a critical piece of systems infrastructure, alongside compilers and operating systems. While industrial strength browsers are massive and complex systems with many features, the basic structure of a browser can be expressed in just a thousand lines of code. In this class we will study browser internals and build our own web browsers from scratch. By the end of the first week, you will have a working "browser" that does nothing more than download the webpage and print it as text to the console. From there, each week we will extend the browser with a new feature. By the end of the quarter, you will have your own graphical browser supporting text layout, CSS for styling, and JavaScript for building interactive pages. Weekly assignments will primarily involve implementing features in your browser. Previous experience with web technologies is not required. For more information about the course, see this overview document.

CSE 490: Wireless Communication

Taught By: J. Smith

4 credits; CSE Core Course

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 492 J: 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 490: Computational Fabrication

Taught by: Adriana Schulz

4 credits; CSE Core Course

Prerequisites: CSE 332, CSE 333, and MATH 308. CSE 457 or other experience with computer graphics is helpful but not required.

What makes a shape 3D printable? How do you design a 3D shape that you can 3D print? How do you measure how this design will perform before you print it---Will it be stable? Will it be durable? Will it be fast to print? How do you optimize your design to fit your needs? How do you handle discrete search spaces or multiple conflicting objectives?

This course introduces students to the new and exciting field of computational design and fabrication, which is currently laying the foundations on which the next generation of manufacturing workflows and systems will be built. The focus of this course is on computational design tools, but we will also spend some time discussing fabrication hardware and algorithms. Topics include concepts of hardware abstraction languages, geometry processing fundamentals, physics-based simulation, optimization techniques, and data-driven design methods.

Course work will involve class participation during lectures (Wednesday and Friday), three coding assignments (all in C++), and participation in 4 design and fabrication labs (Monday timeslot will be used for labs - each student will need to attend labs in this timeslot only half the weeks). There will be no exams.

CSE 490: Philosophy of AI

Taught by: Jared Moore

4 credits; CSE Elective Course

Prerequisites: TBD

What does it mean to think? How are computers different from people? How are they the same? This is a seminar class about asking deep questions about intelligence and exploring their far-reaching consequences. Through daily readings, discussions, and a course project, students will survey the history of approaches in artificial intelligence as well as related disciplines like neuroscience, philosophy of mind, and psychology. We will cover concepts such as alignment, connectionism, consciousness, causation, decidability, generalizability, information, learning, and symbolism.

To enroll, fill out an interest survey at https://tinyurl.com/UWCSE-PHIL-OF-AI

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

Taught by: Joe Redmon

4 credits; CSE Core Course

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 490 N: Neural Engineering

Taught by: ECE/BioE

3 credits, CSE Senior Elective

More information coming soon!

CSE 492 T: Equitable and Inclusive Computer Science Pedagogy

Taught by: Kevin Lin

2 credits, CSE Senior Elective

Pre-requisite: Prior or current enrollment in CSE 122, CSE 143, CSE 163, or equivalent; or permission of instructor. Open to non-majors.

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.

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

  • Taught by: Gottesman, Etzioni, Lazowska
  • Prerequisites: None; Offered jointly with CSE 599 A1
  • 4 Credits, CSE Senior Elective (*can also count as Computer Science or BSMS Capstone but NOT a Computer Engineering Capstone)

Interdisciplinary teams will develop a pitch, business plan, and product demo. In order to achieve an appropriate mix of student backgrounds and a manageable class size, a course application and permission of the instructors is required to obtain an entry code.

Admission is by application only. More information & a link to the application can be found here: TINYURL.COM/ENTRE-CSE-23WI

CSE 490 C: 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 492 J: Landing a Job in the Software Industry Career Seminar

  • Taught By: K. Nguyen, K. Champion
  • 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 Winter 2023) 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 L: Alumni Career Experience Seminar

  • Taught By: Lazowska & Grossman
  • 1 Credit, CSE Senior Elective
  • Prerequisites: None

The Paul G. Allen School Alumni Career Experience Seminar Series, CSE 492L, is a one-credit (CR/NC) seminar series, primarily targeted at upper-division CSE undergraduates, that brings CSE alumni and friends to campus to describe how to be effective in a startup, small company, large company, or less common environment. Our guests will discuss topics such as:

    • What do you need to know in order to succeed, that you don't learn in your classes or during an internship?
    • How do you position yourself to work on interesting projects?
    • In a large company, what strategies can make you influential, vs. a cog in a wheel?
    • What is life like in a startup?
    • If your goal is to start and grow your own company, where do you begin?
    • What are the pros and cons of less common career options, such as teaching high school computer science?
    • Why might you choose graduate school vs. tech industry employment after graduation?

Additional information can be found here.


CSE 490 A1: Philosophy of AI

  • Taught by: Jared Moore
  • 4 credits; CSE Elective Course
  • Prerequisites: TBD

What does it mean to think? How are computers different from people? How are they the same? This is a seminar class about asking deep questions about intelligence and exploring their far-reaching consequences. Through daily readings, discussions, and a course project, students will survey the history of approaches in artificial intelligence as well as related disciplines like neuroscience, philosophy of mind, and psychology. We will cover concepts such as alignment, connectionism, consciousness, causation, decidability, generalizability, information, learning, and symbolism.

CSE 493 G1: Deep Learning (linked to CSE 599 G1: Deep Learning)

  • Taught by: Ranjay Krishna
  • 4 credits, CSE Core Course or CSE Senior Elective
  • Prerequisites: Linear algebra (e.g. Math 208) and Calculus (e.g. Math 124, 125).

Deep Learning has become ubiquitous in our society, with applications in search, image understanding, apps, mapping, medicine, drones, and self-driving cars. Core to many of these applications are visual recognition tasks such as image classification, localization and detection and language understanding tasks like summarization, text generation and reasoning. Recent developments in neural network (aka “deep learning”) approaches have greatly advanced the performance of these state-of-the-art systems.

This course is a deep dive into the details of deep learning algorithms, architectures, tasks, metrics, with a focus on learning end-to-end models. We will begin by grounding deep learning advancements particularly for the task of image classification; later, we will generalize these ideas to many other tasks. During the 10-week course, students will learn to implement and train their own neural networks and gain a detailed understanding of cutting-edge research in deep learning. Additionally, the final assignment will give them the opportunity to train and apply multi-million parameter networks on real-world vision problems of their choice. Through multiple hands-on assignments and the final course project, students will acquire the toolset for setting up deep learning tasks and practical engineering tricks for training and fine-tuning deep neural networks.

CSE 493 Q: Quantum Computation

  • Taught by: Andrea Coladangelo
  • 4 credits, CSE Core Course
  • Prerequisites: CSE 312, MATH 208

The goal of the course is to rigorously understand the basics of the theory of quantum computation and to explore and understand as many fascinating applications/phenomena in quantum information as possible. Approximate outline:

  • Review of basic linear algebra.
  • Qubits, gates and measurements.
  • Interference - an application: Elitzur-Vaidman tester.
  • The uncertainty principle - an application: Quantum key distribution.
  • Entanglement and multi-qubit states and gates - an application: Bell's theorem and non-local games.
  • Quantum algorithms I: Deutsch's and Simon’s algorithm
  • Quantum algorithms II: Grover's algorithm.
  • Quantum programming (TBD)
  • Informal overview of other quantum algorithms: Shor's algorithm and Hamiltonian Simulation.

Prerequisites: students should have taken at least one linear algebra (MATH 208) and one probability class (e.g. CSE 312--more of these are helpful, but I will review what's strictly necessary at the start), and preferably also one discrete math class (CSE 311).

CSE 493X: Web Browser Engineering

  • Taught By: James Wilcox
  • 4 credits; CSE Core Course
  • Prerequisites: CSE 332 and either CSE 333 or permission from the instructor.

We live in a world completely permeated by the internet and the web. It's time to think of the web browser as a critical piece of systems infrastructure, alongside compilers and operating systems. While industrial strength browsers are massive and complex systems with many features, the basic structure of a browser can be expressed in just a thousand lines of code. In this class we will study browser internals and build our own web browsers from scratch. By the end of the first week, you will have a working "browser" that does nothing more than download the webpage and print it as text to the console. From there, each week we will extend the browser with a new feature. By the end of the quarter, you will have your own graphical browser supporting text layout, CSS for styling, and JavaScript for building interactive pages. Weekly assignments will primarily involve implementing features in your browser. Previous experience with web technologies is not required. For more information about the course, see this overview document.

CSE 493 S: Advanced Machine Learning

  • Taught by: Ludwig Schmidt
  • 4 credits; CSE Core Course
  • Prerequisites: CSE 446/546

The goal of this class is to lay the foundations for graduate research in machine learning, both on the theoretical and empirical side. We will cover fundamentals of generalization theory such as Rademacher complexity and core results in optimization with a focus on first-order methods, building up to widely used variants of stochastic gradient descent. On the empirical side, we will focus on recent advances leveraging large models and datasets, covering both multimodal models (CLIP) and language models (GPT). We will pay particular attention to the techniques behind models such as ChatGPT and the experimental methodology behind their development (datasets, benchmarks, and scaling trends).

CSE 493: Wireless Communication

  • Taught By: Joshua Smith
  • 4 credits; CSE Core Course
  • 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 493V: Virtual-Reality Systems

  • Taught by: Douglas Lanman
  • 4 credits; CSE Core Course
  • Prerequisite: CSE 333; MATH 308. Recommended: CSE 455 or CSE 457

Modern virtual reality systems draw on the latest advances in optical fabrication, embedded computing, motion tracking, and real-time rendering. In this hands-on course, students will foster similar cross-disciplinary knowledge to build a fully functional head-mounted display. This overarching project spans hardware (optics, displays, electronics, and microcontrollers) and software (JavaScript, WebGL, and GLSL). Each assignment will build toward this larger goal. For example, in one assignment, students will learn to use an inertial measurement unit (IMU) to track the position of the headset. In another assignment, students will apply real-time computer graphics methods to correct lens distortions. Lectures will complement these engineering projects, diving into the history of AR/VR and relevant topics in computer graphics, signal processing, and human perception. Guest speakers will participate from leading AR/VR companies and academic institutions. This course is designed to be accessible to senior undergraduates and early MS/PhD students without requiring a hardware background. Attendance is limited to 40 students. Requirements include Linear Algebra (MATH 308) and Systems Programming (CSE 333). Students are also recommended to have completed either Vision (CSE 455) or Graphics (CSE 457) coursework. Familiarity with JavaScript will be helpful, but is not required.

CSE 492 C: Navigating Early-Career Challenges

  • Taught By: Natalie Fetsch
  • 1 credit, Senior Elective
  • Prerequisites: None

This course is intended for graduating seniors, but all are welcome. The goal is to prepare students to navigate nuanced situations specific to software-engineering industry careers, including emphasizing impact to set oneself up for a promotion, techniques to decrease onboarding time, finding resources to learn on teams without documentation, and having difficult conversations with managers such as lack of work-life balance or difficulties working with particular teammates. The discussions in this course will be based on not only my experiences, but the recurring themes I’ve seen from working with about 100 new grads and interns, as well as information from more senior mentors. Going into industry with techniques to navigate new situations contributes to short-term career success including earlier promotion and higher reviews, and long-term success, including staying in industry and finding a job where one can grow and pursue rewarding projects. Credit will be participation-based and the main course format will be short presentations with in-depth discussions of actual situations.

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

  • Taught By: Kim Nguyen, Kasey Champion
  • 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 Winter 2023) 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.

*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 R: Undergrad Research in CSE

  • Taught By: Maya Cakmak
  • 1 credit, Senior Elective
  • Prerequisites: None

This class is intended for Allen School undergraduates who are getting involved in research for the first time, either joining a research lab or as part of the guided undergraduate research program. Students in this class will gain general information about research in CSE, practice basic skills that will help them succeed in undergraduate research.

CSE 492: Deconstructing Cultural Norms in Computer Science

  • Taught by: Mara Kirdani-Ryan
  • 1 credit, Senior Elective
  • Prerequisites: None

Seminar on career and cultural norms within computer science learning spaces, exploring how these norms are reinforced and replicated, and the systemic ramifications of those norms. This course looks to help students explore their identity, how it relates to the field’s cultural norms, and how to respond in ways that may counter prevailing norms and narratives. Students will be lovingly asked to reflect on their position within computer science learning spaces and society broadly in order to find practices that sustain positive cultural change.


CSE 492 C: Navigating Early Career Challenges

  • Taught by: Natalie Fetsch
  • 1 credit; Cr/NC
  • Prerequisites: None, but primarily intended for students graduating in the next academic year.

This course is intended for graduating seniors, but all are welcome. The goal is to prepare students to navigate nuanced situations specific to software-engineering industry careers, including emphasizing impact to set oneself up for a promotion, techniques to decrease onboarding time, finding resources to learn on teams without documentation, and having difficult conversations with managers such as lack of work-life balance or difficulties working with particular teammates. The discussions in this course will be based on not only my experiences, but the recurring themes I’ve seen from working with about 100 new grads and interns, as well as information from more senior mentors. Going into industry with techniques to navigate new situations contributes to short-term career success including earlier promotion and higher reviews, and long-term success, including staying in industry and finding a job where one can grow and pursue rewarding projects. Credit will be participation-based and the main course format will be short presentations with in-depth discussions of actual situations.

CSE 490 A: Software Entrepreneurship

Offered by Foster Business School. Course description can be found here. Please contact Foster for registration information.

CSE 490 N: Neural Engineering

  • Taught by: Raj Rao
  • 3 credits; CSE Elective Course
  • Prerequisites: Either BIOL 130, BIOL 162, or BIOL 220; and one of the following: MATH 208, 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 493: Accessibility

  • Taught by: Jennifer Mankoff
  • 4 credits
  • Prerequisites: The only requirement for this class is that you are comfortable programming and picking up new languages and tools that you have not been exposed to before. You will have some control over this, however, basic web skills are likely to be useful. The primary programming project in this class is one you design yourself.

In this course we will focus on a combination of practical skills such as how to assess accessibility of documents, websites and apps and how to do disability based UX; advanced skills such as how to address accessibility in visualization, AR/VR and AI/ML; and forward looking topics such as intersectional concerns, accessible healthcare, and accessibility in disaster response. The largest project in the class will be an open ended opportunity to explore access technology in more depth. We will also cover disability justice and advocacy.

Please see the course webpage for more information.

CSE 493H: Computational Design & Fabrication

  • Taught By: Adriana Schulz
  • 4 credits
  • Prerequisites: CSE 332, CSE 333, MATH 208; CSE 457 or other experience with computer graphics helpful but not required.

What makes a shape 3D printable? How do you design a 3D shape that you can 3D print? How do you measure how this design will perform before you print it---Will it be stable? Will it be durable? Will it be fast to print? How do you optimize your design to fit your needs? How do you handle discrete search spaces or multiple conflicting objectives?

This course introduces students to the new and exciting field of computational design and fabrication, which is currently laying the foundations on which the next generation of manufacturing workflows and systems will be built. The focus of this course is the algorithms and mathematical fundamentals for supporting computational design. The majority of the course will be around computational techniques, however we will also discuss fabrication hardware and workflow. Students are not expected to have any experience with fabrication but we will require a mathematical and computer science background (such as linear algebra, geometry, and algorithmic analysis).

Topics include concepts of geometry processing fundamentals, hardware abstraction languages, physics-based simulation, optimization techniques, and data-driven 3D generative modeling. Course work will involve class participation during lectures (Monday and Wednesday), three coding assignments (all in Python), and participation in 4 design and fabrication labs (Friday timeslot will be used for labs - each student will need to attend labs in this timeslot only half the weeks). There will be no exams.

CSE 493 G: Deep Learning (linked to CSE 599 G1: Deep Learning)

  • Taught by: Ali Farhadi
  • 4 credits
  • Prerequisites: Linear algebra (e.g. Math 208) and Calculus (e.g. Math 124, 125).

Deep Learning has become ubiquitous in our society, with applications in search, image understanding, apps, mapping, medicine, drones, and self-driving cars. Core to many of these applications are visual recognition tasks such as image classification, localization and detection and language understanding tasks like summarization, text generation and reasoning. Recent developments in neural network (aka “deep learning”) approaches have greatly advanced the performance of these state-of-the-art systems.

This course is a deep dive into the details of deep learning algorithms, architectures, tasks, metrics, with a focus on learning end-to-end models. We will begin by grounding deep learning advancements particularly for the task of image classification; later, we will generalize these ideas to many other tasks. During the 10-week course, students will learn to implement and train their own neural networks and gain a detailed understanding of cutting-edge research in deep learning. Additionally, the final assignment will give them the opportunity to train and apply multi-million parameter networks on real-world vision problems of their choice. Through multiple hands-on assignments and the final course project, students will acquire the toolset for setting up deep learning tasks and practical engineering tricks for training and fine-tuning deep neural networks.


CSE 490: Big Ideas in AI
  • Taught by: Oren Etzioni
  • 2 credits
  • Prerequisites: CSE 446, CSE 447, or CSE 473

What is the nature of Intelligence? How can we build intelligence machines? What is the role for humans in an AI world? While neuroscience, philosophy, and psychology all provide insights into these questions, this course will focus on the Big Ideas based the last 60+ years of AI research. We will seek to understand the foundations of machine learning (supervised, unsupervised, and self-supervised), state-space search, representation languages, the power of scale up, and other Big Ideas leading up to the new generation of models such as GPT-4.

We will read foundational papers, discuss them in depth, and write brief essays. The course will meet weekly ; in-person attendance and vigorous participation are required. Please apply through the website.

    CSE 492 J: Landing a Job in the Software Industry Career Seminar
  • Taught By: Kim Nguyen, Kasey Champion
  • 1 credit
  • Pre/co-requisite: CSE 332
  • This seminar is targeted at students who have already completed 332 (or are taking it during Winter 2024) 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.

    *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

    492 L - Alumni Career Experience Seminar
  • Taught by: Ed Lazowska & Dan Grossman
  • 1 credit
  • Prerequisites: None
  • The Paul G. Allen School Alumni Career Experience Seminar Series, CSE 492L, is a one-credit (CR/NC) seminar series, primarily targeted at upper-division CSE undergraduates, that brings CSE alumni and friends to campus to describe how to be effective in a startup, small company, large company, or less common environment. Our guests will discuss topics such as:

      • What do you need to know in order to succeed, that you don't learn in your classes or during an internship?
      • How do you position yourself to work on interesting projects?
      • In a large company, what strategies can make you influential, vs. a cog in a wheel?
      • What is life like in a startup?
      • If your goal is to start and grow your own company, where do you begin?
      • What are the pros and cons of less common career options, such as teaching high school computer science?
      • Why might you choose graduate school vs. tech industry employment after graduation?

    Additional information can be found here.

CSE 492 C: Navigating Early Career Challenges
  • Taught BY: Natalie Fetsch
  • 1 credit; CR/NC
  • Prerequisites: None, but primarily intended for students graduating in the next academic year

This course is intended for graduating seniors, but all are welcome. The goal is to prepare students to navigate nuanced situations specific to software-engineering industry careers, including emphasizing impact to set oneself up for a promotion, techniques to decrease onboarding time, finding resources to learn on teams without documentation, and having difficult conversations with managers such as lack of work-life balance or difficulties working with particular teammates. The discussions in this course will be based on not only my experiences, but the recurring themes I’ve seen from working with about 100 new grads and interns, as well as information from more senior mentors. Going into industry with techniques to navigate new situations contributes to short-term career success including earlier promotion and higher reviews, and long-term success, including staying in industry and finding a job where one can grow and pursue rewarding projects. Credit will be participation-based and the main course format will be short presentations with in-depth discussions of actual situations.

CSE 492 R: CSE Group Research
  • Taught by: Maya Cakmak
  • Prerequisites: CSE 390R or at least one quarter of undergrad research

This seminar is intended for students who are relatively new to research but are starting to explore a specific research project, either as part of a research lab or through the Allen School Guided Undergraduate Research Program. Students who take this seminar should either have taken CSE 390 R or should have done at least one quarter of undergraduate research (e.g., through CSE 499 credits with a faculty). If you are completely new to research, you can wait until the next offering of CSE 390 R (i.e., Autumn 2024).

Students should also be registered for at least 3 credits of independent research (CSE 499 or similar) during the quarter in which they take CSE 492 R since a lot of the course content will be applied to an ongoing research project.

The add code request form can be found here.

CSE 493 G1: Deep Learning (linked to CSE 599 G1: Deep Learning)

  • Taught by: Ranjay Krishna
  • 4 credits, CSE Core Course or CSE Senior Elective
  • Prerequisites: Linear algebra (e.g. Math 208) and Calculus (e.g. Math 124, 125).

Deep Learning has become ubiquitous in our society, with applications in search, image understanding, apps, mapping, medicine, drones, and self-driving cars. Core to many of these applications are visual recognition tasks such as image classification, localization and detection and language understanding tasks like summarization, text generation and reasoning. Recent developments in neural network (aka “deep learning”) approaches have greatly advanced the performance of these state-of-the-art systems.

This course is a deep dive into the details of deep learning algorithms, architectures, tasks, metrics, with a focus on learning end-to-end models. We will begin by grounding deep learning advancements particularly for the task of image classification; later, we will generalize these ideas to many other tasks. During the 10-week course, students will learn to implement and train their own neural networks and gain a detailed understanding of cutting-edge research in deep learning. Additionally, the final assignment will give them the opportunity to train and apply multi-million parameter networks on real-world vision problems of their choice. Through multiple hands-on assignments and the final course project, students will acquire the toolset for setting up deep learning tasks and practical engineering tricks for training and fine-tuning deep neural networks.

CSE 493 - Molecular Computation

  • Taught by: Chris Thachuk
  • 4 credits
  • Prerequisites: None

We are surrounded by "smart" systems. Smart appliances, smart watches and smart autonomous cars are no longer distant research goals; they entwine with the fabric of everyday life. Yet, compared with biology, our ability for manipulation of structure and dynamics at the nanoscale is found wanting. How does one program computation that can operate inside a cell, or that has a natural interface with chemical and biological systems? In this self-contained introduction to molecular computation we will explore how “smart” molecules can be designed and programmed, using ideas that span computer science, to not only store and process information, but to self-assemble into complex structures with nanometer precision, to sense (bio-)chemical signals from their environment, perform robust computation, and in turn actuate a physical response.

This is a hands-on course where students will not only learn about the theory of computing with molecules, and DNA nanotechnology in particular, but will also design, build and experimentally characterize state-of-the-art molecular circuits and other systems in a research wet lab during weekly sections. This course is self-contained and assumes no prior knowledge of biology, chemistry, nor prior experience in a wet lab. All majors interested in learning about and building programmable matter at the nanoscale are welcome.


    CSE 492 J: Landing a Job in the Software Industry Career Seminar
  • Taught By: Kim Nguyen, Kasey Champion
  • 1 credit
  • Pre/co-requisite: CSE 332 or CSE 373
  • This seminar is targeted at students who have already completed 332 (or are taking it during Spring 2024) 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.

    *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 or CSE 373 pre/co-req.

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

    CSE 492 M: Madrona/MVL Startup Seminar
  • Taught By: Kurtis Heimerl
  • 1 credit
  • 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.

    Feel free to reach out to Kurtis Heimerl (kheimerl@cs.washington.edu) with any questions you might have.

    CSE 492 P1: Patterns for Career Success
  • Taught by: Phillip Su
  • 1 credit
  • Pre/co-requisites: CSE 332
  • As with the science of computing, careers in computing also have models, patterns, and anti-patterns. This interactive seminar, led by a 25-year industry veteran from OpenAI, Meta, and Microsoft, covers insights across a gamut of topics to accelerate your career. Discussions include topics like how to choose an employer, when to ideally switch teams or companies, how to negotiate salaries, how to lead teams and projects, and how to continually grow throughout your career.

    This pass/fail seminar will include around 15 mins of weekly assignments, and is intended primarily for seniors. Join us to learn tips for growing quickly toward your goals while avoiding common pitfalls.

CSE 492 R: CSE Group Research
  • Taught by: Maya Cakmak
  • Prerequisites: CSE 390R or at least one quarter of undergrad research

This seminar is intended for students who are relatively new to research but are starting to explore a specific research project, either as part of a research lab or through the Allen School Guided Undergraduate Research Program. Students who take this seminar should either have taken CSE 390 R or should have done at least one quarter of undergraduate research (e.g., through CSE 499 credits with a faculty). If you are completely new to research, you can wait until the next offering of CSE 390 R (i.e., Autumn 2024).

Students should also be registered for at least 3 credits of independent research (CSE 499 or similar) during the quarter in which they take CSE 492 R since a lot of the course content will be applied to an ongoing research project.

CSE 493 Q: Quantum Computation

  • Taught by: Andrea Coladangelo
  • 4 credits
  • Prerequisites: CSE 312, Math 208, and preferably 311

The goal of the course is to rigorously understand the basics of the theory of quantum computation and to explore and understand as many fascinating applications/phenomena in quantum information as possible. Approximate outline:

  • Review of basic linear algebra.
  • Qubits, gates and measurements.
  • Interference - an application: Elitzur-Vaidman tester.
  • The uncertainty principle - an application: Quantum key distribution.
  • Entanglement and multi-qubit states and gates - an application: Bell's theorem and non-local games.
  • Quantum algorithms I: Deutsch's and Simon’s algorithm
  • Quantum algorithms II: Grover's algorithm.
  • Quantum programming (TBD)
  • Informal overview of other quantum algorithms: Shor's algorithm and Hamiltonian Simulation.

CSE 493 W: Wireless Communication

  • Taught by: Joshua Smith
  • 4 credits
  • 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 (e.g. decoding as inference, learning as compression, etc).

CSE 493 X: Web Browser Engineering

  • Taught by: Glbert Bernstein
  • 4 credits
  • Prerequisites: CSE 332 and either CSE 333 or permission from the instructor

We live in a world completely permeated by the internet and the web. It's time to think of the web browser as a critical piece of systems infrastructure, alongside compilers and operating systems. While industrial strength browsers are massive and complex systems with many features, the basic structure of a browser can be expressed in just a thousand lines of code. In this class we will study browser internals and build our own web browsers from scratch. By the end of the first week, you will have a working "browser" that does nothing more than download the webpage and print it as text to the console. From there, each week we will extend the browser with a new feature. By the end of the quarter, you will have your own graphical browser supporting text layout, CSS for styling, and JavaScript for building interactive pages. Weekly assignments will primarily involve implementing features in your browser. Previous experience with web technologies is not required. For more information about the course, see this overview document.

CSE 493 F: Prototyping Interactive Systems with AI

  • Taught by: Jon Froehlich
  • 4 credits
  • Prerequisites: 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. You will design and implement the entire information pipeline—from custom input controllers to responsive, interactive graphics. Throughout the course, we will use AI to help us brainstorm ideas, generate graphics, sounds, and other assets, and to actually help implement prototypes.

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/. The course project will invite students 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.

While the course project 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 prototyping HCI systems 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.