Emerald Bay, Lake Tahoe

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

Staff

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

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

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 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