Introduction to the class

Date
12 June 2017
Topics
  • Git basics
  • Java overview
  • Hello World
Slides
PDF

Variables, control flow

Date
14 June 2017
Topics
  • Types and control flow
  • References vs. primitives
  • Using objects
Reading
Pages 17–59 (Skimming is fine, feel free to skip the long lists)
Slides
PDF

Classes, objects, and OOP

Date
16 June 2017
Topics
  • Goals of OOP
  • Classes vs. instances
  • Properties, methods and constructors
  • Public, Private
  • Class inheritance
  • Type hierarchies
Reading
Pages 72-74, 84-88, 97-110
Slides
PDF
In Class Code Examples
ZIP

Inheritance, class design, and error handling

Date
19 June 2017
Topics
  • Static and final
  • Information hiding, private
  • Errors and Exceptions
Reading
Pages 60-64, 110-128
Slides
PDF
In Class Code Examples
ZIP

Exceptions and abstract classes

Date
21 June 2017
Topics
  • Abstract classes
  • Managing the type hierarchy
Reading
Pages 128-142
Slides
PDF
In Class Code Examples
ZIP

Type generic programming

Date
23 June 2017
Topics
  • Generics
  • Interfaces
  • Nested Types
Reading
Pages 142-171 (Skimming the Nested Types part is fine, just have a general idea)
Slides
PDF
In Class Code Examples
ZIP

Packages and sharing code

Date
26 June 2017
Topics
  • Java packages
  • import
  • Using third party code
  • jar files
Reading
Pages 88-95, 239-257
Slides
PDF
In Class Code Examples
ZIP

Lambda and functional programming

Date
28 June 2017
Topics
  • Java 8 and Lambda
  • Solution to anonymous classes
  • Loops, Parallelism, and Concurrency
Reading
Pages 171-174, 258-266
Slides
PDF
In Class Code Examples
ZIP

Documentation, reusable code, and tooling

Date
30 June 2017
Topics
  • Documentation and Javadoc
  • Reusable code
  • Code complexity analysis
  • Problematic constructions
Reading
Pages 223-237
Slides
PDF
In Class Code Examples
ZIP

More library and clean code constructions

Date
03 July 2017
Topics
  • Refactoring
  • Inheritance vs. Composition
  • Storing state
  • Static methods
  • Dependency injection
Slides
PDF
In Class Code Examples
ZIP

Unit testing and reliability

Date
05 July 2017
Topics
  • Goals
  • Dependency Injection
  • jUnit
  • Continuous integration
Slides
PDF
In Class Code Examples
ZIP

Concurrency

Date
10 July 2017
Topics
  • Purposes and dangers
  • Use and misuse
  • Threads vs. Processes
Reading
Pages 208-219
Slides
PDF
In Class Code Examples
ZIP

Concurrency continued

Date
12 July 2017
Topics
  • Taming concurrency
  • Synchronize
  • Runtime managed concurrency
Reading
Re-read pages 208-219
Slides
PDF
In Class Code Examples
ZIP

Version control

Date
14 July 2017
Topics
  • Managing history
  • Collaborative development
  • GitFlow and branching
Slides
PDF

Inversion of control and event loops

Date
17 July 2017
Topics
  • Event Loops
  • Async Servers
  • UI Patterns
Slides
PDF
In Class Code Examples
ZIP

Event loops in practice

Date
19 July 2017
Topics
  • Event loop implementation
  • Effects of blocking
  • When to use and not to use
Slides
PDF
In Class Code Examples
ZIP

Architectural patterns

Date
21 July 2017
Topics
  • Purpose of pattersn
  • Model-View-Controller
  • Web Apps and Android
Slides
PDF
In Class Code Examples
ZIP

Implementation strategy patterns and build tools

Date
24 July 2017
Topics
  • Construction patterns
  • Build tools and project templates
  • Contributing to maven projects
Slides
PDF
In Class Code Examples
ZIP

Creational patterns

Date
26 July 2017
Topics
  • Purpose of patterns
  • Gang of four
  • Singleton, Factory, builder
Slides
PDF
In Class Code Examples
ZIP

Patterns concluded

Date
28 July 2017
Topics
  • Factory pattern
  • Adapter pattern
Slides
PDF
In Class Code Examples
ZIP