Skip to content

Undergraduate Education

Courses

Jump To A Section

CSE Core Courses

(*) Required for Computer Science therefore does not count as elective credit for Computer Science
(**) Required for Computer Engineering; therefore does not count toward elective credit for Computer Engineering

Accessible Accordion

CSE 331 Software Design & Implementation (4) (*)
CSE 333 Systems Programming (4)
CSE 340 Interaction Programming (4)
CSE 341 Programming Languages (4)
CSE 344 Intro to Data Management (4)

*(If CSE 414 is taken before a student is admitted to the Allen School, they may request 414 sub as a 300 level core course. Students should not take both 344 and 414.)

CSE/EE 371 Design of Digital Circuits and Systems (5) (**)
STAT 391 Probability & Statistics for Computer Science (4)
CSE 401 Intro to Compiler Construction (4)
CSE 402 Design and Implementation of Domain-Specific Languages (4)
CSE 403 Software Engineering (4)
CSE 421 Intro to Analysis of Algorithms (3)
CSE 422 Toolkit for Modern Algorithms (3)
CSE 426 Cryptography (3)
CSE 427 Computational Biology (3)
CSE 431 Intro to Complexity (3)

CSE 434 Quantum Computation (4)

CSE 440 Intro to HCI (5)
CSE 442 Data Visualization (4)
CSE 444 Database Systems Internals (4)
CSE 446 Machine Learning (4)
CSE 447 Natural Language Processing (4)
CSE 451 Intro to Operating Systems (4)
CSE 452 Distributed Systems (4)
CSE 453 Data Center Systems (4)
CSE 455 Computer Vision (4)
CSE 457 Computer Graphics (4)
CSE 458 Computer Animation (5)
CSE 461 Computer Networks (4)

CSE 462 Wireless Communications (4)

CSE/EE 469 Computer Architecture I (5)
CSE/EE 470 Computer Architecture II (4)
CSE 473 Artificial Intelligence (3)
CSE/EE 474 Introduction to Embedded Systems (4)
CSE 478 Autonomous Robotics (4)
CSE 484 Computer Security (4)
CSE 486 Synthetic Biology (3)

CSE 493 Special Topics Courses (4)

(*) Required for Computer Science therefore does not count as elective credit for Computer Science

(**) Required for Computer Engineering; therefore does not count toward elective credit for Computer Engineering

Computer Science Natural Science Requirement

To complete the Computer Science degree, students must complete 5 credits from the following list:

  • Physics 121/141
  • Chemistry 142, 143 or 145
  • Biology 180
  • Biology 162 (AP credit) 
  • Physics 116 *and* Physics 119 – generally from AP credit. If you have not taken science, PHYS 121 is recommended as Phys 116 is the 3rd course in a series.
  • Advanced coursework in these areas or other highly relevant may be petitioned

These were the requirements starting in Fall 2022. For students under the older requirements please see the CE Science Requirement list, which includes all the courses that used to count for the CS science requirement when 10 credits were still required.

Back to top


Computer Engineering Science Requirement

Courses that meet the Allen School’s Computer Engineering science requirement include:

Chemistry 142/145
Biology 180

And the following list of courses.

Check with a CSE adviser about courses that are not included in this list, but which require Physics 121, Chemistry 142/145, Biology 180 as a pre-requisite.

Accessible Accordion

BIOL 162 (5 credits from Biology AP)

BIOL 180
BIOL 200
BIOL 220
Must take one of the three above as a prerequisite to the following (when required)
BIOL 325, 333, 340, 354, 355, 356, 401, 402, 403, 405, 407, 408, 409, 411, 412, 413, 414, 415, 425, 426, 427, 433, 434, 435, 437, 440, 441, 442, 443, 444, 446, 452, 454, 455, 459, 462, 463, 464, 471, 472, 473, 474, 475, 476, 477, 479, 480.

