Software Engineering (CSE 403, Autumn 2024)
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
- Team meeting: Tue 1:30pm-2:20pm
- Project meeting: Thu 1:30pm-2:20pm
Staff
Please send all general inquiries to cse403-staff(at)cs.washington.edu
- Instructor: Michael Ernst <mernst@cs>; OH: after class and by appointment
- TA: Celestine Buendia <cbuendia@cs.washington.edu>; OH: by appointment
- TA: Scott Dang <scottvd@cs.washington.edu>; OH: by appointment
- TA: Melanie Kneitmix <mekne@cs.washington.edu>; OH: by appointment
- TA: Taryn Neal <tlneal@cs.washington.edu>; OH: by appointment
- TA: David Song <davsong@cs.washington.edu>; OH: by appointment
You can reach the entire staff at cse403-staff@cs.washington.edu.
If necessary, you can provide anonymous feedback.
To request an appointment, send an email listing several times you are available.
Communication
- Canvas
- Ed discussion
- Project meetings
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:
- 50%: Group project (project milestones: 70%; final project review: 30%)
- 20%: In-class exercises and assignments
- 15%: Exam
- 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 | Project milestones | |
---|---|---|---|---|
| ||||
09/25 | Introduction | Slides | ||
09/26 | The Joel Test | Read The Joel Test and The Joel Test: 20 years later
Slides |
||
09/27 | Software development lifecycles | Read Agile Alliance: What is Agile
Include reading the linked pages describing the
Agile Manifesto ,
12 Principles,
Pair Programming and
Test Driven Development.
Read Wikipedia: Agile ("Philosophy" section only). Slides |
||
| ||||
09/30 | Project pitches | Slides, pitches | Project pitch | |
10/01 | Project pitches | |||
10/02 | Requirements 1 by Isaac Reynolds (Google) | Read "The product requirements document" (pages 96-102) in Project Management ToolBox by Martinelli and Milosevic
Slides |
||
10/03 | Project meeting | |||
10/04 | Requirements 2 by Isaac Reynolds (Google) | |||
| ||||
10/07 | Version control and Git | Slides | ||
10/08 | Team meeting | Proposal and requirements | ||
10/09 | Architecture | Slides | ||
10/10 | Project meeting | |||
10/11 | In-class activity | Materials provided in class | ||
| ||||
10/14 | In-class activity | Materials provided in class | ||
10/15 | Team meeting | Revisions and Architecture | ||
10/16 | Design and style | Slides | ||
10/17 | Project meeting | |||
10/18 | Git bisect | In-class activity | Do the setup before class | |
| ||||
10/21 | DevOps | Read Amazon: What is DevOps? and
Microsoft: What is DevOps?.
Slides |
||
10/22 | Team meeting | Design | 10/23 | Data modelling | Slides: PDF, PPTX, Google Slides |
10/24 | Project meeting | Teammate survey | ||
10/25 | Code defenders | In-class activity | ||
| ||||
10/28 | Testing 1 | Slides | ||
10/29 | Team meeting | Testing | ||
10/30 | Intellectual property by Dr. Gail Alverson (Microsoft) | Slides | ||
10/31 | Project meeting | |||
11/01 | Testing 2 | Slides, Slides | ||
| ||||
11/04 | Mutation | In-class activity | ||
11/05 | Team meeting | Documentation | ||
11/06 | Debugging | Slides | ||
11/07 | Project meeting | |||
11/08 | Debugging | In-class activity | ||
| ||||
11/11 | No class: Veterans Day | |||
11/12 | Team meeting | Beta release | ||
11/13 | Beta release demos | Teammate survey | ||
11/14 | Beta release demos | |||
11/15 | Beta release demos | |||
| ||||
11/18 | Exam review | Come with questions | ||
11/19 | Team meeting | Peer review | ||
11/20 | Exam | Old exams; Exam; Solutions | ||
11/21 | Project meeting | |||
11/22 | Code Review | Slides | ||
| ||||
11/25 | Design Patterns 1 | Slides | ||
11/26 | Team meeting | No deliverable | ||
11/27 | Design Patterns 2 | Slides | ||
11/28 | No class: Thanksgiving | |||
11/29 | No class: Native American Heritage Day | |||
| ||||
12/02 | Design Patterns 3 | Slides | ||
12/03 | Team meeting | |||
12/04 | Interviewing | Slides | ||
12/05 | Project meeting | |||
12/06 | Wrapup | Slides | ||
| ||||
12/09 | Final release (Sunday night), Teammate survey | |||
12/10 | Individual Reflection | |||
12/11 | ||||
12/12 | Final project presentations, 8:30-10:30am |