Sonoma State University
Department of Computer Science
CS-370: Software Design and Development
Spring 2026

Course Description

Techniques of software design and development. Software lifecycle, requirements, formal specification, metrics, design, functional and structural testing, rapid prototyping, complexity, version control, and team management. Software metrics, tools for component-based software development. Team-based, agile, and scrum methodologies emphasized.

Prerequisites

Prerequisite: Grade of C- or better in CS 215 or consent of instructor.

Instructor

Robert Bruce

Learning Outcomes

Upon successful completion of this course, students will be able to:

  1. Design a scalable, relational database schema in MySQL in third normal form.
  2. Apply the MySQL database application programming interface in software applications.
  3. Create dynamically-driven, server-side web page content in HTML5 using the Apache web server and the Common Gateway Interface.
  4. Apply software engineering principles through the entire software development lifecycle from design, implementation, testing, release, and maintenance.
  5. Employ effective skills and techniques to make team-based project management productive within the realm of software development.

Required Texts/Readings

  • Beginning Software Engineering (Second Edition) by Rod Stephens

Course Requirements

Midterm Examination

The midterm exam will cover chapters 1, 2, 3, 4, 5, 6, 7, 8, 9, 13, 14, 15, 16, 17, 18, 19 of Stephen's Beginning Software Engineering. The exam will be closed-book. You may use one A4 sheet of paper (8.5 inches width by 11 inches length) for notes during the midterm examination. You may write notes on both sides of the sheet of paper.

Final Examination

The final exam will cover chapters 10, 11, 12, 20, and 21 of of Stephen's Beginning Software Engineering. The final exam will be comprised of open-ended questions. The exam will be closed-book. You may use one A4 sheet of paper (8.5 inches width by 11 inches length) for notes during the midterm examination. You may write notes on both sides of the sheet of paper.

Grading Information

Assignment Percentage of Grade
In-class exercises 15 %
Project Report 10 %
Project Presentation 10 %
Database Schema 5 %
Programming Assignment 1: Authenticate User 5 %
Programming Assignment 2: Display User Transactions 5 %
Programming Assignment 3: Bid or Sell 5 %
Programming Assignment 4: Display auctions 5 %
Midterm exam
Midterm exam study guide
20%
Final exam
Final exam study guide
20%
TOTAL 100%

† Graded as an individual
‡ Graded as a group (each member of the group gets the same grade)

Determination of Grades

Ultimately this course is graded A, B, C, D, or F. Percentage grades are rounded to the nearest whole number. For example, a grade of 92.4% will be rounded to 92% and result in a grade of "A minus". A grade of 92.5% will be rounded to 93% and result in a grade of "A".

Grading Scale

Percent range Grade
93% to 100% inclusive A
90% to 92% inclusive A-
87% to 89% inclusive B+
83% to 86% inclusive B
80% to 82% inclusive B-
77% to 79% inclusive C+
73% to 76% inclusive C
70% to 72% inclusive C-
67% to 69% inclusive D+
63% to 66% inclusive D
60% to 62% inclusive D-
Below 60% F

Grading Policies

Late assignments

Absent extenuating circumstances (illness, family emergency), late submissions will be accepted under the late policy until the listed "Until" deadline on Canvas. The late policy is minus 10% per day, and never grows more than minus 50% markdown (as long as the assignment is submitted before the listed "Until" deadline on Canvas).

Late exams and quizzes
  • There are no make-up exams.
  • Official proof of emergency required for missing an exam, project, or project presentation.

Course Schedule

Week Topics and Assignments Readings and Deadlines
Week 1:
Tuesday, January 27, 2026
Lecture: Success in CS-370
Supplementary lecture: Github Survival Guide
Exercise 1: Introduction
Chapter 1: Software Engineering From 20,000 Feet (10 pages)
Chapter 2: Before The Beginning (12 pages)
Chapter 3: The Team (19 pages)
Week 1:
Thursday, January 29, 2026
What makes a team effective?
Exercise 2: Why do software projects fail?
 
