CompSci 308
Fall 2019
Advanced 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 Topic Example Recitation Readings Due
Game - Introduction and Basic Design Principles
Aug 27
Week 1
Course Overview
What is GIT?
Video
Bins GITing Started Clean Code
OO in One Sentence
OpenJFX/JavaFX Tutorial
Guide to Versioning Systems
Plan, Sat
Sep 3
Week 2
Refactoring and Code Smells
Video
Bins Decomposition Code Smells
Decomposition
Refactoring: Extract Class
Your Manual to Markdown
Complete, Sun
Simulation - Basic Teamwork and Recognizing Good Design
Sep 10
Week 3
Inheritance
Video
Roulette Team Meeting Open Closed Principle
Inheritance and Polymorphism
Replace Conditional with Polymorphism
Commonality Analysis
Planning Questions, Wed
Team Contract, Thu
Analysis, Fri
Plan, Sun
Sep 17
Week 4
GUIs
Class Variations: Exceptions,
Enums, and Generics
Video
Browser
Spike
GIT for Teams GIT ready: Branching and Merging
JavaFX GUI Resources
Isolating Locale-Specific Data
Basic, Sun
Sep 24
Week 5
Encapsulation
Video
Encapsulation Code Review Why Java Interfaces Are So Very Cool
Designing with Interfaces
Designing with Exceptions
Write Better Code With OOP Concepts
Team Sprint Report, Tue
Complete, Sun
Parser - Advanced Teamwork and Design Strategies
Oct 1
Week 6
Interfaces
Designing APIs
Design Patterns
Video
  Team Meeting Josh Bloch on API Design
Introduction to Design Patterns
Dependency Inversion Principle
Model-View-Controller (MVC)
Planning Questions, Wed
Team Contract, Thu
Analysis, Fri
Oct 8
Week 7
No class (FALL BREAK)
Spike Team Meeting
Peer API Review
Regular Expressions
JavaFX Properties and Bindings
Why Lamba Expressions
Plan, Fri
Oct 15
Week 8
"Advanced" Java
Video
"Advanced" Refactoring using
"Advanced" Java
Reflection
Lambda Expressions
Annotations
Basic, Sun
Oct 22
Week 9
SOLID Design
Video
  GIT: Undoing Changes
Code Review
From STUPID to SOLID
Refactoring to Patterns
Foundation Patterns
Team Sprint Report, Tue
Final - Putting it All Together
Oct 29
Week 10
What is a Framework?
What is a Game? (and as a picture)
Agile Project Management
No Video
  Team Meeting Designing a Document Editor
Introducing OO Frameworks
The Structure of Games
Scrum Guide
Complete, Tue
Planning Questions, Wed
Team Choice
, Thu
Team Contract, Thu
Analysis, Fri
Nov 5
Week 11
"Advanced" Design
Video
Spike GIT: Issues and Tags
Team Meeting
Composition vs. Inheritance
Design to Accommodate Change
Dependency Injection Pattern
UI Software Architecture
Plan, Fri
Nov 12
Week 12
Streams
Maven
Agile Project Design
Video
WordCloud
Unit Testing
Unit Testing and TDD JUnit Test Infected
Functional Programming in Java
Refactoring Loops to Pipelines
Build Automation with Maven
 
Nov 19
Week 14
Making Testable Code
David Jaramillo, Lead Data Engineer, IBM
  Mid-Point Demo Small Pieces, Loosely Coupled
Troubleshooting vs Debugging
Cathedral and Bazaar
Evolution in Software Delivery
Basic, Tue
Team Sprint Report, Wed
Demo, Thu (in class)
Nov 26
Week 13
No class/lab   THANKSGIVING    
Dec 3
Week 15
General Software Design
Professionalism
Video
  User Testing
Code Review
Four Pillars of OOP
Secure Coding Practices in Java
Do Programmers Need Code of Conduct
True Programmers Never Stop Learning
Complete, Sun
Dec 11
Wed 2-5pm
Final Project Demo       Final Demo, Wed (in class)
Analysis, Sun