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