Skip to content

Undergraduate Education

Non-Major Options

Computer science and engineering increasingly shapes the way we live and interact with the world around us. Computing has transformed nearly every industry, from law and government, to education and health care, to travel and entertainment. It also has become an essential tool for researchers in every scientific and business discipline, as we have entered an age of data-driven discovery.

CSE courses serve as an entry point for students across the campus to explore the world of computing. We offer courses designed to enable all students, regardless of major, to develop computational thinking and hands-on programming skills. Some students discover after taking one of our classes that CSE is the right path for them. Others apply their new knowledge and skills to a field outside of CSE. No matter what path you choose, taking a CSE course—or courses!—can enrich your educational experience and enhance your career prospects.

Jump To A Section


Non-Major Courses

The Allen School has an extensive set of upper-division course offerings for students NOT majoring in Computer Science or Computer Engineering degree programs. These courses are open to all matriculated students at UW who meet the course prerequisites. Non-matriculated students may enroll on a space-available basis (see below). Please check our catalog for a general description of these courses. The links below take you directly to the CSE course webs rather than the course catalog.

The descriptions below do NOT describe our lower-division (100-level) courses.  Those courses are described on our Introductory course page, which we STRONGLY recommend that you visit.  Our upper-division courses have lower-division courses as prerequisites.

Upper-Division Non-Major Courses

These courses are specifically designed for students in other majors.  While their content overlaps with courses for CSE majors as described below, they aim to have fewer prerequisites, are often broader in scope, and should complement the courses that students take in other majors.  

If you are interested in taking an upper-division non-major course that is full, please note that we will no longer be maintaining overload lists for these courses. Sign up for NotifyUW to receive alerts when space becomes available in the class. We will try to adjust class sizes to meet demand as best we can.  Graduate students are generally only allowed to register during Period II registration unless they are in a data science major that requires these courses.

Accessible Accordion

Please note that if you are enrolled in another major at UW (or you are a pre-major) but plan on applying to the CSE program in the future, you should speak with a CSE academic adviser before taking a non-major course.

CSE 373: Data Structures and Algorithms (typically offered every quarter, including Summer)
CSE 374: Intermediate Programming Concepts and Tools (typically offered about twice per year)
CSE 410: Computer Systems (typically offered alternating years)
CSE 412: Introduction to Data Visualization (typically offered once or twice per year)
CSE 413: Programming Languages & Their Implementation (typically offered alternating years)
CSE 414: Introduction to Database Systems (typically offered every quarter)
CSE 415: Introduction to Artificial Intelligence (typically offered twice per year)
CSE 416/STAT 416: Introduction to Machine Learning (typically offered twice per year, once by Statistics and once by the Allen School)
CSE 417: Algorithms and Computational Complexity (typically offered twice per year)

While there is not an exact correspondence between majors and non-majors courses, if you are interested in a CSE major course but are not planning to be a CSE major, we have provided a list of suggested alternatives.

CSE Major Coures & Suggested Alternatives
 CSE Majors-Only Course  Alternative Courses to Consider How a course applies to the CS or CE Degree
 CSE 311&312: Foundations of Computing I and II  Some of the concepts are covered in: Math 300Phil 120Stat 390 or 391, and E E 271  
 CSE 332: Data Structures & Parallelism  CSE 373 CSE 373: Students will be required to take CSE 332 (and will not receive credit) even if they have CSE 373 prior to admission into the Allen School.
 CSE 333: Systems Programming  CSE 374 CSE 374: will only be considered a Free Elective
 CSE 341: Programming Languages  CSE 413 CSE 413: will be allowed to count as CSE Senior Elective, can not take 341 for credit if 413 completed.
 CSE 344: Introduction to Data Management  CSE 414 CSE 414: considered equivalent to CSE 344 a major’s course and will be allowed as a 300 level core course (does not apply to the 4, 400 level core courses)
 CSE 351: The Hardware/Software Interface  CSE 410 CSE 410: Has not been offered in several years, currently only applies to Free Electives
 CSE 391: System and Software Tools  CSE 374 See Above
 CSE 401: Introduction to Compiler Construction  No Equivalent  
 CSE 421: Introduction to Algorithms  Math 381CSE 417 CSE 417: Students can take CSE 421 after getting into the major, courses are similar but not enough overlap to preclude credit. If a student does NOT take CSE 421, they can petition their adviser to allow CSE 417 as a CSE Elective.  If a student opts to take 421, they will receive credit but 417 will only be considered a Free Elective.
 CSE 442: Data Visualization  CSE 412 CSE 412: Currently CSE 412 can be used in place of CSE 442 as a CSE 400 level Core Course.
 CSE 446: Machine Learning  CSE 416 CSE 416: Students can take CSE 446 after getting into the major and will still receive credit. CSE 446 is a substantially more advanced and rigorous course that is a better fit for CSE majors. CSE 416 will apply to general electives by default. If a student does NOT take CSE 446, they can petition their adviser to allow CSE 416 as a CSE Elective as they near graduation. If a student opts to take 446 after 416, 416 will only be considered a Free Elective.
 CSE 451: Introduction to Operating Systems  CSE 410 See Above
 CSE 461: Introduction to Computer Communication Networks    E E 461  
 CSE 473: Introduction to Artificial Intelligence  CSE 415 CSE 415: will be allowed to count as CSE Elective, students cannot take 473 for credit if 415 completed.

