Date
| Topic
| Recitation
| Readings
| Due
(by 3am) |
Game - Introduction and Basic Design Principles |
Jan 11 Week 1 |
Course Introduction
Video (from last semester)
|
GITing Started |
Code Smells
Be a Better Programmer
JavaFX Architecture
Guide to Versioning Systems
|
Plan, Sun
|
Jan 16 Week 2 |
Refactoring and Code Smells
Example: Bins
Video
|
NO RECITATION: SNOW |
OO in One Sentence
Decomposition
Refactoring: Extract Class
|
|
CellSociety - Basic Teamwork and Recognizing Good Design |
Jan 23 Week 3 |
Inheritance
Example: Roulette
Video
|
RPS
Team Meeting
|
Open Closed Principle
Inheritance
Replace Conditional with Polymorphism
|
Complete, Mon
Analysis, Thu
Team Contract, Thu |
Jan 30 Week 4 |
GUIs
Exceptions
Example: Browser
Video
|
Team GIT
Inheritance Review
|
Designing with Exceptions
JavaFX GUI Resources
Isolating Locale-Specific Data
GIT ready: Branching and Merging
|
Plan, Mon |
Feb 6 Week 5 |
Interfaces
Example: Encapsulation
Video
|
Static Code Review |
Why Java Interfaces Are So Very Cool
Designing with Interfaces
Commonality Analysis
Why Getters and Setters are Evil
|
Basic, Mon Team Sprint Report, Tue
Complete, Sun
|
SLogo - Advanced Teamwork and Design Strategies |
Feb 13 Week 6 |
Design Patterns
Designing APIs
Video
|
Team Meeting
|
Josh Bloch on API Design
Introduction to Design Patterns
Refactoring to Patterns
JavaFX Properties and Bindings |
Analysis, Wed
Team Contract, Thu |
Feb 20
Week 7 |
"Advanced" Java
Example: "Advanced"
Video
|
Git: Undoing Changes
Peer API Review
Team Meeting |
Reflection
Regular Expressions
Enumerated Types
Generics |
Plan, Mon |
Feb 27 Week 8 |
Functional Programming
Example: Encapsulation
Example: WordCloud
Video
|
"Advanced" Refactoring |
Functional Programming in Java
Lambda Expression Tutorial
Why Lamba Expressions
Refactoring Loops to Pipelines |
Basic, Wed
Team Report, Thu |
Mar 6 Week 9 |
SOLID Design
No Video
|
Static Code Review |
From STUPID to SOLID
Foundation Patterns
Big Ball of Mud
|
Complete, Fri |
Mar 13 |
SPRING BREAK |
|
|
|
VOOGASalad - Final Project: Putting it All Together |
Mar 20 Week 11 |
What is a Framework?
What is a Game?
(and as a picture)
|
Team Meeting |
Designing a Document Editor
Introducing OO Frameworks
The Structure of Games |
Team Choice, Thu
Analysis, Fri
Team Contract, Fri
|
Mar 27
Week 12 |
"Advanced" Design
Video |
Team Meeting |
Composition vs. Inheritance
Design to Accommodate Change
The Magic of Data Driven Design
Dependency Injection Pattern
|
Plan, Thu |
Apr 3 Week 13 |
Agile Project Management
Agile Project Design
|
TDD Experiment
API Review |
Scrum Guide
Extreme Programming Practices
JUnit Test Infected |
|
Apr 10 Week 14 |
Programming Paradigms
Future of Programming
Video
|
Mid-Point Demo |
Don't Make Me Think
Why Software Sucks
Choosing your Next JVM Language
|
Basic, Tue
Team Report, Wed
Demo, Thu (in class)
|
Apr 17 Week 15 |
Open Source Software
Command Line Principles
Video
|
GIT Shell Scripts
User Testing
Static Code Review |
Small Pieces, Loosely Coupled
Cathedral and Bazaar
Free Software Definition
|
|
Apr 24 Week 16 |
Professionalism
Video
|
NO Recitation |
ACM Code of Ethics
Do Programmers Need a Code of Conduct
True Programmers Never Stop Learning
|
Complete, Sun |
Friday
May 4
9am-12pm |
Final Project Demo |
|
|
Final Demo, Fri (9am)
Analysis, Sun |