CHEM 142, 143, 144, 145, 152, 155, 162, 165, 220, 221, 223, 224, 237, 238, 239, 241, 242, 312, 317, 321, 335, 336, 337, 346, 347, other graded 400 level courses by petition.

PHYS 116/119, (but no credit for both 116 and 123),123, 224, 225, 227, 228, 231, 232, 311, 315, 321, 322, 323, 324, 325, 328, 331, 334, 335, 407, 408, 421, 422, 423, 424, 425, 426, 434, 460.

ESS 212, 213, 311, 313, 403, 412, 413, 414, 415, 424, 431, 437, 438, 456, 458, 463, 464, 466, 467, 471.

ASTR 301, 321, 322, 323, 423, 480, 480.

ATM S: 301, 321, 358, 370, 380, 451, 452, 458, 460, 480.


Elective Courses

A CSE elective is a course that has a significant overlap with computer science and engineering, either because it focuses on a significant application or use of computers, it focuses on an underlying technology for computers or communication, or it develops a conceptual or formal framework useful in doing computer science and engineering.

Courses not on this list may be applied toward CSE (senior) electives if approved by the CSE Undergraduate Faculty Advisor. If you would like to petition to have a class count toward (senior) electives, please contact the undergrad advisers.

Note: Computer Engineering majors may not use the same course to satisfy Math/Science Electives and Computer Engineering or Free Electives

Accessible Accordion

369 Intro to Digital Design (3)
Any course on the CSE Core Course List
Any graded 400-level majors course (includes 498 & 496 but not 499))
480 Computer Ethics (2)
Up to 2 credits max of CSE 301, ENGR 321, General Studies 350 and/or CSE 492.

There are some non-major courses that a student takes before they are admitted into the program that can apply to the CS or CE degree. We encourage students applying to the Allen School to consider waiting to take the major’s version of courses as these non-major courses are intended for students not pursuing an Allen School degree. Please see the non-majors page for how these courses may overlap if you are considering them. Note that this information can change as courses evolve so it’s best to check back regularly.

401 Vector Calculus & Complex Variables (4)
402 Introduction to Dynamical Systems & Chaos (4)
403 Methods for Partial Differential Equations (4)
422 Introduction to Mathematical Biology (3)
423 Mathematical Biology: Stochastic Models (3)
483 High-Performance Scientific Computing (5)

485 Computational Bioengineering (4)

460 Digital Sound (5)
461-463 Digital Sound Synthesis, Digital Sound Processing, Advanced Digital Sound Synthesis and Processing (5, 5, 5). Offered jointly with Music 401-403.

331, 332 Devices and Circuits I & II (5, 5)
341 Discrete Time Linear Systems (5)
400-level Any graded 400-level majors course with the exception of: EE 406, 452-457, 471, 472, 478, and 491.

321 Engineering Internship Education (one credit may count per quarter, up to two credits total)

360 Principles of GIS Mapping (5)
460 GIS Analysis (5)
463 GIS Workshop (5)
465 GIS Database & Programming (5)

444 Value-Sensitive Design (5) (Effective Autumn 2018, this course will change to INFO 464)
446 Advanced Search Engine Systems (5)
454 Information Policy: Domestic and Global (5)

472 Introduction to Computational Linguistics (5)

307 Differential Equations (3) – NOTE: Once Math 307 becomes 207, it will no longer be a CSE senior elective course.
318 Advanced Linear Algebra Tools and Applications (3)
334, 335, 336 Accelerated Advanced Calculus (5,5,5)
402, 403, 404 Introduction to Modern Algebra (3, 3, 3)
407 Linear Optimization (3)
408 Nonlinear Optimization (3)
409 Discrete Optimization (3)
414, 415 Number Theory (3,3)
424, 425, 426 Fundamental Concepts of Analysis (3,3,3)
435, 436 Introduction to Dynamical Systems (3,3)
441 Topology (3)
442 Differential Geometry (3)
461, 462 Combinational Theory (3,3)
464, 465, 466 Numerical Analysis I, II, III (3, 3, 3)