Introductory Courses

UW President Ana Mari Cauce participates in the Hour of Code

Computer science and engineering increasingly shapes the way we live and interact with the world around us. Computing has transformed nearly every industry, from law and government, to education and health care, to travel and entertainment. It also has become an essential tool for researchers in every scientific and business discipline, as we have entered an age of data-driven discovery.

Computer science and engineering increasingly shapes the way we live and interact with the world around us. Computing has transformed nearly every industry, from law and government, to education and health care, to travel and entertainment. It also has become an essential tool for researchers in every scientific and business discipline, as we have entered an age of data-driven discovery.

CSE courses serve as an entry point for students across the campus to explore the world of computing. We offer courses designed to enable all students, regardless of major, to develop computational thinking and hands-on programming skills. Some students discover after taking one of our classes that CSE is the right path for them. Others apply their new knowledge and skills to a field outside of CSE. No matter what path you choose, taking a CSE course—or courses!—can enrich your educational experience and enhance your career prospects.

This section describes our introductory courses (100-level courses), so you can find the best course to start — or continue — your journey.

What is it?

CSE 121 is a computer programming course for students who are new to programming. Students write programs to express algorithmic thinking and solve computational problems motivated by modern societal and scientific needs. You will learn procedural programming constructs (methods), control structures (loops, conditionals), and standard data types, including arrays – we do not expect any of these terms to be familiar to you yet. The course uses the Java programming language and teaching you how to write, test, and debug small and useful programs.

Each of CSE 121, CSE 122, and CSE 123 has two large class meetings and two small (< 25 students) weekly recitations sections each week, with the recitations sections led by a community of undergraduate TAs who foster a supportive and inclusive learning environment for beginning programmers.

Programming is for everyone! If you haven’t coded before, come experience the beauty and creativity of creating running code.

Who should take it?

Students without programming experience — see our guided self-placement to help you choose among CSE 121, CSE 122, and CSE 123 if you haven’t already taken any of them. All three courses enthusiastically welcome students based on self-placement.

Capacity


CSE 121 will be offered every quarter starting Fall 2022, and we expect it will serve thousands of students each year, several hundred each quarter. But remember two of the four weekly meetings will be in a recitation section of < 25 students.

What next?

While CSE 121 will teach you useful programming skills you can use in to solve real problems, the next course is CSE 122, which covers additional essential topics for writing well-designed programs using powerful data structures.

What is it?

CSE 122 is a programming course that uses the Java programming language to teach program design, style, and decomposition. Students use data structures such as lists, dictionaries, and sets (no experience with what these are expected) to solve computational problems motivated by modern societal and scientific needs. The course also uses basic object-oriented programming to separate an interface from an implementation.

Who should take it?

CSE 122 is designed to be a “second programming course” for students who have taking a range of first programming courses. While it follows CSE 121, it is also the right starting point for students who took a programming course in high school that covered the CSE 121 programming features, such as AP Computer Science A. Prior experience does not need to be in Java. See our guided self-placement to help you choose among CSE 121, CSE 122, and CSE 123 if you haven’t already taken any of them. All three courses enthusiastically welcome students based on self-placement.

Capacity

CSE 122 will be offered every quarter starting Fall 2022, and we expect it will serve thousands of students each year, several hundred each quarter. But remember two of the four weekly meetings will be in a recitation section of < 25 students.

What next?

After CSE 122, students can take any combination of CSE 123, CSE 154, and CSE 163, three complementary courses described below.

What is it?

CSE 123 emphasizes implementation and run-time analysis of data structures and algorithms using techniques including linked references, recursion, and object-oriented inheritance. Students will see how they can implement the data structures and abstractions they used in CSE 122 and how to use additional object-oriented features to create and use flexible software. They will use these techniques to solve computational problems motivated by modern societal and scientific needs.

Who should take it?

