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 |