Last updated: May 6, 2022

The Paul G. Allen School of Computer Science & Engineering is excited to announce that we will be replacing our two largest programming courses, CSE 142 and CSE 143, with a new set of three courses, CSE 121, CSE 122, and CSE 123 starting next academic year (2022-2023). The new courses will complement our other 100-level programming courses, CSE 154, CSE 160, and CSE 163, which are not changing. Creating CSE 121, CSE 122, and CSE 123 from scratch for thousands of students a year is an enormous undertaking motivated entirely by better serving the widest possible range of students across the UW Seattle campus.

This page attempts to answer common questions, particularly for current UW students and students who are considering attending UW.

What is the schedule for transitioning to the new courses?

CSE 121 and CSE 122 will be first offered in Fall 2022, while CSE 123 will be first offered in Winter 2023. We plan to offer the courses every quarter after launching them. So, from Winter 2023 onward, expect all three courses to be offered every quarter.

CSE 142 will be last offered in Summer 2022. For students who took CSE 142 or an equivalent course at another institution (community college, high school, etc.), we will offer CSE 143 during the 2022-2023 academic year.

How do the courses relate to each other? Are the new courses a sequence?

They are a sequence, but students should start with whatever course is best for them given any prior computer programming experience they may or may not have.

We are providing a guided self-placement web page for students to use to decide what course to start with. This is not a placement exam – students will make the best choice for themselves, and we will continue to refine the guided self-placement and answer questions as they arise.

At the highest level:

  • Students with no prior programming experience are highly encouraged to take our programming courses, starting with CSE 121. Programming is a valuable skill for everyone, and we welcome students with any academic interests and any level of experience.
  • Students who have taken a programming course where they learned to use methods, loops, if-statements, and arrays (or similar constructs) will be best served by starting with CSE 122. CSE 122 will assume that level of experience, but will not assume experience with Java (i.e., it’s okay if your experience is with another language, like Python).
  • Students with substantial prior experience, including some object-oriented programming to separate interface from implementation, and using data structures such as lists, stacks, and queues, may find it most useful to start with CSE 123.

What will students learn in the new courses?

Below are the official course descriptions for the new courses. We will have more information available soon as the more detailed course designs are being actively developed. Overall:

  • A student completing CSE 123 will have approximately the same programming abilities as a student finishing CSE 143. In other words, the old and new sequences have similar learning objectives and end-points. But the new sequence will:
    • Have a different ordering and pacing of topics
    • Provide more explicit instruction and practice in testing,debugging, and documentation
    • Emphasize a broad set of modern societal and scientific needs that programming can help address
    • Provide students more opportunities to bring their own creativity and topics of interest into their work
  • CSE 121 will provide a set of programming skills sufficient for writing small programs that use loops, arrays, and methods. Students will learn to translate ideas and procedures into correct code.
  • CSE 122 will emphasize program style and how to decompose a larger programming problem into pieces. It will also introduce using different common data structures to organize and aggregate data. And it will teach basic object-oriented programming for separating interfaces from implementation. Students completing CSE 122 will be able to use programming as a tool in other domains.
  • CSE 123 will focus on topics important for students whose future endeavors may involve designing and implementing software as a primary focus. This includes but is not limited to Computer Science and Computer Engineering majors. Topics include implementing linked data structures including lists and trees, recursion, and object-oriented programming techniques like subclassing.

Like CSE 142 and CSE 143, the courses will use the Java programming language.

As promised, here are the catalog descriptions:

CSE 121 Introduction to Computer Programming I (4) NW, QSR
Introduction to computer programming for students without previous programming experience. Students write programs to express algorithmic thinking and solve computational problems motivated by modern societal and scientific needs. Includes procedural programming constructs (methods), control structures (loops, conditionals), and standard data types, including arrays. Recommended: completion of Paul G. Allen School's Guided Self-Placement.

CSE 122 Introduction to Computer Programming II (4) NW, QSR
Computer programming for students with some previous programming experience. Emphasizes program design, style, and decomposition. Uses data structures (e.g., lists, dictionaries, sets) to solve computational problems motivated by modern societal and scientific needs. Introduces data abstraction and interface versus implementation. Recommended: CSE 121 or completion of Paul G. Allen School's Guided Self-Placement.

CSE 123 Introduction to Computer Programming III (4) NW, QSR
Computer programming for students with significant previous programming experience. Emphasizes implementation and run-time analysis of data structures and algorithms using techniques including linked references, recursion, and object-oriented inheritance to solve computational problems motivated by modern societal and scientific needs. Recommended: CSE 122 or completion of Paul G. Allen School's Guided Self-Placement.

What are the credit hours, class meeting schedules, etc.?

Each of the new courses is 4 credits, with 2 weekly large-class meetings (“lecture”) and 2 weekly small-group meetings with a Teaching Assistant (“quiz sections”). We anticipate lectures on Wednesdays and Fridays and sections on Tuesdays and Thursdays. Time-slots will vary by quarter.

How will prerequisites and program requirements change with the new courses?