400 Computer Music Seminar (3, max 9)

341, 342 Introduction to Probability and Statistical Inference I, II (4,4)
421 Introduction to Applied Statistics and Experimental Design (4)
391 Probability and Statistics for Computer Science (also counts as CSE core) (4)

395, 396 Probability II & III (3,3)
491 Introduction to Stochastic Processes (3)

Back to top


Computer Engineering Systems Electives

Accessible Accordion

CSE 401 Introduction to Compiler Construction (4)
– Prerequisites: CSE 332, CSE 351
CSE 402 Design and Implementation of Domain-Specific Languages (4)
CSE 403 Software Engineering (4)
– Prerequisites: CSE 331, CSE 332
– Recommended: project experience such as CSE 331
CSE 444 Database Systems Internals (4)
– Prerequisites: CSE 332, CSE 344
– Recommended: CSE 331 or CSE 333 or substantial software-project experience
CSE 451 Introduction to Operating Systems (4)
– Prerequisites: CSE 332, CSE 333, CSE 351
CSE 452 Introduction to Distributed Systems (4)
– Prerequisites: CSE 332, CSE 333, CSE 451
CSE 453 Data Center Systems (4)
– Prerequisites: CSE 332 and 333; recommended: CSE 451 or 452
CSE 461 Introduction to Computer-Communication Networks (4)
– Prerequisites: CSE 332, CSE 333
CSE/EE 474 Introduction to Embedded Systems (4) OR CSE 466 Software for Embedded Systems (4) *
– Prerequisites: CSE 333, CSE 352
CSE 467 Advanced Digital Design (4)
– Prerequisites: CSE 332, CSE 352
CSE/EE 469 Computer Architecture I (5)
– Prerequisites: CSE 369, CSE 143
CSE/EE 470 Computer Architecture II (4) OR CSE 471 Computer Design and Organization (4) **
– CSE 470 Prerequisites: CSE 351, CSE 469
CSE 478 Autonomous Robots (4)
CSE 484 Computer Security (4)
– Prerequisites: CSE 332, CSE 351
EE 476 Digital Integrated Circuit Design (5)
EE 477 VLSI II (5)

Back to top


Special Topics Courses

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

Autumn 2024 CSE Special Topics and Seminar Courses

Accessible Accordion

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.

Winter 2024 CSE Special Topics and Seminar Courses

Accessible Accordion

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:

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

Please fill out this interest form: HTTPS://BIT.LY/CSE492T-WIN25.

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.

Spring 2025 CSE Special Topics and Seminar Courses

Accessible Accordion

TBD

TBD

TBD

Back to top


Computing & Society

Accessible Accordion

Please refer to the Teaching Schedule for information on when these courses will be offered. Undergrads can request a spot in 500-level courses by completing the petition here.

The following courses cover important topics on the impact of computing on society and can be used to fulfill UW degree requirements.

Information School

  • INFO Schedule of course offerings
  • MLIS schedule of course offerings.
    • MLIS courses will open up to students outside of the iSchool beginning Registration Period 3. If there is space available, please email mlis@uw.edu for an add code.
  • LIS 534 Indigenous Systems of Knowledge (3)
  • LIS 555 Data Sovereignty and Indigenous Knowledge Systems: Sovereign Rights, Protections, and Protocols (3)
  • LIS 561 Storytelling in a Digital Age (3) (online only)
  • INFO 498/598 Special Topics Courses
    • These courses change quarterly. Please check the full list here.

Additional UW Courses

  • SOC 225 Data and Society (required for the CS Data Science Option)
  • ANTH 303 Technologies of Health
  • ANTH 473 Anthropology of Science And Technology
  • BIOL 270 Data Reasoning in a Digital World
  • HSTAA 317 History of the Digital Age
  • PHG 303 Direct-To-Consumer Genetic Testing: Uses and Issues
  • TXTDS 403 Archives, Data and Databases
  • TXTDS 404 Texts, Publics, and Publication

Back to top