CompSci 307
Fall 2021
Software Design and Implementation

The exact order and details of these 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.


Date Topics Examples/VideosLab Readings Due
Introduction and Basic Design Principles through Refactoring
Week 1
Aug 23/25
Course Overview
Feedback and Habits
What are Objects
Debugging
OpenJFX Animation
Clean Code
OpenJFX Animation
Software Install video
GIT Setup video
Checkin
GITing Started
Designing
Frogger
Everything is an Object
Debugging
JavaFX (sections 1-3)
Visual Guide to Version Control

 

Week 2
Aug 30/
Sep 1
Integrity
Clean Code
Code Smells
Refactoring
Bins
IntelliJ's Debugger videos
Video of Lecture
Debugging
Hangman
Clean Code
OO in One Sentence
Code Smells
Refactoring: Extract Class
Monday, Aug 30
- CompSci Autobiography
- Fluxx Objects
- Breakout Game
Week 3
Sep 6/8
Equity
Inheritance
Design Principles

Roulette
Video of Lecture
Video from start of Lab
GUI Layout video
Debugging Inheritance and Undoing GIT Mistakes
Maze
Single Responsibility Principle
Access Control (Encapsulation)
Inheritance and Polymorphism
Refactoring: Replace Conditional
Monday, Sep 6
- Reflection
- Fluxx Use Cases
- Revise Breakout Game
- Hangman Game
Week 4
Sep 13/15
Ownership Mindset
Testing
Exceptions
Bins with Testing
Video of Lecture
Video from start of Lab
Exceptions Video
Testing
Browser
JUnit Test Infected
Model-View Separation Principle
Exceptions
Monday, Sep 13
- Ethics
- Fluxx Changes
- Revise Hangman Game
- Maze Solver
Basic Teamwork and Recognizing Good Design
Week 5
Sep 20/22
Teamwork
Open Close Principle
Browser with Resources
Video of Lecture
Git Merge Video
Conventions Video

Team Meeting
Preparation Questions
Open-Closed Principle
Write Better Code With OOP
Git Branching
Effective Teamwork
Monday, Sep 20
- Schedule Survey
- Improvement Analysis
- Fluxx Design Analysis
- Revise Maze Solver
- NanoBrowser
Week 6
Sep 27/29
Software Design Mindset
Liskov Substitution Principle
TestFX
TestFX
Video of Lecture
Video from start of Lab
TDD
Testing
Liskov Substitution Principle
Designing with Exceptions
User Interface Testing with TestFX
Monday, Sep 27
- Starting
Friday, Oct 1
- OOLALA, Basic

Week 7
Oct 6
FALL BREAK (no lecture)   Code Review    
Advanced Teamwork and Design Strategies
Week 8
Oct 11/13
Encapsulation Mindset
MVC
Interface Separation Principle
Lambdas
Encapsulation
Video of Lecture
Team Meeting MVC
Interface Separation Principle
Lambda Expressions
Managing Conflict in Teams
Monday, Oct 11
- Team Review
- OOLALA, Complete
Week 9
Oct 18/20
Flexibility Mindset
Dependency Inversion Principle
Reflection
Reflection
Video of Lecture
Lambdas and Reflection Java Interfaces Are So Very Cool
Dependency Inversion Principle
Reflection
Ethical Responses to Cyber Crime
Monday, Oct 18
- Project Analysis
- Cell Society, Plan
Tuesday, Oct 19
- Cell Society, Test
Week 10
Oct 25/27
SOLID Mindset
Design Smells
Ethics
Video of Lecture Code Review From STUPID to SOLID
Respecting Levels of Abstraction
Why Lamba Expressions
Monday, Oct 25
- Ethics in the News
Tuesday, Oct 26
- Cell Society, Basic
Final Project: Putting it All Together
Week 11
Nov 1/3
API Design
Agile Planning
Agile Planning Video
Video of (old) OOGA Overview
API Video with Discussion
Team Meeting API Design
Agile Project Management
Introducing OO Frameworks
Teamwork is an Individual Skill
Monday, Nov 1
- Team Review
- Cell Society, Change
Week 12
Nov 8/10
Design Patterns
Data Driven Design
Unix Philosophy
Video from start of Lab Ethics: Google v. Oracle Ruling
Design Patterns
Introduction to Design Patterns
Composition vs. Inheritance
The Magic of Data Driven Design
Refactoring to Patterns
Monday, Nov 8
- Project Analysis
- OOGA, Plan
Week 13
Nov 15/17
Logging
Streams
Bins with Logs
Wordcloud with Streams
Video of Lecture
Video from start of Lab
Accessibility Video
Ethics: GitHub CoPilot
Retrospective and Planing
Functional Programming in Java
Refactoring Loops with Pipelines
Java Logging Best Practices
Maven: A Build Automation Tool
Monday, Nov 15
- Ethical Tech Takeover
- OOGA, Test
Week 14
Nov 22/24
THANKSGIVING
(no lecture or lab)
Workflows of Refactoring by Martin Fowler
Therapeutic Refactoring by Katrina Owen
 

 

Tuesday, Nov 22
- Improvement Review
- OOGA, Basic
Week 15
Nov 29/
Dec 1
General Software Design
Future of Java
Security
Video of Lecture
Video from start of Lab
Ethics: Open Source, Maintainance and Inclusivity
User Testing
API Review
Code Review
Four Pillars of OOP
Secure Coding Guidelines for Java
Java at 25
The API-First World
Monday, Dec 6
- Team Review
- OOGA, Complete
Sun
Dec 12
9-12pm
Final Project Demo     True Programmers Never Stop Learning
Designing a Document Editor
Do Programmers Need a Code of Conduct
Monday, December 13
- Project Analysis
- OOGA, Demo