Objects and models
Why objects at all, how to draw them, and how a diagram becomes Java
Introduction to OOP
Why objects: from procedural code to classes, objects, encapsulation and the first UML class diagrams
Lecture 2UML diagrams
Class diagrams in depth, then use case, sequence, activity and state diagrams
Lecture 3From UML to Java
IntelliJ IDEA, the first project, and every relationship of a class diagram written in Java
The language itself
The JVM, control flow, the whole of object-oriented Java, and the data you handle every day
The Java environment
JVM, compilation, primitive types, operators, Strings, conditionals and switch
Lecture 5Control flow
Activity diagrams turned into loops, arrays and recursion
Lecture 6Advanced OOP
Constructors, static members, inheritance, polymorphism, abstract classes and interfaces
Lecture 7Data manipulation
Strings for real, the Date and Time API, formatting and parsing
Real programs
What every serious Java program uses: collections and files, patterns, streams, and a window
Collections, files and exceptions
ArrayList, HashMap, HashSet, reading and writing files, exceptions and error handling
Lecture 9Design patterns
Singleton, Factory, Builder, Observer, Strategy and friends, with their UML
Lecture 10Functional programming
Lambdas, functional interfaces, method references and the Stream API
Lecture 11Graphical user interfaces
Swing components, layouts and events, with a look at JavaFX
Practical works
One graded lab per lecture, plus a database lab: the same library system, growing every week
OOP and UML class diagrams
The first classes and objects, and the diagram that goes with them
PW 2UML behavioural diagrams
Use case, sequence, activity and state diagrams for the library
PW 3Java syntax and the IDE
The first project in IntelliJ IDEA, and the diagram written in Java
PW 4Conditionals and enums
Types, operators, if and switch, and the first enums
PW 5Loops, arrays and recursion
Control flow exercises, from the counting loop to recursive search
PW 6Inheritance and polymorphism
The Media hierarchy, abstract classes and interfaces
PW 7Date, time and strings
Loan dates, formatted receipts, parsing and validation
PW 8Collections and file I/O
Maps, sets and lists, a CSV catalogue, and exceptions of your own
PW 9JDBC database
The catalogue in a real database, with prepared statements
PW 10Design patterns
Singleton, Factory, Builder, Observer and Strategy on the library services
PW 11Functional programming
Lambdas, method references and the Stream API over the catalogue
PW GUISwing desktop application
The desktop client of the library: frame, table model, form, live search and dialogs
The earlier HTML lectures
The previous generation of slides, kept for reference. The Bento decks above supersede them.
Introduction to OOP
The original slides of lecture 1
Legacy 2UML behavioral diagrams
The original slides of lecture 2
Legacy 3Java syntax and IDE setup
The original slides of lecture 3
Legacy 4JVM and conditional statements
The original slides of lecture 4
Legacy 5Loops, arrays and recursion
The original slides of lecture 5
Legacy 6Constructors and inheritance
The original slides of lecture 6
Legacy 7Date/Time API and strings
The original slides of lecture 7
Legacy 8Collections, file I/O and exceptions
The original slides of lecture 8
Legacy 9Object-oriented design patterns
The original slides of lecture 9
Legacy 10Functional programming in Java
The original slides of lecture 10
Legacy 11Graphical user interfaces
The original slides of the GUI lecture