Students can take CSE 123 after CSE 122 self-place into CSE 123 if they have substantial prior experience such that they are already familiar with the CSE 122 material. See our guided self-placement. The course content is designed for students aiming toward academic and career plans where software implementation is a major component

Capacity

CSE 123 will be first offered Winter 2023 and will then be offered every quarter. Like CSE 121 and CSE 122, we are committed to having enough capacity for everyone, regardless of major or interest, interested in the course.

What next?

After CSE 123, students can take various upper-division computing courses. A good next step for students who enjoyed CSE 123 would be CSE 373 Data Structures, a more advanced course designed for non-majors. CSE 154 and CSE 163 complement CSE 123. Completion of CSE 123 satisfies the prerequisites for students to apply for admission to the Computer Science or Computer Engineering majors.

What is it?

CSE 143X is an accelerated version of CSE 122 and CSE 123 that covers the material of both in a single quarter. This course doubles the pace of learning—not the assignment workload. CSE 143X used to be an accelerated version of CSE 142 and CSE 143 and it is currently taught in a way more reminiscent of our old introductory courses.

Who should take it?

CSE 143X is designed for students who want to take CSE 122 and CSE 123 but feel they have sufficient experience and ability to learn the material in a condensed time frame. More information is here.

We aim to offer CSE 143X in Fall or both Fall and Winter.

What next?

Students who complete CSE 143X have the same options for further study as students who have completed CSE 123 or CSE 143.

What is it?

CSE 160 teaches students to program for data analysis and visualization using Python, the standard programming language used in various scientific disciplines and in other data-driven fields. Students perform real data manipulation tasks and write programs that solve problems using actual data sets drawn from the sciences, engineering, business and the humanities. See this article on how student Krittika D’Silva applied her programming skills to addressing real-world problems in health care for an example of how CSE 160 is useful in a variety of fields.

Who should take it?

CSE 160 offers a firm grounding in computer programming to any student, and no previous programming experience is assumed. Although it is aimed at those who are new to programming, students who have taken CSE 121, CSE 122, or CSE 142 (but not CSE 123 or CSE 143) can enroll in this course, but also see CSE 163, which is designed to follow CSE 122 or CSE 160.

CSE 160 is particularly beneficial to students who wish to perform data analysis. Students who are majoring in or intend to major in one of the natural, physical or social sciences, or another data-intensive discipline, are encouraged to consider CSE 160 as a first course.

Capacity

CSE 160 is offered roughly twice per year to approximately 200 students.

What next?

After completing CSE 160, students can already use programming for a variety of data analyses. For more data programming, including using common tools and libraries for a variety of types of data, continue on to CSE 163 Intermediate Data Programming. For students who are interested in taking additional programming classes or who intend to major in computer science or computer engineering, take CSE 122 (not CSE 121, which is for students without programming experience). Students who would like to learn how to build websites and web-based applications and have achieved a grade of at least 2.0 in CSE 160 can enroll in CSE 154 Web Programming.

What is it?

CSE 163 provides students who have taken CSE 122, CSE 142, or CSE 160 with a programming course about how to write programs that (a) manipulate different types of data (images, text, tables, etc.), (b) leverage the growing ecosystem of tools and libraries for data programming, (c) are both efficient and elegant, and (d) are medium-scale in size (100 to 200 lines). The course complements CSE 123, which focuses more deeply on fundamental programming concepts and the internals of data structures. In contrast, CSE163 emphasizes the efficient use of those concepts for data programming. CSE 163 uses the Python programming language.

Who should take it?

CSE 163 requires CSE122, CSE 123, CSE 142, CSE143, or CSE 160 (any one of these courses) as pre-requisites. CSE 121 is not enough prior experience — take CSE 122 or CSE 160 instead.

CSE 163 is designed for broad interests in data science, data analysis, and programming. Students in any major may benefit from this course. It is complementary to CSE 123 (or CSE 143), and CSE 154; the material in CSE 123, CSE 154, and CSE 163 have minimal overlap. CSE 123 (or 143) remains a prerequisite for admission to the Computer Science and Computer Engineering majors.

Capacity

The course is offered 2-3 times per year with each offering having capacity for approximately 300 students. We will continue to expand overall capacity as needed in the years ahead.

What next?

After completing CSE 163, students will be well-positioned to pursue various data-science courses across campus, including in majors that have data-science options. It is also great preparation for CSE 414 and CSE / STAT 416 — courses where any one of CSE 123, CSE 143, or CSE 163 are sufficient.

What is it?

