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 |
Recitation |
Readings |
Due |
Game - Introduction and Basic Design Principles |
Aug 28 Week 1 |
Course Introduction
What is GIT?
Video
|
GITing Started
|
Be a Better Programmer
Code Smells
JavaFX Architecture
Guide to Versioning Systems
|
Plan, Sat |
Sep 4 Week 2 |
Refactoring and Code Smells
Example: Bins
Video
|
Refactoring Hangman |
OO in One Sentence
Decomposition
Refactoring: Extract Class
|
Complete, Sun
|
CellSociety - Basic Teamwork and Recognizing Good Design |
Sep 11 Week 3 |
Inheritance
Example: Roulette
Video
|
NO LAB |
Open Closed Principle
Inheritance
Replace Conditional with Polymorphism
Commonality Analysis
|
Team Contract, Thu
Analysis, Fri
Plan, Sun
|
Sep 18 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
|
Basic, Sun |
Sep 25 Week 5 |
Interfaces
Exceptions
Example: Encapsulation
Video
|
Code Review |
Why Java Interfaces Are So Very Cool
Designing with Interfaces
Designing with Exceptions
Why Getters and Setters are Evil
|
Team Sprint Report, Tue Complete, Sun
|
SLogo - Advanced Teamwork and Design Strategies |
Oct 2 Week 6 |
Design Patterns
Designing APIs
Video |
Pre-meeting Questions
Team Meeting |
Josh Bloch on API Design
Introduction to Design Patterns
Refactoring to Patterns
Model-View-Controller (MVC)
|
Team Contract, Thu
Analysis, Fri
|
Oct 9 Week 7 |
No class (FALL BREAK)
Video
|
GIT: Undoing Changes
Peer API Review
Team Meeting |
Java 9 Modules
Regular Expressions
JavaFX Properties and Bindings
Why Lamba Expressions
|
Plan, Fri |
Oct 16 Week 8 |
"Advanced" Java
Example: "Advanced"
Video |
"Advanced" Refactoring |
Reflection
Lambda Expressions
Generics
Annotations
|
Basic, Sun |
Oct 23 Week 9 |
SOLID Design
Video
|
Code Review |
From STUPID to SOLID
Foundation Patterns
Big Ball of Mud
|
Team Report, Tue
Complete, Sun
|
VOOGASalad - Final Project: Putting it All Together |
Oct 30 Week 10 |
What is a Framework?
What is a Game?
(and as a picture)
Agile Project Management
Video
|
Pre-meeting Questions
Design a Game
Team Meeting
|
Designing a Document Editor
Introducing OO Frameworks
The Structure of Games
Scrum Guide
|
Team Choice, Thu
Team Contract, Thu
Analysis, Fri
|
Nov 6 Week 11 |
"Advanced" Design
Video |
GIT: Issues and Tags
Team Meeting |
Composition vs. Inheritance
Design to Accommodate Change
The Magic of Data Driven Design
Dependency Injection Pattern
|
Plan, Fri |
Nov 13 Week 12 |
Agile Project Design
Example: Testing
Video
|
TDD Experiment
Peer API Review
|
Extreme Programming Practices
Agile Approach to Software Architecture
JUnit Test Infected
|
|
Nov 20 Week 13 |
No class |
THANKSGIVING |
|
Basic, Tue |
Nov 27 Week 14 |
Maven
Streams
Example: WordCloud
Video
|
Mid-Point Demo |
Build Automation with Maven
Functional Programming in Java
Refactoring Loops to Pipelines
GIT Submodules
|
Team Sprint Report, Tue
Demo, Thu (in class)
|
Dec 4 Week 15 |
Open Source Software
Command Line Principles
Java Security
Professionalism
|
User Testing
Code Review |
Small Pieces, Loosely Coupled
Cathedral and Bazaar
Secure Coding Practices in Java
Do Programmers Need a Code of Conduct
True Programmers Never Stop Learning
|
Complete, Sun |
Dec 12
Wed 7-10pm |
Final Project Demo |
|
|
Final Demo, Wed
Analysis, Sun |