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