Date
| Topics |
Examples/Videos |
Lab |
Readings |
Due |
Basic Design Principles |
1 - Jan 11 |
Course Overview
GIT in Practice
OpenJFX Animation
|
Example: Conditionals
Example: Bounce
Video: Class Introduction
|
GITing Started
Bouncing Balls
|
Clean Code
OO in One Sentence
JavaFX Basics (sections 1-3)
GIT Basics
ChatGPT
|
CompSci Autobiography, Sat 1/13 |
2 - Jan 16/18 |
Refactoring and Code Smells
Finding Objects
Importance of Ethics
|
Example: Bins
Video: Objects |
Hangman |
Single Responsibility Principle
Code Smells
Everything is an Object
Refactoring: Extract Class
Pragmatic Debugging
|
Breakout - Plan and Basic Start, Tue 1/16
Journal - Thinking about Ethics, Fri 1/19
|
Design Using Abstractions |
3 - Jan 23/25
|
Abstraction: Inheritance and Polymorphism
Intergrity and Equity
Teamwork
|
Example: Roulette
Video: Abstractions
|
Team Meeting |
Access Control (Encapsulation)
Inheritance and Polymorphism
Refactoring: Replace Conditional
Effective Teamwork
|
Breakout - Complete, Tue 1/23
Journal - Project Analysis, Sat 1/27
|
4 - Jan 30/Feb 1
|
GUIs
|
Example: Browser |
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/29
Journal - Starting and Learning, Fri 2/2
|
5 - Feb 6/8 |
Exceptions
Encapsulation and Interfaces
|
Example: Browser (continued)
Example: Encapsulation
Video: Exceptions
Video: Encapsulation |
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/5
Journal - Teamwork Reflection, Fri 2/9
|
Design Using APIs and Testing |
6 - Feb 13/15
|
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/12
Journal - Project Analysis, Fri 2/16
|
7 - Feb 20/22
|
Unit Testing and TDD
"Advanced" Java: Reflection
|
Example: Testing
Example: Reflection
Video: Unit Testing
Video: TDD and Reflection
|
Testing (and Reflection) |
JUnit Test Infected
User Interface Testing with TestFX
Dependency Inversion Principle
Design by Contract
|
SLogo - Plan, Mon 2/19
Journal - Ethics in the News, Fri 2/23
SLogo - Test, Sun 2/25
|
8 - Feb 27/29
|
Design Patterns
"Advanced" Java: Lambda Expressions
|
Example: Encapsulation (continued)
Example: Observer
Video: More on Testing and Lambdas
Video: Design Patterns
|
GIT Undo
Patterns
|
Introduction to Design Patterns
Interface Separation Principle
Why Lamba Expressions
Refactoring to Patterns
|
Journal - Testing, Fri 3/1
SLogo - Basic, Sun 3/3
|
9 - Mar 5/7 |
Design Smells |
Example: Roulette (continuted)
Video: Design Pattern Examples
Video: Design Goals and ChatGPT
|
Code Review |
Design Smells
From STUPID to SOLID
Foundation Patterns
Using ChatGPT Prompts for Coding
|
SLogo - Change, Fri 3/8 |
10 - Mar 12/14
|
SPRING BREAK |
|
|
|
|
Putting it All Together |
11 - Mar 19/21
|
Agile Project Management |
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/20
Journal - Teamwork Reflection, Wed 3/20
Journal - Project Analysis, Sun 3/24
|
12 - Mar 26/28 |
Agile Project Design
"Advanced" Design
|
Video: Design Techniques |
Gitlab Project Management
Team Planning
|
Magic of Data Driven Design
Dependency Injection Pattern
Prefer Composition over Inheritance
UI Software Architecture
|
OOGASalad - Plan, Thu 3/28
Journal - Ethics (Professional), Sun 3/31
|
13 - Apr 2/4
|
Logging
Streams
Giving Demos
|
Example: Bins (with Logging)
Example: WordCloud (no loops)
Video: Demos, Logging, Streams
Video: Ethics for Developers
|
Ethics: Log4j Exploit
Sprint Management:
Retrospective,
Demo,
Planning
|
Java Logging Best Practices
Functional Programming in Java
Refactoring Loops with Pipelines
Towards Ethics by Default
|
OOGASalad - Sprint 1, Wed 4/3
Journal - Ethics (Personal), Fri 4/5 |
14 - Apr 9/11
|
Day in the Life of a Developer |
Video: Real-World Development
Video: Ethics Discussion
|
Ethics: Google v. Oracle
Sprint Management:
Retrospective,
Demo,
Planning |
Software Engineering at Google
Programmers Never Stop Learning
Dark Side of Software Development
Do Programmers Need a Code of Conduct
|
OOGASalad - Sprint 2, Wed 4/10
Journal - Midpoint Reflection, Fri 4/12 |
15 - Apr 16/18
|
DevOps
Command Line Principles
|
Example: Maven Project
Video: Using Maven
|
Sprint Management:
Demo,
Retrospective,
Planning
|
Unix Philosophy
What Should Be Configurable?
Ultimate Guide on DevOps
Pragmatic Moral Compass
|
OOGASalad - Sprint 3, Wed 4/17
Journal - Improvement Reflection, Fri 4/19
|
16 - Apr 23
|
AI and Programming
Future of Programming
General Software Design |
|
NO LAB |
Four Pillars of OO Programming
Extreme (Programming) Thoughts
API-First World (comic book!)
Defending Democracy from Big Tech
|
Journal - Teamwork Reflection, Fri 4/26
OOGASalad - Complete, Sun 4/28
|
Wed, May 1 |
Final Project Demos, in person, 7-10pm |
|
|
|
OOGASalad - Demo, Wed 5/1 (in class)
Journal - Project Analysis, Sun 5/5 |