ECE 651K (2025 Spring)

Course Description

This course focuses on software skills required in developing larger-scale software projects: design, testing, and teamwork. The course is built around learning fundamental design principles, and then seeing how they appear at different scales. We will start with a small-scale project, i.e., a few classes, and we will then explore design patterns and revisit testing. We will move to larger and larger scales, until we are considering system architecture, and revisit similar principles throughout.

Course Schedule

WeekDateClass topicAssignments/Projects
1Jan. 7Introduction, Overview, Course Policies, etc. ↓ 
 Jan. 9Design Principles ↓ 
2Jan. 14From C++ to Java ↓ 
 Jan. 16Object-Oriented Design Fundamentals ↓Release Assignment 1
3Jan. 20Software Design Process: Requirement Definition ↓ 
 Jan. 22Software Design Process: Waterfall vs. Agile, Task Breakdown, Estimating Work ↓Release UML Presentation
4Jan. 28NO CLASS - Spring Festival 
 Jan. 30NO CLASS - Spring Festival 
4Feb. 5Software Testing: Blackbox, Whitebox, Mutation ↓ 
 Feb. 7Design Patterns: UML, Alarm Clock Activity, Observer + Adapter ↓UML Presentation Slides Due
(Feb. 6, Thursday)
5Feb. 11Design Patterns: Abstract Factory, Doule Checking Locking, Singleton, Visitor ↓ 
 Feb. 13Design Patterns Practice ↓Assignment 1 Due
6Feb. 18Bad Design: Code Smells, Technical Debt, Fixing Bad Design: Refactoring, Regression Testing ↓ 
 Feb. 20Refactoring Practice (Reference answers ↓)Release: Assignment 2
7Feb. 25Teamwork, Feature Branches, Code Review ↓ 
 Feb. 27DevOps, Continuous Integration (CI) / Continuous Delivery (Deployment) (CD), Blue / Green Deployment, Canary Release, Scrum ↓ 
8Mar. 4Software Testing (Cont.): Stubs, Spies, Mocks, Unit, Integration, System ↓Release: Project Phase 1
 Mar. 6MIDTERM EXAMAssignment 2 Due
 Mar. 11NO CLASS - Spring Recess 
 Mar. 13NO CLASS - Spring Recess 
9Mar. 18Model-View-Controller Design Pattern, User Interfaces ↓ 
 Mar. 21UI (Cont.) 
10Mar. 25UI / User Experience (UX) Human Factors ↓Project Phase 1 (UML and Code) Due
Release: Project Phase 2
 Mar. 27UI / UX Testing ↓ 
11Apr. 1Design Modules, Interfaces ↓ 
 Apr. 3System Architecture: 3-Tier, Monolith, Event-Driven ↓ 
12Apr. 8System Components: Frameworks, Object Relational Mappers (ORMs) ↓Project Phase 2 Due
Release: Project Phase 3
 Apr. 10System Architecture - Modern Architectures: Micro-services;
Project Phase 2 Demo
 
13Apr. 15Security 
 Apr. 17Maintenance, Design Metrics 
14Apr. 22Maintenance, Design Metrics (Cont.)Project Phase 3 Due
 Apr. 24Course Review and Project Presentation