I kept noticing the same ideas repeat across every language I learned — a stack is a stack whether it's Python, Java, or C++. This repo is that observation, made concrete.
It collects the foundation work I did across Python, Java, and C++ into one place, organised by concept rather than by course or language, so the pattern shows instead of the syllabus.
- Linked list —
data-structures/linked-list/ - Stack (array-based) —
data-structures/stack/ - Queue (array-based) —
data-structures/queue/ - Recursion —
data-structures/recursion/
These are clean implementations with edge-case handling (empty structures, full arrays) and a demo runner in src/examples/.
- Classes & objects —
oop-principles/classes-objects/ - Encapsulation —
oop-principles/encapsulation/ - Inheritance —
oop-principles/inheritance/ - Polymorphism —
oop-principles/polymorphism/ - Abstraction —
oop-principles/abstraction/ - Interfaces —
oop-principles/interfaces/
Each principle has a small worked example plus a test file showing it in use.
- Input/output —
structured-programming/input-output/ - Conditionals —
structured-programming/conditionals/ - Loops —
structured-programming/loops/ - Functions —
structured-programming/functions/ - Arrays —
structured-programming/arrays/ - Structs —
structured-programming/structs/ - Mini project (library menu system) —
structured-programming/mini-projects/
This was my procedural programming foundation before moving into OOP and DSA.
- Variables & input —
python-basics/variables-input/ - Conditionals —
python-basics/conditionals/ - Loops —
python-basics/loops/ - Functions —
python-basics/functions/ - Lists —
python-basics/lists/ - Files —
python-basics/files/ - Mini project (simple banking menu) —
python-basics/mini-projects/
The academic-assignments/ folder holds selected past CMPG221 exercises, summarised in my own words. These are cleaned summaries, not a raw coursework dump — no student numbers, private screenshots, or original instruction PDFs.
- Assignment 1: OOP inheritance and polymorphism
- Assignment 2: OOP arrays, sorting, and complexity
- Assignment 3: Text-based Snake with
MyArrayList - Assignment 4: Music festival booking with
MyLinkedList - Assignment 5: Hospital emergency room with linked-list stack and queue
- Assignment 6: Recursion, stack tracing, and string permutations
- Assignment 7: Hybrid sorting algorithm
notes/time-complexity.md— Big O, best/average/worst cases, complexity of the core structuresnotes/oop-principles.md— the four pillars with concrete Java examplesnotes/structured-programming.mdandnotes/problem-solving-in-cpp.md— C++ fundamentalsnotes/programming-basics.mdandnotes/problem-solving.md— Python fundamentals
These examples originally lived in separate repos, one per language. Putting them together makes the point explicit: the concepts transfer, the syntax doesn't. A reviewer can see the same stack implemented in Java and the same procedural patterns in C++ and Python side by side.
The examples are per-folder and self-contained.
Java:
javac -d out data-structures/linked-list/SinglyLinkedList.java data-structures/stack/StackUsingArray.java data-structures/queue/QueueUsingArray.java data-structures/recursion/RecursionExamples.java src/examples/Main.java
java -cp out MainC++:
g++ structured-programming/mini-projects/library_menu_system.cpp -o library_menu
./library_menuPython:
python python-basics/mini-projects/simple_banking_menu.pyEach folder has its own README with the specific compile/run command and what the example demonstrates.
These examples originally lived in four separate single-language repositories. This repo is their consolidated, concept-organised successor — the point is that the concepts transfer across languages, not that each language needs its own repo.