Programming Companion
Java

IB DP Computer Science · Java

IB DP Computer Science · Python

Programming Companion

A practical reference for learning programming techniques, studying worked examples, choosing a challenge and submitting completed work to a personal GitHub portfolio.

Learn a technique

Read a focused explanation, inspect Java examples and check common mistakes before beginning a challenge.

Read a focused explanation, inspect Python examples and check common mistakes before beginning a challenge.

Choose a challenge

Each page offers independent tasks with an approximate Code heat. Optional extensions are labelled rather than placed in compulsory chains.

Build a portfolio

The site generates operating-system-specific commands to create the correct folder, README, commit and GitHub push.

Start here

1. Set up your portfolio

Create one private GitHub repository and optionally invite your teacher as a read-only collaborator.

Portfolio setup

2. Choose a technique

Work through the explanation, then select one challenge that matches your current confidence.

Begin with sequence

3. Check coverage

See which IB standards are covered through programming and which are intentionally taught separately.

Standards coverage

Programming foundations

The labels use official IB standard codes so teachers can move directly from a weekly scope-and-sequence entry to the relevant explanation and challenge set.

Code heat: the four-block meter is a rough estimate of how much independence, combination and testing a task may require. It is not a fixed student level.

Continue to the programming foundations checkpoint →

Object-oriented programming

The shared SL/HL OOP sequence moves from evaluating the paradigm to constructing objects, distinguishing member ownership and protecting valid state.

Higher-level object-oriented programming

The HL sequence begins with inheritance: establishing defensible parent–child relationships, reusing behaviour and applying Java access rules accurately.

The HL sequence begins with inheritance: establishing defensible parent–child relationships, reusing behaviour and comparing Python conventions with the access rules named by the syllabus.

HL progression: polymorphism, abstraction, composition, aggregation and design patterns will follow inheritance as separate focused techniques.