CSE 154 provides an introduction to programming languages and tools for creating websites and web-based applications—skills that are increasingly useful in a variety of fields, as many people conduct much of their professional and personal lives online. Students learn how to author web page content using Hypertext Markup Language (HTML), control design and layout through the use of Cascading Style Sheets (CSS), create interactive web pages with JavaScript, and run code and maintain data on web servers.

Students must have achieved a grade of at least 2.0 in any one of CSE 122, CSE123, CSE 142, CSE 143, CSE 160, or CSE 163 to enroll in this course.

Capacity

CSE 154 is offered a couple times each year, with room for roughly 250 students per offering, sometimes more.

What is it?

STAT/INFO/CSE 180, Introduction to Data Science (IDS), is a course offered every quarter. It is a survey course introducing the essential elements of data science: data integrity including the ethics and social context of data; data methods including using tables, graphs, and other visualizations; and data analysis, including statistics methods and machine learning. It is not a programming course: rather than programming, students gain hands-on experience with other software tools and methods.

This course is a joint project of Statistics, the Information School, and the Allen School, synthesizing the perspectives and expertise of the units. It was jointly developed, and each department/school leads one quarter’s offering each year. The offerings cover the same material.

Who should take it?

180 is designed for all undergraduates. No previous exposure to programming or statistics is expected. Many important decisions made by individuals and society at large are or should be data driven. Therefore, understanding the fundamentals of data science is essential for functioning as an informed citizen.

Capacity

Approximately 100 students per quarter.

What next?

While the course is not a direct prerequisite for other courses, students are likely to be motivated to follow-up with additional courses in computer science, informatics, and statistics. See CSE 121 and CSE 160 for programming-focused courses. In particular, the programming aspects of 180 are not sufficient by themselves to skip 121/160.

What is it?

CSE 110 (which had number CSE 120 until 2022) introduces students to the fundamental principles of computer science and to basic programming concepts as a means to develop their computational thinking. Students explore the creative aspects of computing, including abstraction, problem-solving and managing complexity, and have the opportunity to consider the social, ethical and legal ramifications of various computing technologies. CSE 110 is related to the Advance Placement course in Computer Science Principles.

CSE 120 was renumbered CSE 110 just to emphasize that it is not part of the CSE 121, CSE 122, CSE 123 sequence. It did not change otherwise.

Who should take it?

Every student, no matter what his/her chosen field, should be familiar with the concepts and technologies that underpin computing and its role in our society. Anyone who seeks to acquire a basic understanding of computer science and to gain insights beyond what they know as mere consumers of technology would benefit from taking this course.

Capacity

Due to relatively low demand, we have not been offering this course every year. We hope to relaunch it at some point.

What next?

Students have multiple options for building on what they learn in CSE 110. A natural next step may be to follow principle with practice by enrolling in one of our introductory programming courses, CSE 121 or CSE 160. While CSE 110 offers a great introduction to computer science concepts, it is not a necessary prerequisite for enrollment in those programming courses.

What is it?

CSE 131 offers students the opportunity to express their creativity while exploring the technical aspects of digital photography, including photographic composition, the science of optics and digital imaging, and the future of internet-enabled photography. Students practice using a variety of software tools and techniques for incorporating design elements such as line, color, texture and light, culminating in a final project organized around a theme. View examples of past student projects curated by course instructors here and here.

Capacity

CSE 131 was offered once per year with room for approximately 200 students through 2021, but the instructor and course creator has retired and we do not have plans at this time to offer the course.

The last offering of CSE 142 will be Summer 2022 as we transition to CSE 121, CSE 122, and CSE 123 in place of CSE 142 and CSE 143. We retain the information below as reference for students who took CSE 142 or corresponding courses at other institutions.

What is it?

CSE 142 is an entry-level course that introduces students to essential computing concepts and teaches them how to write programs in Java—the most widely-used programming language in the world and an integral part of the UW CSE curriculum. CSE 142 is designed for students with no programming experience. Students attend a combination of large lectures and small (< 25 students) weekly recitation sections led by a community of TAs who foster a supportive and inclusive learning environment for beginning programmers. Students also have access to the Introductory Programming Lab for individualized help.

UW CSE offers honors sections connected to CSE 142 and 143 in which students take part in readings and discussions exploring a variety of computer science topics, including the nature of computation, the mathematical underpinnings of computer science, social issues related to computing, and current trends in the field. Participating students earn one additional credit for the seminar; in addition, the Honors Program grants students who complete CSE 142 or 143 in conjunction with the seminar credit for one 5-unit math or science course in the core.

Enrollment in CSE 142 has increased dramatically, and the course has been particularly successful at engaging more women in computer science and engineering. CSE 190A, a seminar linked to a section of CSE 142, enables students to explore the role of women in the field through group discussions, hands-on activities, and guest speakers. Watch our video exploring the growing popularity of CSE 142 and its follow-on course, CSE 143, and how these courses contribute to greater diversity in computing.

