Object-Oriented Programming

OOP Fundamentals

OOP is a programming paradigm based on objects — data structures containing data (attributes) and code (methods). The four pillars:

Inheritance & Composition

✅ Good fits: - Clear "is-a" relationship (Dog is an Animal) - Shared behaviour + specialised extensions - Framework extension points

Design Patterns

"Each pattern describes a problem which occurs over and over again in our environment, and then describes the core of the solution to that problem." — Christopher Alexander

SOLID Principles

"SOLID is not a framework. It's a way of thinking about software design." — Robert C. Martin

Event-Driven Programming

This page lives in the OOP track for a good historical reason, even though the idea outgrows any one paradigm. Alan Kay, who coined "object-oriented", later insisted the name pointed at the wrong thing: "The big idea is…

Paradigms & Polyglot Programming

Languages are ephemeral; paradigms are foundational. Learn only syntax and every new language is a fresh start; learn how memory, execution flow and state change are managed across paradigms and you can pick up a new…

Advanced Java & the JVM

Students arriving from an imperative module often treat objects as magic containers that simply work. This page removes the magic in three layers: what the machine actually does with your objects (the JVM), how to make…

Data Structures as Contracts

Students meet ArrayList , HashMap and TreeSet as a menu of options and pick whichever appeared in the last example they read. That framing misses what a collections library actually is: a set of behavioural contracts…

Case Study: The Numerical Tower

Students are taught that int and double are the defaults — and rarely see how those abstractions leak until a critical bug arrives. This case study builds a numerical tower : a hierarchy of number types, inspired by…