Foundations of Object Oriented Programming (FOOP)
Foundations of Object Oriented Programming
QQI Level 5 (5N1352) | Blackrock Further Education Institute | 2024–25
About This Course
FOOP was taught as the natural successor to PDP (Programming Design Principles). Students arrived having written Python procedurally — functions, loops, basic data structures. FOOP's job was to give them a reason to want OOP before showing them how it works.
The main vehicle for this was the Solar System project: a three-part sequence where students first implement a solar system explorer using dictionaries and lists, then rebuild it using a proper class hierarchy, then extend it with advanced features. Each part demonstrates concretely why the previous approach had limits.
The course ran in C#, which meant students were also navigating a new language alongside new concepts. This turned out to be an advantage — the explicit type system in C# made some OOP ideas (inheritance, polymorphism, abstract classes) clearer than they would have been in Python.
Materials
-
Solar System OOP 1 of 3 — Procedural approach, then a class-based rebuild. Covers
CelestialLocationbase class,Planet,Moon, andSpaceStationsubclasses, and aSolarSystemMapmanager class. -
Solar System 2 of 3 — Notebook version of the class-based implementation, designed for step-by-step exploration in a C# polyglot notebook.
-
Solar System Bonus 3 of 3 — Advanced extensions. New celestial types (Asteroid, BlackHole), a fuel system with distance-based travel costs, and a weather system demonstrating polymorphic design.
Skills Demo Sequence
Beyond the Solar System project, the course included four skills demos integrated with mathematics and computational methods. See the Cross-Module Integration Summary for the full picture of how assessment worked across modules.
The culminating group project extended a digit recogniser (MNIST neural network) into an Eircode recognition system using EMNIST, run as two Agile sprint cycles.
The FOOP approach — giving students a concrete frustration with procedural code before introducing OOP — is described in more detail in the consulting page.