CompSci 308
Spring 2026
Advanced Software Design and Implementation

Computer Science is a science of abstraction - creating the right model for a problem and devising the appropriate mechanizable techniques to solve it. — A. Aho and J. Ullman

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
Fri 1/23: Journal - Project Analysis
Week 4
Jan 27/29
Separating Model from Views
    Open Closed Principle
Model-View Separation Principle
JUnit Test Infected
JavaFX GUIs (sections 4-5)
 
Week 5
Feb 3/5
APIs and Interfaces
       
Week 6
Feb 10/12
Encapsulation
       
Week 7
Feb 17/19
Design Patterns
       
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