CompSci 308
Spring 2025
Advanced Software Design and Implementation

Simple is better than complex. Complex is better than complicated. — from The Zen of Python by Tim Peters

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 9
Course Overview
GIT in Practice
Example: Conditionals
Example: Bounce
Video: Class Introduction
GITing Started
Making Classes
Clean Code
OO in One Sentence
JavaFX Basics (sections 1-3)
GIT Basics
Sun 1/12: Journal - CompSci Autobiography
Week 2
Jan 14/16
Refactoring and Code Smells
Finding Objects
Example: Bins
Video: Clean Code
Video: Refactoring
Refactoring Single Responsibility Principle
Code Smells
Everything is an Object
Refactoring: Extract Class
Tue 1/14: Breakout - Plan and Basic Start
Fri 1/17: Journal - Habits and Failure
Week 3
Jan 21/23
Abstraction Example: Roulette
Video: Abstractions
Team Meeting Access Control (Encapsulation)
Inheritance and Polymorphism
Refactoring: Replace Conditional
How to Work Well on Teams
Tue 1/21: Breakout - Complete
Fri 1/24: Journal - Project Analysis
Week 4
Jan 28/30
Separating Model from Views
Unit Testing
Example: Browser
Video: GUIs
Video: Testing
Video: GIT Merging
GIT for Teams
Testing
Team Planning
Open Closed Principle
Model-View Separation Principle
JUnit Test Infected
JavaFX GUIs (sections 4-5)
Tue 1/28: Cell Society - Plan
Fri 1/31: JournalStarting and Ethics
Week 5
Feb 4/6
APIs and Interfaces
Exceptions
Example: Browser (continued)
Java Time and Dates
Java Collections
Java Iterable and Iterator
Video: Exceptions
Video: APIs
Making an API
Team Planning
Josh Bloch on API Design
Throwing, Designing Exceptions
Java Interfaces Are So Very Cool
Towards Ethics by Default
Tue 2/4: Cell Society - Basic and Test
Fri 2/7: JournalTesting
Week 6
Feb 11/13
Encapsulation
"Advanced" Java
Example: Encapsulation
Video: Encapsulation
Video: Reflection
"Advanced" Java
Team Planning
Liskov Substitution Principle
Why Lamba Expressions
Benefits of Immutable Objects
Reflection
Fri 2/14: JournalMidpoint Team Review
Week 7
Feb 18/20
Design Patterns
GUI Testing
Example: GUI Testing
Video: Patterns and Testing
NO Lab Meeting
Team Planning
Introduction to Design Patterns
Dependency Inversion Principle
Design by Contract
User Interface Testing with TestFX
Tue 2/18: Cell Society - General and Robust
Fri 2/21: JournalEthics (Professional)
Week 8
Feb 25/27
SOLID Design
Logging
Example: Bins (with Logging)
Video: Logging, Maven, CI Pipeline
GIT Undo
Patterns and API Design
Team Planning
Interface Separation Principle
Java Logging Best Practices
Refactoring to Patterns
Ethical Issues in Software Development
Fri 2/28: JournalEthics (Personal)
Week 9
Mar 4/6
Developing with LLMs
Ethics

Project Presentation Design Smells
Foundation Patterns
ChatGPT Prompts for Coding Tasks
Coding and Coping with ChatGPT
Tue 3/4: Cell Society - Change
Thu 3/6: In class Presentation
10 - Mar 11/13
SPRING BREAK        
Week 11
Mar 18/20
Agile Project Management Video: Agile Development Team Meeting
DUI Team Exercises!
Designing a Document Editor
Introducing OO Frameworks
The Structure of Games
Teamwork is an Individual Skill
Mon 3/17: JournalFinal Team Review
Fri 3/21: Journal - Project Analysis
Week 12
Mar 25/27
Agile Project Design
"Advanced" Design
Video: Advanced Design
Video: Extreme Programming
Ethics: Coding Interviews
Team Planning
Magic of Data Driven Design
Prefer Composition over Inheritance
Dependency Injection Pattern
UI Software Architecture
Fri 3/28: OOGASalad - Plan
Week 13
Apr 1/3
Streams

Example: WordCloud
Video: Streams
Ethics: Programmer Burnout
and Mental Health
Sprint Management:
Demo,
Retrospective,
Planning
Functional Programming in Java
Refactoring Loops with Pipelines
Mental Health in Software Engineering
Dark Side of Software Development
Programmers Never Stop Learning
Wed 4/2: OOGASalad - Sprint 1
Fri 4/4: Journal - Ethics in the News
Week 14
Apr 8/10
Command Line Principles
DevOps
Video: Command Line Ethics: Open Source
Sprint Management:
Demo,
Retrospective,
Planning
Unix Philosophy
What Should Be Configurable?
Ultimate Guide on DevOps
What is Free Software?
Wed 4/9: OOGASalad - Sprint 2
Fri 4/11: Journal - Midpoint Project Review
Week 15
Apr 15/17
Alumni Panel
  Sprint Management:
TA Feedback,
Retrospective,
Planning
Troubleshooting vs Debugging
Accessible Design Means Better Design
The Moral Compass
Engineering for Equity
Wed 4/16: OOGASalad - Sprint 3
Fri 4/18: Journal - Improvement Reflection
Week 16
Apr 22
Wrap-Up   NO Lab Meeting Four Pillars of OO Programming
Extreme (Programming) Thoughts
Do Programmers Need a Code of Conduct?
API-First World (comic book!)
Fri 4/25: Journal - Final Team Review
Sun 4/27: OOGASalad - Complete
Fri, May 2 Final Project Demos, in person
2-5pm
  Final Presentation   Fri 5/2: OOGASalad - Demo (in class)
Sun 5/4: Journal - Project Anaysis