Who should take it?

Any student who is new to programming, and is interested in learning Java and general programming skills while working on entertaining assignments, would benefit from taking CSE 142.

Generally speaking, students who plan to major in computer science or computer engineering should complete CSE 142 and CSE 143 (or CSE 143X), as they are prerequisites for admission. Students may also need to complete CSE 142 and/or CSE 143 to satisfy requirements for majors from other departments.

What next?

Students have a number of options for further study. Three complementary courses are specifically designed to follow CSE 142: (1) CSE 143 is the continuation course for those who want to develop more advanced programming skills in Java and is the next step toward most upper-division CSE courses, (2) CSE 154 is a web programming course covering many technologies used to implement web pages, and (3) CSE 163 is a programming course focused on data analysis with a variety of data-science programming tools.

Most students should take CSE 122 or CSE 123 instead of CSE 143. We will offer CSE 143 during the 2022-2023 academic year for students who already completed CSE 142 or a corresponding course at another institution.

What is it?

CSE 143 builds on the material in CSE 142 to develop more advanced programming skills, essential for writing more complex programs over larger and more interesting data. The format is similar to CSE 142, with two small weekly recitation sections.

UW CSE offers honors sections connected to CSE 142 and 143 in which students take part in readings and discussions exploring a variety of computer science topics, including the nature of computation, the mathematical underpinnings of computer science, social issues related to computing, and current trends in the field. Participating students earn one additional credit for the seminar; in addition, the Honors Program grants students who complete CSE 142 or 143 in conjunction with the seminar credit for one 5-unit math or science course in the core.

Who should take it?

CSE 143 is designed as a follow-on course to CSE 142. While students who already know the material covered in CSE 142 are allowed to take CSE 143 without formal approval, doing so is often not advised because the two courses are designed together. CSE 143 is a great choice for any student wanting to learn more after CSE 142, and CSE 123 or CSE 143 is generally required for entry to the CS or CE major. CSE 123 or CSE 143 also may be required for other majors on campus.

What next?

After CSE 143, students can take various upper-division computing courses. A good next step for students who enjoyed CSE 143 would be CSE 373 Data Structures and Algorithms, a more advanced course designed for non-majors. Other 100-level courses, such as CSE 154 and CSE 163, are also options (the exception is CSE 160, which cannot be taken after CSE 143). Completion of CSE 143 satisfies the prerequisites for students to apply for admission to the CS or CE major.

In addition to our 100-level courses, we offer a selection of 300- and 400-level courses in which students can explore in some depth specific areas of computing in a format suited to non-majors. Topics include algorithms, intermediate programming, artificial intelligence and database systems. See our overview of UW CSE’s non-major courses below to learn about options for additional study.

Questions? Consider speaking to a UW CSE adviser. Visit our undergraduate advising page for more information.

Back to top


Many students enter the UW with an interest in computers. There are a variety of ways you can gain an understanding of how computers work, and several majors other than Computer Science and Computer Engineering can prepare you for employment in a field where computers are used.

For example, any engineering, science, or technical major integrates computing since computers are powerful tools for computation, design, modeling, and data manipulation. Or any major plus some computer coursework can satisfy a computing interest. For example, the Allen School offers a series of non-majors courses.

Below are specific suggestions of related major areas at the UW campuses in Seattle, Bothell and Tacoma and at other Washington state colleges and universities.

Majors with an asterisk (*) are capacity constrained: Students must complete all minimum requirements to apply and must then compete with the entire applicant pool for a limited number of spaces. These majors often have application forms and application deadlines; some of them require standardized tests, recommendations, and/or interviews.