Departments and programs on campus are in the process of making these decisions and updates. The Allen School, while eager to help everyone adjust to the new sequence, can speak only for CSE courses. For CSE courses:

  • CSE 154 will have as a prerequisite, “minimum grade of 2.0 in one of CSE 122, CSE 123, CSE 142, CSE 143, CSE 160, or CSE 163.”
  • CSE 163 will have as a prerequisite, “one of CSE 122, CSE 123, CSE 142, CSE 143, or CSE 160.”
  • CSE 373 and CSE 374 will have as a prerequisite, “CSE 123 or CSE 143.”
  • CSE 412 will have as a prerequisite, “one of CSE 123, CSE 143, or CSE 163.”
  • CSE 414 will have as a prerequisite, “a minimum grade of 2.5 in one of CSE 123, CSE 143, or CSE 163”
  • CSE 416 (joint with STAT 416) will have as a prerequisite, “either CSE 122, CSE 123, CSE 143, CSE 160, or CSE 163; and either STAT 311, STAT 390, STAT 391, IND E 315, or Q SCI 381.”

Similarly, Computer Science and Computer Engineering degree requirements and admissions requirements have not been approved yet, but we anticipate students applying to the Allen School along a pathway other than direct-admit freshmen will need to complete CSE 123 or CSE 143 before applying. Allen School majors should complete CSE 123 before taking 300-level majors classes.

What about AP credit?

A score of 3, 4, or 5 on the AP Computer Science A exam will receive credit for CSE 121 (, so most students with this level of experience should generally start with CSE 122.

The AP CS Principles exam previously led to credit for CSE 120. We have renumbered CSE 120 to CSE 110 (though this will not show up in the course catalog for a few more months), so going forward the credit will be for CSE 110 instead, but the only difference is the course number.

What about transfer credit?

For at least the next year or so, we expect courses at Washington State community and technical colleges that currently count as equivalent to CSE 142 and CSE 143 will continue to be equated with those older courses. Since CSE 123 and CSE 143 reach similar end-points, this is no problem – students enrolling at UW after completing CSE 143 as a community college student (including but not limited to Running Start) can proceed to the same courses as a student completing CSE 123. Similarly, transfer applicants will continue to complete a course equivalent to CSE 143 before applying.

Over time, we are eager to work with our partners at other institutions to identify how transfer credit can be realigned to our new courses. This work may be easier after we have rolled out the new courses.

Will there be an “accelerated” option and, if so, how will it work?

We have not decided yet. (With the older courses, in Fall we would offer CSE 143X, which would cover the content of both CSE 142 and CSE 143 in a single quarter. Our focus right now is on successfully launching the three new courses. When time allows, we will revisit whether it will serve a set of students well to create an accelerated course that might cover two of the three new courses.)

How will Honors Sections work?

We have not decided yet. We are likely to have 1-credit honors sections “attached” to CSE 122 and CSE 123 where students can explore applications and ramifications of computing.

Why are you making this change?

CSE 142 and CSE 143 have been highly successful, but they have also been extremely stable in content and pacing for over 15 years, during which much has changed in terms of the range of students’ prior experience, the compelling applications of computer programming, and teaching techniques – in general and specifically for programming.

One very significant change is that more students have access to programming courses before they start at UW, particularly in high school. CSE 142 was designed for students without programming experience, but it is difficult to provide a great no-experience-required course when, as in recent years, roughly half the students in a particular offering have, in fact, programmed before. But CSE 143 was also not designed for most of these students – it has been a continuation of CSE 142, assuming experience directly aligned with “our” CSE 142. We believe the new sequence will better serve most students: Students without experience are enthusiastically welcomed into CSE 121 while students with a prior programming course, whether or not it was “our” CSE 121, are enthusiastically welcomed into CSE 122.

Our courses are for everyone on campus, both Allen School majors and others. While all three new courses will grow to serve everyone on campus who wants to take them, students in non-computing disciplines may decide that CSE 122 (or perhaps just CSE 121) provides enough for their needs, or they may take any subset of the complementary courses CSE 123, CSE 154, and CSE 163. Also, CSE 160 is an alternate, faster-paced introductory course using Python and real-world data sets.

We have also heard from many students that CSE 142 and CSE 143 are very fast-paced and jam-packed with content. By spreading the content across three quarters, the new courses are a better fit for more students. Our old courses were unusual in that most colleges and universities teach introductory programming across a full academic year (e.g., two semesters or three quarters, rather than two quarters). This also makes room for explicit instruction and practice on testing and debugging. These are essential skills, in general and for writing correct code. Students doing well in CSE 142 and CSE 143 were likely picking up these skills despite us doing little to teach them.

Our full redesign of new courses will also let us revisit all the examples and application domains we use both in class and in homework assignments. We will bring in a more modern and diverse set of problems motivated by societal and scientific needs in order to better motivate students and to demonstrate the wide variety of issues where programming can be a useful tool.

Will the extra course and credit hours lengthen the time to complete a degree or various prerequisites?

Students taking all three courses will complete 12 credits across three quarters compared to 9 credits across two quarters. However:

  • In discussing this with faculty in all the majors requiring CSE 143, we do not foresee problems with students graduating in the same number of years as they do currently.
  • Many students will choose not to take CSE 123, or to skip CSE 121, or both.
  • The revised pacing and modern pedagogy should reduce the number of students dropping or retaking courses compared to CSE 142 and CSE 143.

Who should I contact if I have more questions?

  • If you are a student, either at UW or considering attending UW, please contact But if you are trying to decide which course to take, please wait for our guided self-placement resource.
  • If you are faculty or staff at UW considering how to adjust your program or courses, your curriculum manager received some information from the UW Curriculum Office. For additional information and follow-up discussions, please contact Dan Grossman,
  • If you are faculty or staff at another institution with questions about course content or transfer/articulation agreements, please contact Dan Grossman,


The curriculum redesign is being led by Brett Wortzman and Zorah Fung. It has benefited from too many conversations among faculty, staff, and students to list everyone, but we thank you all!