Date
| Topics |
Examples/Videos |
Lab |
Readings |
Due |
Basic Design Principles |
1 - Jan 12 |
Course Overview
OpenJFX Animation
Habits and Ownership Mindset
|
Example: Conditionals
Example: Bounce
Video: Class Introduction |
GITing Started
Bouncing Balls
|
Clean Code
OO in One Sentence
JavaFX Basics (sections 1-3)
GIT Basics and Best Practices
ChatGPT
|
CompSci Autobiography, Sat 1/14
|
2 - Jan 17/19 |
Refactoring and Code Smells
Finding Objects
Intergrity and Equity
Importance of Ethics
|
Example: Bins
Video: Refactoring
Video: Objects |
Hangman |
Single Responsibility Principle
Code Smells
Everything is an Object
Refactoring: Extract Class
Pragmatic Debugging
|
Breakout - Plan and Basic Start, Tue 1/17
Journal - Thinking about Ethics, Fri 1/20
|
Design Using Abstractions |
3 - Jan 24/26
|
Abstraction: Inheritance and Polymorphism
Teamwork |
Example: Roulette
Video: Abstractions
Video: Teamwork
|
Team Meeting |
Access Control (Encapsulation)
Inheritance and Polymorphism
Refactoring: Replace Conditional
Effective Teamwork
|
Breakout - Complete, Tue 1/24
Journal - Project Analysis, Fri 1/27 |
4 - Jan 31/Feb 2
|
GUIs
|
Example: Browser
Video: Class Variations |
GIT for Teams
Browser
|
Open Closed Principle
Model-View Separation Principle
JavaFX GUIs (sections 4-5)
GIT Branching and Merging
|
Cell Society - Plan, Mon 1/30
Journal - Starting and Learning, Fri 2/3 |
5 - Feb 7/9 |
Encapsulation and Interfaces
Exceptions
|
Example: Encapsulation
Example: Browser (continued)
Video: Encapsulation
Video: Exceptions
|
Code Review |
Liskov Substitution Principle
Exceptions: Throwing and Designing
Java Interfaces Are So Very Cool
Better Code With OOP Concepts
|
Cell Society - Basic, Mon 2/6
Journal - Teamwork Reflection, Fri 2/10
|
Design Using APIs and Testing |
6 - Feb 14/16
|
Designing APIs |
Java Time and Dates
Java Collections
Video: APIs
Video: API design |
Team Meeting |
Josh Bloch on API Design
Model-View-Controller (MVC)
Designing with Interfaces
Managing Conflict in Teams
|
Cell Society - Change, Mon 2/13
Journal - Project Analysis, Fri 2/17
|
7 - Feb 21/23
|
Unit Testing and TDD
"Advanced" Java: Reflection
|
Example: Testing
Video: Reflection |
GIT Mistakes
Testing
Reflection
|
JUnit Test Infected
User Interface Testing with TestFX
Dependency Inversion Principle
Design by Contract
|
SLogo - Plan, Mon 2/20
Journal - Ethics in the News, Fri 2/24
SLogo - Test, Sun 2/26
|
8 - Feb 28/Mar 2
|
Design Patterns
"Advanced" Java: Lambda Expressions
|
Example: Encapsulation (continued)
Video: More on Lambdas
Video: Design Patterns
|
Patterns |
Introduction to Design Patterns
Interface Separation Principle
Why Lamba Expressions
Refactoring to Patterns
|
Journal - Testing, Fri 3/3
SLogo - Basic, Sun 3/5
|
9 - Mar 7/9 |
Design Smells |
Example: Roulette (continuted)
Video: Applying Design Patterns
Video: More on Design Patterns
|
Code Review |
Design Smells
From STUPID to SOLID
Big Ball of Mud
Foundation Patterns |
SLogo - Change, Fri 3/10 |
10 - Mar 14/16
|
SPRING BREAK |
|
|
|
|
Putting it All Together |
11 - Mar 21/23
|
Agile Project Management
Agile Project Design |
Video: Agile Planning |
Team Meeting
DUI Team Exercises!
|
Designing a Document Editor
Introducing OO Frameworks
The Structure of Games
Teamwork is an Individual Skill
|
OOGASalad - Team Choice, Wed 3/22
Journal - Teamwork Reflection, Fri 3/24
Journal - Project Analysis, Sun 3/26
|
12 - Mar 28/30 |
"Advanced" Design
|
Prefer Composition over Inheritance
Video: Agile Discussion |
Team Contract Worksheet
Team Planning
|
Magic of Data Driven Design
Dependency Injection Pattern
UI Software Architecture
ACM Code of Ethics
|
OOGASalad - Plan, Fri 3/31
Journal - Ethics (Professional), Sun 4/2
|
13 - Apr 4/6
|
Logging
Open Source Software |
Bins (with Logging)
Example: Twitter Algorithm
Ethics: Log4j Exploit
Ethics: Lawsuits against AI
Video: Logging and Ethics
Video: Open Source |
StandUp/Retrospective
Team Planning
|
Java Logging Best Practices
What is Free Software?
Cathedral and Bazaar
Towards Ethics by Default
|
OOGASalad - Sprint 1, Fri 4/7
Journal - Ethics (Personal), Sun 4/9 |
14 - Apr 11/13
|
Giving Demos
DevOps
Day in the Life of Development
|
Ethics: CMU Mites and Privacy
World: Uber CEO Tried Driving
Video:
DevOps and Real-World |
Midpoint Presentation
StandUp/Retrospective
Team Planning
|
Software Engineering at Google
Ultimate Guide on DevOps
True Programmers Never Stop Learning
Dark Side of Software Development
Do Programmers Need a Code of Conduct
|
OOGASalad - Sprint 2, Wed 4/12
Journal - Midpoint Teamwork Reflection, Fri 4/14
|
15 - Apr 18/20
|
Streams
Command Line Principles
|
Example: WordCloud
Video: Streams, Command Line |
StandUp/Retrospective
Team Planning |
Functional Programming in Java
Refactoring Loops with Pipelines
Unix Philosophy
Pragmatic Moral Compass
|
Journal - Improvement Reflection, Fri 4/21
OOGASalad - Sprint 3, Sun 4/23
|
16 - Apr 25
|
ChatGPT
General Software Design |
|
NO LAB |
Four Pillars of OO Programming
Extreme (Programming) Thoughts
Defending Democracy from Big Tech
API-First World (comic book!)
|
Journal - Teamwork Reflection, Fri 4/28
OOGASalad - Complete, Sun 4/30 |
Wed, May 3 |
Final Project Demos, in person, 2-5pm |
|
|
|
OOGASalad - Demo, Wed 5/3 (in class)
Journal - Project Analysis, Sun 5/7 |