Accessible Accordion

  • Applied and Computational Mathematical Sciences. ACMS is an inter-departmental program that combines higher math, computer science, probability and statistics, modeling, and applied math. Mathematics is used in a fundamental way in most fields of science and engineering, and its use is rapidly expanding in the social sciences and humanities, as well. Recent increases in computing power have made mathematical modeling, computer simulation, and statistical analysis more important than ever. This degree offers several pathways, combining higher math courses with courses in computer science, probability and statistics, modeling, and/or applied math.
  • * Informatics The Information School, also known as the iSchool, offers a Bachelor of Science in Informatics that prepares students to analyze, design, and develop information technologies for the good of people, organizations, and society. The degree is a balance between technical skills in building information systems, and social, ethical, design, and organizational perspectives on the role of technology in people’s lives.Most Informatics students seek careers as software developers,data scientists, web developers, user experience designers, project manager, cybersecurity analysts or product managers.
  • Informatics Minor If you love your major but want to know more about how to apply data, information and technology to solve problems in your chosen field, then the Informatics minor might be for you. The Informatics minor includes required components in data, design, policy and ethics, and code.
  • * Human Centered Design & Engineering Students in Human Centered Design & Engineering (HCDE) practice research, design, and engineering by focusing on the needs of people in their various contexts. HCDE’s undergraduate and graduate degrees prepare students for leadership roles in user experience research and design, user interface design, human-computer interaction, computer-supported cooperative work, and related specializations. Beyond taking traditional classroom courses, students join directed research groups to work closely with faculty to enhance the knowledge base of this dynamic field.HCDE admits the majority of their students from the Direct to College Engineering placement process.
  • DXARTS(Minor). The Digital Arts and Experimental Media program creates opportunities for artists to pursue lines of inquiry within the scientific, technical and creative realms while discovering and documenting new areas of knowledge and practice in this emerging field. This inherently interdisciplinary curriculum requires all students to diversify their artistic practice across four major content areas (sound, video, 3D, and sensing and control systems) as well as compliment their study with relevant upper-division coursework selected from related fields (computer science, music, drama, dance, art, engineering, architecture, cinema studies, etc.). Students are positioned to pursue original creative and technical research.
  • * Electrical and Computer Engineering The Bachelor of Science in Electrical Engineering offered by the Department of Electrical & Computer Engineering (ECE) prepares students to design and build hardware and software for a variety of devices that use electricity, electromagnetics, photonics and quantum phenomena, such as robots, smartphones, lasers, electric power, vehicle control, medical devices and more. While all Electrical Engineering students take courses that cover the full breadth of the discipline, it is possible to do an emphasis in computer architecture and hardware design. ECE admits the majority of students from the Direct to College Engineering placement process.
  • Geographic Information Systems The Geography department at the UW offers a Geography degree with a concentration in Geographic Information Systems (GIS). A GIS degree gives its majors an understanding of the development, sources, and uses of geographic information. The GIS curriculum focuses on geographic system analysis, map sources and map error, urban transportation GIs analysis, and natural resources and environmental analysis.
  • * Masters in Clinical Informatics and Patient Centered Technologies Offered through the Evening Degree program, learn to manage and evaluate the use of information technology and informatics applications to improve patient care processes and outcomes. Explore IT tools used in clinical and community settings, and study how to design and test systems that enhance care.
  • * Visual Communications Design and Interaction Design The School of Art’s Division of Design educates and trains designers to create and develop concepts that optimize the function, value, and appearance of communications, products and systems for the benefit of both industry and society. Within the Division of Design, there are three majors: Visual Communication Design, Industrial Design and Interaction Design.
  • * Data Science Options A growing number of departments and majors offer a multi-course specialization in data science (called a degree option), coordinated by the campus-wide eScience Education Working Group.
  • UW Computing & Communicationsoffers training courses in computing areas, including HTML, Word Processing, Spreadsheets, Databases, Desktop Publishing, etc.
  • UW Extension offers certificate programs in many computer-related areas as well as evening courses for credit and noncredit.

Back to top


Non-Matriculated Students

If you are a non-matriculated student (i.e., someone not currently enrolled as a student at UW) interested in taking any of our non-major courses please follow the instructions below. If you are interested in taking any of our majors-only courses please follow these petition guidelines. If granted a spot in a majors-only course our advising team will work with you to complete the required paperwork outlined below.

  1. Contact UW Educational Outreach for non-degree enrollment.
  2. After completing the Educational Outreach “NM Student Registration Approval Form,” turn it in to the Computer Science and Engineering undergraduate advisers. You can do this via fax (206-543-2969), email (ugrad-adviser@cs.washington.edu), or drop it off at the CSE Advising Office in the Bill & Melinda Gates Center for Computer Science and Engineering, CSE2 170. We will get the form signed by both the department and the instructor. Please make sure to include your return fax number, email address, or indicate that you will pick it up in person from our office.
  3. Complete the Educational Outreach enrollment process according to the Educational Outreach instructions.

Please contact an adviser if you have any questions about taking CSE coursework as a non-matriculated student.

Back to top

Non-Major Registration

Space is extremely limited in our majors-only classes and we often do not have space for students outside of the Allen School. Highly qualified non-majors can request space in these classes on a quarterly basis through our non-major enrollment request form (formerly referred to as a “petition”). Unfortunately, most requests cannot be accommodated due to capacity constraints. The Allen School has an extensive set of upper-division non-major course offerings for Non-Major students in Computer Science or Computer Engineering degree programs. These courses are open to all matriculated students at UW who meet the course prerequisites.

