| Date
| Topics |
Examples |
Lab |
Readings |
Due |
| Basic Design Principles |
| 1 - Jan 21 |
Course Overview
Video |
Bounce |
GITing Started |
Clean Code
OO in One Sentence
JavaFX
GIT Commit Best Practices
|
Journal - CompSci Autobiograhpy, Sat Breakout - Plan, Sun
|
| 2 - Jan 26 |
Refactoring and Code Smells
Tue Video
Thu Video
|
Bins |
Decomposition |
Code Smells
Everything is an Object
Refactoring: Extract Class
Single Responsibility Principle
|
Journal - Reflection, Thu
Breakout - Complete, Sun
|
| Design Using Abstractions |
3 - Feb 2
|
Abstraction: Inheritance and Polymorphism
Tue Video
Thu Video
|
Roulette |
Team Meeting |
Open Closed Principle
Four Pillars of OOP
Inheritance
Replace Conditional with Polymorphism
|
Cell Society - Preparation, Wed
Cell Society - Team Contract, Thu
Journal - Project Analysis, Fri
Cell Society - Plan, Sun
|
4 - Feb 9
|
Class Variations: Enums,
Generics
GUIs
Tue Video
Thu Video
|
Spike |
GIT for Teams |
GIT ready: Branching and Merging
JavaFX GUI Resources
Exceptions and
Enumerated Types
Managing Group Projects
|
Journal - Reflection, Thu Cell Society - Basic, Sun |
| 5 - Feb 16 |
Exceptions
Encapsulation
Tue: Video
|
Encapsulation |
Code Review |
Liskov Substitution Principle
Write Better Code With OOP Concepts
Why Java Interfaces Are So Very Cool
Designing with Exceptions
|
Journal - Teamwork Analysis, Fri
Cell Society - Complete, Sun
|
| Design Using APIs and Testing |
6 - Feb 23
|
Designing APIs
Tue: Video
Thu: Video |
Java Collections
Java Time and Dates
|
Team Meeting |
Josh Bloch on API Design
Model-View-Controller (MVC)
Designing with Interfaces
Design by Contract
|
SLogo - Preparation, Wed
SLogo - Team Contract, Thu
Journal - Project Analysis, Fri
|
7 - Mar 2
|
Design Patterns
TDD and Unit Testing
Tue: Video
Thu: Video |
Spike |
Testing |
Introduction to Design Patterns
Dependency Inversion Principle
JUnit Test Infected
Managing Group Relationships
|
SLogo - Plan, Tue
Journal - Positive Outcome, Thu
|
8 - Mar 9
|
NO CLASS: Wellness Break
Thu: Video |
Advanced
Encapsulation (revised)
|
Advanced |
Reflection
Why Lamba Expressions
Lambda Expressions
User Interface Testing with TestFX
|
Journal - Reflection, Thu
SLogo - Basic, Fri
|
| 9 - Mar 16 |
Design Smells
Tue: Video
Thu: Video |
|
Code Review |
From STUPID to SOLID
Refactoring to Patterns
Big Ball of Mud
Foundation Patterns |
Journal - Teamwork Analysis, Fri
SLogo - Complete, Sun
|
| Putting it All Together |
10 - Mar 23
|
Agile Project Management
Agile Project Design
Tue: Video
Thu: Video
|
|
Team Meeting |
Designing a Document Editor
Introducing OO Frameworks
Scrum Guide
Extreme Programming Practices
|
OOGA - Team Contract, Thu
Journal - Project Analysis, Fri
|
11 - Mar 30
|
"Advanced" Design
Tue: Video
Thu: Video |
|
Planning Game
Team Meeting
Progress Presentation |
Composition vs. Inheritance
Magic of Data Driven Design
Dependency Injection Pattern
UI Software Architecture |
OOGA - Plan, Thu
Journal - Reflection, Fri
|
12 - Apr 6
|
Ethics and
Professionalism
Google v. Oracle Ruling
Ethics: Guest Video by
Sarah Rispin Sedlak, J.D., Ethical Technology Program
Ethics: My Video
Streams: Video |
Advanced (revised) |
Planning Game
Progress Presentation
|
ACM Code of Ethics
Towards Ethics By Default
Functional Programming in Java
Refactoring Loops with Pipelines
|
OOGA - Sprint #1, Thu
Journal - Ethics, Fri
|
13 - Apr 13
|
Command Line Principles
Open Source Software
Tue: Video |
|
Planning Game
Team Meeting
Progress Presentation |
Small Pieces, Loosely Coupled
Cathedral and Bazaar
Agile Approach to Architecture
Evolution in Software Delivery
|
Team Midpoint Report, Tue
OOGA - Sprint #2, Thu
Journal - Improvement, Fri |
14 - Apr 20
|
General Software Design
Tue: Video
|
|
|
Four Pillars of OOP
Troubleshooting vs Debugging
Java at 25
True Programmers Never Stop Learning
|
Journal - Teamwork Analysis, Fri
OOGA - Complete, Sun
|
Week of
Apr 26 |
Final Project Demos |
|
|
|
OOGA - Demo, Thu
Journal - Project Analysis, Fri
|