Skip to main content
Code Companion

About Code Companion

Someone once gave me a programming book.

Years ago, a friend gave me a programming book because they thought I might get something from it. That small gesture stayed with me.

Someone shared a useful resource, I learned from it, and eventually I ended up teaching computer science myself.

Code Companion is my version of passing that on: a free programming course with explanations, challenges, Java and Python examples, classroom tools and a structured path through the skills students need.

The aim is not to replace teachers or pretend a website can prove learning. Students make choices, work in real programming tools and produce evidence. Teachers still ask questions, review work and use supervised assessment when they need stronger evidence of independent understanding.

Abstraction is useful. Over-abstraction is not.

Computer Science relies on abstraction. We hide complexity so that we can focus on the problem that matters.

But abstraction can go too far.

If students only ever work inside polished browser environments, drag-and-drop interfaces and heavily guided platforms, they can become very good at using the abstraction without understanding what sits underneath it.

Code Companion uses abstraction deliberately. Younger students get more scaffolding while they learn the fundamentals. As they progress, that scaffolding is removed.

By IGCSE and DP, students should increasingly work with real files, folders, paths, local applications and development environments. They should know how to organise a project, run it, debug it, package it and understand where their work actually lives.

The goal is not to add difficulty for the sake of it. It is to make sure convenience does not come at the cost of understanding.

Good abstraction removes irrelevant complexity. Over-abstraction removes learning.

Real toolsStudents build in the IDEs programmers actually use.
Student choiceChallenge difficulty can stretch different learners appropriately.
Teacher judgementOnline progress is evidence, not an automatic claim of mastery.

Someone once gave me a programming book. This is me passing it on.

Start with the programming course →