The most up-to-date information on courses is found on our Time Schedule page which includes links to the time schedules and our internal teaching schedule that outlines when and what courses will be taught each academic year.

Accessible Accordion

A student may be eligible for a majors-only course if:

    1. There is sufficient course staff available
    2. The student is qualified for the course and has taken the prerequisites or appropriate alternatives
    3. The student clearly articulates why learning the course material will directly benefit them
    4. The student is able to attend the first day of school and all subsequent classes
    The following restrictions apply for undergraduate CSE courses:

  • 2 undergraduate majors only CSE courses maximum allowed per quarter (excludes support courses)
  • 5 total undergraduate majors only CSE courses allowed (excluding support courses like CSE 391 and CSE 390Z). If you officially audit a course, that is counted as one of the 5.

The enrollment request form for the upcoming quarters will be available on this page as follows:

The priority deadline is when we’ll begin issuing add codes. You must fill out a request before the first day of the quarter to be considered for a space in a majors-only course. We will not be accepting any non major requests or giving any add codes after the first day of the quarter.
Quarter Petition Opens Priority Deadline Petition Closes
Autumn 2024 May 13th August 30th September 24th
Winter 2025 November 5th December 9th January 3rd
Spring 2025 February 14th March 14th April 4th
Summer 2025 TBD TBD TBD

The Allen School allows for people outside the Ph.D. program (otherwise known as a ‘non-major’) to take 500-level courses. Matriculated students should complete the enrollment petition linked below. The petition is updated every quarter, so be sure the title reflects the correct term. Non-matriculated students can use the same enrollment petition.

This petition is only for 500-level classes, and students who petition are not guaranteed to be approved. Students may not receive an add code for several reasons, including but not limited to, lack of seating in the class, instructor preference to keep their course to Allen School Ph.D. students, or not having background skill suitable for the course. Our goal is to send out add codes, if available, the first week of the term. Current CSE Ph.D. students are given priority in these course offerings.

CSE Doctoral Course Enrollment Petition

The priority deadline is the earliest we’ll start issuing add codes. You may not hear about your petition until the end of the first week of the quarter.
Quarter Petition Opens Priority Deadline Petition Closes
Autumn 2024 June 1 by 14:00 (2 pm) September 2 October 1 by 12:00 pm
Winter 2025 November 1 by 14:00 (2 pm) December 13 January 10 by 12:00 pm
Spring 2025 February 14 by 14:00 (2 pm) March 14 April 4 by 12:00 pm
Frequently Asked Questions (FAQ)
Do Allen School undergraduate majors need to fill in the enrollment petition if they wish to take a graduate-level course?
Yes! By default the majority of graduate-level CSE courses are restricted to CSE graduate students. Interested Allen School undergraduates should fill in the form, ideally after speaking with an undergraduate staff adviser about whether a graduate-level course is appropriate for them or the course instructor to determine an appropriate fit.
Can a non-matriculated (non-UW) student request enrollment in an Allen School 500-level course?
Yes! Here’s how:

  1. Fill out the NM Student Registration Form. Save this PDF for later.
  2. Fill out the CSE Doctoral Course Enrollment Petition.
  3. Email grad-advising@cs.washington.edu with:
    • Your intention to enroll as a non-matriculated student.
    • The course name and number of the course you’d like to take.
  4. The Grad Advising team will then email you a digital copy of the NM Student Registration Approval Form via Docusign. Sign and complete the document. We will manage contact with the faculty member on your behalf.
  5. We will return the completed NM Student Registration Approval Form when approval is granted. If approved, your course add code will be included in the returned form. This may not occur until the deadlines listed above. Save this signed and completed PDF for the next step.
  6. Send the two completed, saved PDFs to the registrar via email at c2reg@uw.edu
When will I receive an add code for 500-level courses?
We make every effort to open the enrollment petition when Registration Period I begins. If it is not open, check back the following week. Add codes will begin being issued two (2) weeks before the start of the quarter. However, in many cases students will not hear about the result of the petition until the first week of the quarter. Note that the graduate course enrollment petition does not include “CSE M” or “CSE P” courses as these courses are typically not available for non-major registration.
Can I register for CSE 519 or CSE 520?
In order to enroll in CSE 519 or 520 students need to be engaged in research with a CSE faculty member. The talks featured in CSE 519 and 520 are open to the public, so students do not need to be registered in order to attend. Complete viewing information on the CSE Colloquia and Distinguished Lecturer Series can be found on the event webpage.
Can I take a CSE 590 or 591 course?
Maybe. All courses listed under CSE 590 and CSE 591 are seminars or group meetings offered by Allen School research groups and are designed for current doctoral students engaged in academic research. Typically offerings are not confirmed until the first week of the quarter. Students interested in any of these seminars should check the current time schedule and contact the listed instructor for permission. Email permission can then be forwarded to grad-advising@cs.washington.edu at which time an add code can be issued. Detailed information about each 590 and 591, if/when we have it, is posted on the Graduate Special Topics page.

