| Date
| Topics |
Examples/Videos |
Lab |
Readings |
Due |
Week 1
Jan 9 |
Course Overview
GIT in Practice
|
Example: Conditionals
Example: Bounce
Video: Class Introduction
|
GITing Started
Making Classes
|
Clean Code
OO in One Sentence
JavaFX Basics (sections 1-3)
GIT Basics
|
Sun 1/12: Journal - CompSci Autobiography |
Week 2
Jan 14/16 |
Refactoring and Code Smells
Finding Objects
|
Example: Bins
Video: Clean Code
Video: Refactoring
|
Refactoring |
Single Responsibility Principle
Code Smells
Everything is an Object
Refactoring: Extract Class |
Tue 1/14: Breakout - Plan and Basic Start
Fri 1/17: Journal - Habits and Failure
|
Week 3 Jan 21/23 |
Abstraction |
Example: Roulette
Video: Abstractions
|
Team Meeting |
Access Control (Encapsulation)
Inheritance and Polymorphism
Refactoring: Replace Conditional
How to Work Well on Teams
|
Tue 1/21: Breakout - Complete
Fri 1/24: Journal - Project Analysis |
Week 4
Jan 28/30
|
Separating Model from Views
Unit Testing |
Example: Browser
Video: GUIs
Video: Testing
Video: GIT Merging |
GIT for Teams
Testing
Team Planning
|
Open Closed Principle
Model-View Separation Principle
JUnit Test Infected
JavaFX GUIs (sections 4-5)
|
Tue 1/28: Cell Society - Plan
Fri 1/31: Journal - Starting and Ethics
|
Week 5
Feb 4/6 |
APIs and Interfaces
Exceptions
|
Example: Browser (continued)
Java Time and Dates
Java Collections
Java Iterable and Iterator
Video: Exceptions
Video: APIs
|
Making an API
Team Planning
|
Josh Bloch on API Design
Throwing, Designing Exceptions
Java Interfaces Are So Very Cool
Towards Ethics by Default
|
Tue 2/4: Cell Society - Basic and Test
Fri 2/7: Journal - Testing
|
Week 6
Feb 11/13
|
Encapsulation
"Advanced" Java
|
Example: Encapsulation
Video: Encapsulation
Video: Reflection
|
"Advanced" Java
Team Planning
|
Liskov Substitution Principle
Why Lamba Expressions
Benefits of Immutable Objects
Reflection
|
Fri 2/14: Journal - Midpoint Team Review |
Week 7 Feb 18/20 |
Design Patterns
GUI Testing
|
Example: GUI Testing
Video: Patterns and Testing
|
NO Lab Meeting
Team Planning
|
Introduction to Design Patterns
Dependency Inversion Principle
Design by Contract
User Interface Testing with TestFX
|
Tue 2/18: Cell Society - General and Robust
Fri 2/21: Journal - Ethics (Professional) |
Week 8 Feb 25/27 |
SOLID Design
Logging
|
Example: Bins (with Logging)
Video: Logging, Maven,
CI Pipeline |
GIT Undo
Patterns and API Design
Team Planning
|
Interface Separation Principle
Java Logging Best Practices
Refactoring to Patterns
Ethical Issues in Software Development
|
Fri 2/28: Journal - Ethics (Personal) |
Week 9 Mar 4/6 |
Developing with LLMs
Ethics |
|
Project Presentation |
Design Smells
Foundation Patterns
ChatGPT Prompts for Coding Tasks
Coding and Coping with ChatGPT
|
Tue 3/4: Cell Society - Change
Thu 3/6: In class Presentation
|
10 - Mar 11/13
|
SPRING BREAK |
|
|
|
|
Week 11 Mar 18/20 |
Agile Project Management |
Video: Agile Development |
Team Meeting
DUI Team Exercises!
|
Designing a Document Editor
Introducing OO Frameworks
The Structure of Games
Teamwork is an Individual Skill
|
Mon 3/17: Journal - Final Team Review
Fri 3/21: Journal - Project Analysis |
Week 12 Mar 25/27 |
Agile Project Design
"Advanced" Design
|
Video: Advanced Design
Video: Extreme Programming
|
Ethics: Coding Interviews
Team Planning |
Magic of Data Driven Design
Prefer Composition over Inheritance
Dependency Injection Pattern
UI Software Architecture
|
Fri 3/28: OOGASalad - Plan |
Week 13
Apr 1/3
|
Streams
|
Example: WordCloud
Video: Streams
|
Ethics: Programmer Burnout
and Mental Health
Sprint Management:
Demo,
Retrospective,
Planning
|
Functional Programming in Java
Refactoring Loops with Pipelines
Mental Health in Software Engineering
Dark Side of Software Development
Programmers Never Stop Learning
|
Wed 4/2: OOGASalad - Sprint 1
Fri 4/4: Journal - Ethics in the News
|
Week 14 Apr 8/10
|
Command Line Principles
DevOps
|
Video: Command Line |
Ethics: Open Source
Sprint Management:
Demo,
Retrospective,
Planning
|
Unix Philosophy
What Should Be Configurable?
Ultimate Guide on DevOps
What is Free Software?
|
Wed 4/9: OOGASalad - Sprint 2
Fri 4/11: Journal - Midpoint Project Review
|
Week 15 Apr 15/17
|
Alumni Panel
|
|
Sprint Management:
TA Feedback,
Retrospective,
Planning
|
Troubleshooting vs Debugging
Accessible Design Means Better Design
The Moral Compass
Engineering for Equity
|
Wed 4/16: OOGASalad - Sprint 3
Fri 4/18: Journal - Improvement Reflection |
Week 16 Apr 22
|
Wrap-Up
|
|
NO Lab Meeting |
Four Pillars of OO Programming
Extreme (Programming) Thoughts
Do Programmers Need a Code of Conduct?
API-First World (comic book!)
|
Fri 4/25: Journal - Final Team Review
Sun 4/27: OOGASalad - Complete
|
| Fri, May 2 |
Final Project Demos, in person 2-5pm |
|
Final Presentation |
|
Fri 5/2: OOGASalad - Demo (in class)
Sun 5/4: Journal - Project Anaysis
|