CompSci 308
Spring 2026
Advanced Software Design and Implementation

The interface of a class is the one place where we assert all of the assumptions that a client may make about any instances of the class; the implementation encapsulates details about which no client may make assumptions. — Grady Booch

The exact order and details of topics is subject to change during the semester based on the pace needed, but we will try to set them at least two weeks in advance.
Materials discussed in class and lecture recordings will be posted here.


Date Topics Examples/Videos Lab Readings Due
Week 1
Jan 8
Course Overview
GIT in Practice
Example: Conditionals
Example: Bounce
GITing Started
Making Classes
Clean Code
OO in One Sentence
JavaFX Basics (sections 1-3)
GIT Basics
Sun 1/11: Journal - CompSci Autobiography
Week 2
Jan 13/15
Refactoring and Code Smells

Example: Bins Refactoring Single Responsibility Principle
Code Smells
Everything is an Object
Refactoring: Extract Class
Tue 1/13: Breakout - Plan and Basic Start
Fri 1/16: Journal - Habits and Failure
Week 3
Jan 20/22
Abstraction Example: Roulette Team Meeting
Access Control (Encapsulation)
Inheritance and Polymorphism
Refactoring: Replace Conditional
How to Work Well on Teams
Tue 1/20: Breakout - Complete
Sat 1/24: Journal - Project Analysis
Week 4
Jan 27/29
JFX GUIs Video
Separating Model from Views
Unit Testing
Example: Browser GIT for Teams
Testing
Team Planning
Open Closed Principle
Model-View Separation Principle
JUnit Test Infected
JavaFX GUIs (sections 4-5)
Tue 1/27: Cell Society - Plan
Fri 1/30: JournalStarting and Ethics
Week 5
Feb 3/5
APIs and Interfaces
Exceptions
Example: Browser (continued)
Java Time and Dates
Java Iterable and Iterator
Making an API
Team Planning
Josh Bloch on API Design
ThrowingDesigning Exceptions
Java Interfaces Are So Very Cool
Towards Ethics by Default
Tue 2/3: Cell Society - Basic and Test
Fri 2/6: JournalTesting
Week 6
Feb 10/12
Encapsulation
    Liskov Substitution Principle
Why Lamba Expressions
Benefits of Immutable Objects
Reflection
Fri 2/13: Journal - TBA
Week 7
Feb 17/19
Design Patterns
      Tue 2/17: Cell Society - General and Robust
Fri 2/20: Journal - TBA
Week 8
Feb 24/26
SOLID Design
       
Week 9
Mar 3/5
Ethics        
10 - Mar 10/12
SPRING BREAK        
Week 11
Mar 17/19
Agile Project Management   Team Meeting
   
Week 12
Mar 24/26
Agile Project Design
       
Week 13
Mar 31/Apr 2
TBD

       
Week 14
Apr 7/9
TBD
       
Week 15
Apr 14/16
TBD
       
Week 16
Apr 21
Wrap-Up   NO Lab Meeting    
Fri, May 1 Final Project Demos, in person
7-10pm