PMP Single Course Enrollment
Courses in the Allen School’s evening Professional Master’s Program (PMP) may be open to local professionals who wish to take classes without being enrolled in the master’s program. Taking PMP classes with non-matriculated status is an opportunity for software professionals to refresh or expand their knowledge or to prepare to apply to a graduate program later on.

The CSE P course list and meeting schedule for the year is posted on the Current PMP Courses page.

Questions about the PMP or about single course enrollment in CSE P courses? Feel free to contact PMP staff at masters [at] cs [dot] washington [dot] edu; we will be happy to help.

Eligibility and Policies

  • All students must meet the PMP’s eligibility criteria, including requirements for computing knowledge/technical depth and holding at least two years of relevant professional software experience.
  • PMP courses are NOT open to UW undergrads or grad students outside of CSE.
  • Single-course enrollment requires PMP and course instructor permission and is on a space-available basis. Requests may be denied for several reasons, including lack of available seats, a course being restricted to degree-seeking students only, or lack of sufficient background skill suitable for the class.
  • Costs and fees for single-course enrollment in PMP courses are the same as those paid by students enrolled in the program.

Important! For PMP courses to apply toward the PMP master’s degree later on, you must enroll with graduate non-matriculated (GNM) status (see below). Courses taken without GNM status cannot later be counted toward a UW master’s degree and GNM status cannot be applied retroactively.

How to Enroll

  1. Review the list of upcoming PMP courses.
  2. Complete the single course enrollment request form. It collects your course preference along with:
    • Up-to-date copy of your resume or CV.
    • College transcripts (unofficial copies are okay).
    • A short statement (250 words max) describing your interest in single course enrollment and how your technical knowledge was acquired.
  3. We will follow up with you a week before the start of the quarter with the outcome of your request and, if approved, your next steps.

PMP SINGLE COURSE ENROLLMENT REQUEST

Graduate non-matriculated (GNM) status

Enrolling with GNM status can be a good option if you plan to apply the PMP in the future because the credits you earn can later be counted toward PMP degree requirements. Although success as a GNM student does not guarantee or prioritize admission to the PMP in the future, up to 12 credits (equivalent to 3 PMP courses) can be counted toward degree requirements if you are admitted to the program later on. See more information about GNM status.

If you want to take PMP classes with GNM status, then you must first be approved for single-course enrollment through the process described above (the GNM application carries a nonrefundable application fee, so you should wait until you are approved for to enroll before submitting yours).

If approved to enroll with GNM status, the next steps are:

  1. Submit an application for GNM status in the PMP through the UW Graduate Schol’s online application portal.
    1. The application collects only your resume/CV and transcripts; you do not need to provide a personal statement or recommendation letters.
    2. Non-native English speakers must enclose proof of their English proficiency in their applications! Refer to the PMP’s eligibility criteria for information on how to meet this requirement. We cannot approve your GNM application if this requirement is not met.
  2. Once your GNM application is approved, proceed with registering for your class.
  3. Follow instructions in your application status page for submitting an official undergraduate transcript to the UW Graduate School.

Deadlines

To be considered for single-course enrollment, fill out the enrollment request form by the date specified below. After the form closes we will begin following up with students and supporting the registration process– it’s normal that you won’t hear back until closer to the start of the quarter.

Quarter Form Opens Form Closes
Autumn 2024 (classes begin September 25) n/a n/a
Winter 2025 (classes begin January 6) (form is open now!) December 16
Spring 2025 (classes begin March 31) January 21 March 17

CSE M classes are typically jointly offered with CSE undergraduate courses. During the first week of class, a student enrolled in the undergraduate version of the class may switch to the CSE M version if they have instructor permission and space is available. If a CSE M course is not jointly offered with an undergraduate course, students can email vgrad-advisor@cs.washington.edu. There is often limited or no space for non-majors in CSE M courses. CSE undergraduates not (yet) admitted to BS/MS can similarly switch into CSE M courses the first week of class if space is available and they have instructor permission (or the instructor is ok with any student switching). CSE undergraduates that have been admitted to BS/MS may register at any time for CSE M classes while still an undergraduate, but need to email vgrad-advisor@cs.washington.edu to get registered.