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
- Lectures: Mon/Wed/Fri 12:30pm-1:20pm (G10)
- Team meetings: Tue 1:30pm-2:20pm (G10)
- Project meetings: Thu 1:30pm-2:20pm (G10)
Staff
Please send all general inquiries to cse403-staff(at)cs.washington.edu
- Instructor: Michael Ernst <mernst@cs>; OH: immediately after class and by appointment
- Magnus Fulton <mjfulton@cs>; OH: by appointment
- Tijana Minić <tminic@cs>; OH: by appointment
- Nina Uchtmann <ninaucht@cs>; OH: by appointment
- Lucas Varotto <lvarotto@cs>; OH: by appointment
- Yuki Yang <yukyang@cs>; OH: by appointment
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
- CSE 331
- CSE 332
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:
- 45%: Group project (project milestones: 70%; final project review: 30%)
- 20%: In-class exercises and assignments
- 20%: Exams
- 15%: 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) |
||