Week 2:
Tuesday, February 3, 2026
Lecture: Minimum Viable Product
Exercise 3: Minimum_Viable_Product
Chapter 4: Project Management (23 pages)
Chapter 5: Requirements Gathering (32 pages)
Week 2:
Thursday, February 5, 2026
Lecture: Project management
Exercise 4: Creating a PERT chart
Note: Last day to drop classes is Monday, February 9, 2026
Week 3:
Tuesday, February 10, 2026
Exercise 5: Team formation Chapter 6: High-Level Design (34 pages)
Chapter 7: Low-Level Design (25 pages)
Week 3:
Thursday, February 12, 2026
Lecture: Requirements gathering
Exercise 6: FURPS Requirements Gathering
 
Week 4:
Tuesday, February 17, 2026
Lecture: High-level design
Exercise 7: Architectures in high level design
Chapter 8: Security Design (22 pages)
Chapter 17: Predictive Models (17 pages)
Chapter 18: Iterative Models (16 pages)
Week 4:
Thursday, February 19, 2026
Lecture: Low-level design  
Week 5:
Tuesday, February 24, 2026
Lecture: Server-side web applications Chapter 19: RAD (50 pages)
Week 5:
Thursday, February 26, 2026
Lecture: Predictive models
Exercise 8: Limitations of predictive models
 
Week 6:
Tuesday, March 3, 2026
Lecture: Iterative models
Exercise 10: Limitations of the Waterfall model in software development
Chapter 13: Testing (30 pages)
Chapter 14: Deployment (9 pages)
Chapter 15: Metrics (24 pages)
DUE: Database Schema
Week 6:
Thursday, March 5, 2026
Lecture: Rapid Application Development
Exercise 11: Database Schema evaluations
 
Week 7:
Tuesday, March 10, 2026
Lecture: Security in Web and database applications Chapter 9: User Experience Design (32 pages)
Chapter 16: Maintenance (19 pages)
Week 7:
Thursday, March 12, 2026
Lecture: General computer security
Exercise 12: Phishing
 
Week 8:
Tuesday, March 17, 2026
Lecture: Software testing
Exercise 13: Estimating software defects with the Lincoln index
DUE: Programming Assignment 1: Authenticate User
Week 8:
Thursday, March 19, 2026
MIDTERM EXAM  
Tuesday, March 24, 2026 SPRING BREAK  
Thursday, March 26, 2026 SPRING BREAK  
Tuesday, March 31, 2026 César Chavez Day: CAMPUS CLOSED  
Week 9:
Thursday, April 2, 2026
Exercise 14: First code review  
Week 9:
Tuesday, April 7, 2026
Lecture: Deployment Strategies
Exercise 15: Deployment Strategies
Chapter 10: Programming (24 pages)
Week 10:
Thursday, April 9, 2026
Lecture: Software metrics
Exercise 16: Ishikawa diagram
 
Week 10:
Tuesday, April 14, 2026
Lecture: Software maintenance
Exercise 17: Long-term software maintenance
Chapter 11: Algorithms (30 pages)
DUE: Programming Assignment 2: Display User Transactions
Week 11:
Thursday, April 16, 2026
Exercise 18: Second code review  
Week 11:
Tuesday, April 21, 2026
Lecture: User interface and user experience design
Exercise 19: User Experience Design
Chapter 12: Programming Languages (16 pages)
Week 12:
Thursday, April 23, 2026
Lecture: Productive programming
Exercise 20: Refactoring code to improve readability and reliability
 
Week 12:
Tuesday, April 28, 2026
Lecture: Software design patterns
Exercise 21: Defensive programming
Chapter 20: Software Ethics (21 pages)
DUE: Programming Assignment 3: Bid or Sell
Week 13:
Thursday, April 30, 2026
Lecture: Ethics in software development
Exercise 22: Software Ethics (part 1)
 
Week 13:
Tuesday, May 5, 2026
Exercise 23: Software Ethics (part 2) Chapter 21: Future Trends (8 pages)
Week 14:
Thursday, May 7, 2026
Exercise 24: Artificial Intellgience Driven Software Development  
Week 14:
Tuesday, May 12, 2026
Final Project Presentation
Final exam study guide
DUE: Project Report
DUE: Programming Assignment 4: Display auctions
Week 15:
Thursday, May 14, 2026
Final Project Presentation  
May 19, 2026 FINAL EXAM from 1 PM to 3 PM
Note: The final exam covers chapters 10, 11, 12, 20, and 21.