Course Schedule
Note: all future dates are subject to change
Date
Topic
Before class
In class
Take-Home Exercise
Homework
Fundamentals
Course overview, abstraction
Syntax, ASTs, static types, operator precedence
Exploring and using abstractions, calling methods
Unit tests
Refactoring
The Heart of OOP
Object modeling
Classes and objects from the outside
Classes and objects from the inside, abstraction and encapsulation
State and instance variables, objects as models of processes
Object relationships, the stack and the heap
Subtypes and Polymorphism
Polymorphism, abstract types
Object modeling revisited
Customization via subclassing
Replacing inheritance with composition
Play!
Closures
Closures (a.k.a. lambdas), variable capture
Event handling, closures for deferred execution
Fall Break
Steams, map and filter operations
Translating between loops and streams
Parallelism, concurrency, shared mutable state
More Basic Data Structures
Abstraction and APIs
APIs, contracts, decoupling, separation of concerns
Preconditions, postconditions, invariants, immutable data
Defensive programming
Projects
Projects
Thanksgiving Break
Object model of a toaster
Mastermind
Flexible day (Play??)
Project kickoff
Project work time
Project work time
Flexible day
Project work time
Project work time
Project work time
Project work time
Project work time
Progress Presentations!
Project work time
Breakout part 1
Breakout part 2