Date
| Topic
| Lab
| Readings
| Due |
Game - Introduction and Basic Design Principles |
Jan 10 Week 1 |
Course Introduction
What is GIT?
Video
|
GITing Started |
Clean Code
OO in One Sentence
OpenJFX/JavaFX Tutorial
Guide to Versioning Systems
|
Plan, Sun
|
Jan 15 Week 2 |
Refactoring and Code Smells
Example: Bins
Video
|
Finding Classes |
Code Smells
Decomposition
Refactoring: Extract Class
Your Manual to Markdown
|
Complete, Sun |
Simulation - Basic Teamwork and Recognizing Good Design |
Jan 22 Week 3 |
Inheritance
Example: Roulette
Video
|
RPS
Team Meeting |
Open Closed Principle
Inheritance
Replace Conditional with Polymorphism
Commonality Analysis |
Pre-Meeting Questions, Wed
Team Contract, Thu
Analysis, Fri
Plan, Sun
|
Jan 29 Week 4 |
GUIs
Example: Browser
Video |
GIT for Teams
Inheritance Review
|
GIT ready: Branching and Merging
JavaFX GUI Resources
Enumerated Types
Isolating Locale-Specific Data
|
|
Feb 5 Week 5 |
Exceptions
Interfaces
Example: Encapsulation
Video |
Code Review |
Why Java Interfaces Are So Very Cool
Designing with Interfaces
Designing with Exceptions
Write Better Code With OOP Concepts
|
Basic, Mon
Team Sprint Report, Tue |
Parser - Advanced Teamwork and Design Strategies |
Feb 12 Week 6 |
Design Patterns
Designing APIs |
Team Meeting |
Josh Bloch on API Design
Introduction to Design Patterns
Refactoring to Patterns
Model-View-Controller (MVC) |
Complete, Mon
Pre-Meeting Questions, Wed
Team Contract, Thu
Analysis, Fri
|
Feb 19
Week 7 |
Modules
Example: Browser Revisited
Video
|
GIT: Undoing Changes
Longest Method Review
Peer API Review |
Java 9 Modules
Regular Expressions
JavaFX Properties and Bindings
Why Lamba Expressions |
Plan, Mon |
Feb 26 Week 8 |
"Advanced" Java
Example: "Advanced"
Video |
"Advanced" Refactoring |
Reflection
Lambda Expressions
Generics
Annotations |
Basic, Wed
Team Report, Thu
|
Mar 5 Week 9 |
SOLID Design
Video |
Code Review |
From STUPID to SOLID
Foundation Patterns
Big Ball of Mud |
Complete, Fri |
Mar 12 |
SPRING BREAK |
NO Lab |
|
|
Final - Putting it All Together |
Mar 19 Week 11 |
What is a Framework?
What is a Game? (and as a picture)
Agile Project Management
Video
|
Team Meeting
|
Designing a Document Editor
Introducing OO Frameworks
The Structure of Games
Scrum Guide |
Pre-Meeting Questions, Wed
Team Choice, Thu
Team Contract, Thu
Analysis, Fri |
Mar 26
Week 12 |
"Advanced" Design
No Video
|
Team Meeting |
Composition vs. Inheritance
Design to Accommodate Change
The Magic of Data Driven Design
Dependency Injection Pattern |
Plan, Thu |
Apr 2 Week 13 |
Agile Project Design
Example: Testing
Video |
GIT: Issues and Tags
TDD Experiment
|
Extreme Programming Practices
Agile Approach to Software Architecture
JUnit Test Infected |
|
Apr 9 Week 14 |
Maven
Streams
Example: WordCloud
Video
|
Midpoint Demo |
Build Automation with Maven
Functional Programming in Java
Refactoring Loops to Pipelines |
Basic, Tue
Team Sprint Report, Wed
Demo, Thu (in class) |
Apr 16 Week 15 |
Open Source Software
Command Line Principles
Cloud Software
Video |
Docker and AWS
Code Review
|
Small Pieces, Loosely Coupled
Cathedral and Bazaar
Evolution in Software Delivery |
|
Apr 23 Week 16 |
Security
Professionalism
|
NO Lab |
Secure Coding Practices in Java
Do Programmers Need a Code of Conduct
True Programmers Never Stop Learning |
Complete, Sun |
Friday
May 3
2-5pm |
Final Project Demo |
|
|
Final Demo, Wed (in class)
Analysis, Sun |