Emerald Bay, Lake Tahoe

Software Engineering (CSE 403), Autumn 2026


Software engineering goes well beyond programming. It includes processes from defining a product to shipping and maintaining that product. Software engineering requires strong technical skills, but also strong teamwork and communication skills. Get ready to learn software engineering principles first hand, improve your technical skills, and ship a product.

Meetings

Staff

Please send all general inquiries to cse403-staff(at)cs.washington.edu

If necessary, you can provide anonymous feedback.

To request an appointment, send an email listing several times you are available.

Communication

Course project


Syllabus

Course description

In this course, students learn software engineering principles, techniques, and tools, and students gain practical experience with them. Topics in this course include requirements analysis, specification, design, abstraction, programming style, testing, maintenance, communication, teamwork, and software project management. The practical experience centers on a quarter-long team project, in which a software development project is carried through all the stages of the software life cycle. Particular emphasis is placed on communication skills and on developing maintainable software. In-class activities further provide a hands-on experience in using state-of-the-art techniques and tools.

Prerequisites

Course format

The class meets three times a week for lectures. Additionally, individual groups meet twice a week during section (Tuesday and Thursday) for team and project meetings. The Tuesday and Thursday meetings are required. All class meetings are in-person. Classroom material is enhanced with assigned readings and in-class activities. A major component of the course is teamwork on a group project. Individual contributions include reading assignments, peer review, and participation.

Grading

Grades will be based on a group project, in-class exercises, assignments, and participation:

Late policy

Assignments must be submitted on Canvas by the due date and time. Unless otherwise noted, all times are given in PDT (Pacific Time). The submission site remains open for 24 hours after the deadline. Assignments submitted within 24 hours after the deadline will incur a 20% penalty. Assignments will not be accepted after the submission site is closed.

You can find the general course policies here.


Schedule

Date Topic Materials Readings Assignments

09/30 Introduction Pitch pairs (due 10/01)
Project pitch (due 10/06)
10/01 Project pitch work Due: Pitch pairs
10/02 The Joel Test

10/05 Software development life cycle
10/06 Scrum and teams Due: Project pitch
10/07 Requirements and use cases Project preferences (due 10/07)
Team setup (due 10/08)
10/08 Project group forming Due: Team setup
Requirements (due 10/13)
10/09 In-class activity

10/12 In-class activity
10/13 Team meeting Due: Requirements
10/14 Architecture Architecture & Design (due 10/20)
10/15 Project meeting
10/16 Design and style

10/19 Data modelling
10/20 Team meeting Due: Architecture & Design
10/21 Best practices Testing & CI (due 10/27)
10/22 Project meeting
10/23 Version control and Git

10/26 Build systems
10/27 Team meeting Due: Testing & CI
10/28 Testing and CI Beta Release (due 11/03)
10/29 Project meeting
10/30 In-class exercise (Git) In-class: Git (due 10/30)

11/02 Test automation
11/03 Team meeting Due: Beta Release
11/04 Coverage-based testing Refinement (due 11/10)
11/05 Project meeting
11/06 In-class exercise (Code defenders) In-class: Code defenders (due 11/06)

11/09 Mutation-based testing
11/10 Team meeting Due: Refinement
11/11 No class (Veterans Day) Peer Review (due 11/17)
11/12 Project meeting
11/13 In-class exercise (Testing) In-class: Testing (due 11/13)

11/16 Debugging
11/17 Team meeting Due: Peer Review
11/18 SE and Code Review at Scale (Shauvik Roy Choudhary, Uber) Users (due 11/24)
11/19 Project meeting
11/20 In-class exercise (Debugging) In-class: Debugging (due 11/20)

11/23 Hack day
11/24 Team meeting Due: Users
11/25 Program analysis Final Release (due 12/01)
11/26 No class (Thanksgiving)
11/27 No class (Native American Heritage Day)

11/30 In-class exercise (AI-assisted coding) In-class: GenAI (due 11/30)
12/01 Team meeting Due: Final Release
12/02 Advanced program analysis Individual reflection (due 12/08)
12/03 Project meeting
12/04 Optional in-class exercise (Z3) In-class: Z3 (due 12/04)