| Date
| Topic
| Example
| Discussion
| Readings
| Due |
| Design Using Classes |
Jan 9 Week 1 |
Course Policies
Classes and Encapsulation
Interfaces and Flexibility
Video |
Bins |
NO Discussion |
Clean Code
OO in One Sentence
Decomposition
|
|
Jan 14 Week 2 |
Designing to Organize
Coding to Communicate
Code Smells and Refactoring
Video |
Bins |
GIT: Basics
Exercise: Decomposition |
Code Smells
Refactoring: Extract Class
Guide to Versioning Systems
|
Data, Basic, Wed |
| Design Using Abstractions |
Jan 21 Week 3 |
MLK, Jr Day — NO Class |
|
Exercise: Team JavaFX
Video
|
Making Classes
OpenJFX/JavaFX Tutorial
GIT ready: Branching and Merging
|
Data, Complete, Tue
Data, Analysis, Sat
|
Jan 28 Week 4 |
OO Design: Collaborating Objects
Video
|
Hangman |
Quiz
Exercise: Making OO Classes |
Open Closed Principle
Write Better Code With OOP Concepts
|
|
Feb 4 Week 5 |
Creating Abstractions: Inheritance and Interfaces
Video
|
Roulette |
Exercise: Inheritance |
Inheritance and Polymorphism
Why Java Interfaces Are So Very Cool
Replace Conditional with Polymorphism
|
Game, Basic, Mon |
| Design Using SOLID Principles |
Feb 11 Week 6 |
Unit Testing
Video
|
Money |
Exercise: Unit Testing
Team Meeting
|
JUnit Test Infected
Unit Testing Best Practices
TDD with IntelliJ
|
Game, Complete, Mon
Simulation, Team Contract, Wed
Game, Analysis, Fri
|
Feb 18
Week 7 |
Design Principles GUIs
Video |
Browser |
GIT: Undoing Changes
Exercise: TDD
|
MVC
Dependency Inversion Principle
JavaFX: Making Client Apps
Isolating Locale-Specific Data
|
Simulation, Test, Thu |
Feb 25 Week 8 |
Class Variations: Enums, Generics, Exceptions
Video |
Variations |
Quiz
Exercise: Exceptions
Exercise: Enumerated Types
|
Designing with Exceptions
Exceptions
Enumerated Types
Generics
|
Simulation, Basic, Thu
Simulation, Team Report, Fri |
Mar 4 Week 9 |
OO Design: Encapsulation
SOLID Design
Video |
Encapsulation |
Exercise: Refactoring |
From STUPID to SOLID
Commonality Analysis
Why Lamba Expressions
|
Simulation, Complete, Fri |
| Mar 11 |
SPRING BREAK |
|
|
|
|
| Design Using APIs |
Mar 18 Week 11 |
APIs and APIE
Video |
DNA |
Exercise: APIs
Exercise: Refactoring
|
Josh Bloch on API Design
Four Pillars of OOP
Why Encapsulation Is Fundamental to OOP |
Simulation, Refactoring, Sat |
Mar 25
Week 12 |
Agile Project Management
Video
|
|
Team Meeting |
Scrum Guide
Teamwork is an Individual Skill
Extreme Programming Practices
|
Simulation, Analysis, Tue |
Apr 1 Week 13 |
"Advanced" Design
Design Patterns
Video
|
|
Quiz
GIT: Issues and Tags
Presentation: Design Plan |
Composition vs. Inheritance
Introduction to Design Patterns
Refactoring to Patterns
The Magic of Data Driven Design |
Final, Plan, Tue |
Apr 8 Week 14 |
"Advanced" Java
Video |
Calculator |
Presentation: Progress Demo
Exercise: Reflection
|
Reflection
JavaFX Properties and Bindings
Why Lamba Expressions
|
Final, Sprint #1, Tue
Final, Sprint Retorspective, Wed |
Apr 15 Week 15 |
Testing Levels and Acceptance Testing
Packaging and Deploying Software
Video |
TestFX |
Presentation: Progress Demo
Exercise: Refactoring
|
Test Automation Strategy
Build Automation with Maven
Evolution in Software Delivery
|
Final, Sprint #2, Tue
Final, Sprint Retorspective, Wed |
Apr 22 Week 16 |
Quiz
Security
Professionalism
Video |
|
NO Discussion |
Secure Coding Practices in Java
Do Programmers Need a Code of Conduct
True Programmers Never Stop Learning |
Final, Complete, Fri |
| Apr 29 |
Final Project Demos: 12-7pm |
|
|
|
Final, Examples, Mon
Final, Analysis, Fri |