Notes
Lectures are being recorded; see sidebar for link.
Readings are taken from Object-Oriented Design & Patterns, 3nd ed. (Free PDF to SFU students)
Course Intro & Java
- You must read Ch1 in course text by 3rd lecture.
- 00-Administrative notes; or in colour
- [UPDATED] 01-Introduction To Java notes; or in color
- In class examples
- Intro Java programming demos
Basics: main(), functions, if, for loop
Data class (fields, constructor, toString()...)
ArrayList and For-Each loop
Model/View Separation - Readings: Ch 1 (required)
Anon Classes
- 02-Anon Classes notes; in color
- In class examples
- Jan 17 Zoom lecture; passcode is
VbqEW7
; covers end of 01-Intro, and first few slides of slide deck 3 - Jan 18 Zoom lecture; passcode is
awesome
- Readings: Ch 4.3-4.5 (optional)
OOD
- Academic Honesty presentation
- 03-Design Process notes; in color
- 04-Design Techniques notes; in color
- Readings: Ch 2
Lambdas & Streams
- 05-Lambda and Streams notes; in color
- In class examples
- [NEW] Practice exercise on streams.
- Download the provide
.java
files, then complete the code inStreamExercise.java
- Some of the tasks give hints on how you might want to do it; you'll likely need to lookup information online for some of these.
- This is a good tutorial to help you work with streams.
- Download the provide
- 05.1-Generics notes; in color
Class Design
- 07-Class Design notes; in color
- In class examples
- Readings: Ch 3.1-3.4; 3.5-3.7
Interface Quality
- 08-Interface Quality notes; in color
- 09-Contract Vs Defensive programming notes; in color
- In class examples
- Readings: Ch 3.5-3.7
Polymorphism and Inheritance
- 10-Interface Polymorphism notes; in color
- In class examples
- [NEW] Lecture recording
Passcode: awesome - Covers 'Interface Polymorphism' slides 10+, and 'Inheritance' slides 1-5); Passphrase is
awesome
- Readings: Ch 6
- 11-Inheritance notes; in color
- In class examples
Web App
- 12-HTTP and REST APIs notes; in color
- Video Tutorials:
- Getting started with Spring Boot in IntelliJ; skip installing custom Gradle.
- Creating a REST API with Spring Boot in IntelliJ.
- Postman
- Postman with Variables in Queries
- 13-Spring Boot notes; in color
- In class examples
Inheritance Design
- 14-Inheritance Design notes; in color
- No lecture on March 20 and March 22. Watch these videos instead:
Video Part 1: Slides 1-13 (24m)
Video Part 2: Slides 14-28 (25m) - In class examples
- No lecture on March 20 and March 22. Watch these videos instead:
Patterns
- 15-Patterns notes; in color
- In class examples
Exceptions
- 16-Exceptions notes; in color
- Lecture was cancelled due to illness
Please watch this video from a previous offering. - In class examples
- Lecture was cancelled due to illness
Code Smells
- 17-Code Smells notes; in color
- Code smells examples from lecture
- Apr 5 Lecture Recording; Passcode:
awesome
Object
Threads
- 19-Threads notes; in color
- Threads examples from lecture
- [NOTE] Lecture recording failed for this day.
- Completed slides
- We covered slides 1-12, and 17. However, students are expected to know only the general idea about:
- threads doing work in parallel, that there issues/concerns such as starvation, fairness, and priority.
- A time slice is a unit of time that the OS / JVM allows the thread to run for.
- Critical sections are where the actions of two threads my conflict.
- Broad idea about deadlock and the dining philosophers problem.
Suggestions
- Posted notes are incomplete; attend lectures to fill in the blanks. Come to office hours to fill in missed content. Completed notes will not be published.