Code Companion
Java

Curriculum map

Standards coverage

The companion now contains 26 programming techniques covering the practical B2 sequence and the full B3 object-oriented sequence. B1 computational thinking is embedded or taught separately, while B4 abstract data types remain a separate HL section.

26 techniques

T01–T26 now form the published programming sequence.

B2 programming

Covered through explanations, worked examples, checks and challenges.

B3 OOP

Covered for shared SL/HL B3.1 and HL-only B3.2.

B1 / B4

Separate or embedded rather than presented as completed programming techniques.

Challenge evidence is practice evidence, not proof of mastery: a challenge shows that the standard is deliberately practised on the site. Teachers still need classroom questioning, observation and controlled assessment to judge what a student can do independently.
Language selection: Java and Python cover the same standard-level intent, while pages change syntax, libraries, scaffolds and language-specific explanations.
IB standardFocusTechnique(s)Explained hereChallenge evidenceNotes
B1.1.1 Construct a problem specification Embedded Partial Challenge tasks provide specifications; student-authored specifications remain a separate computational-thinking emphasis.
B1.1.2–B1.1.3 Computational-thinking concepts and application Embedded Partial Used throughout decomposition, pattern recognition, abstraction, algorithm design and modular problem solving.
B1.1.4 Trace flowcharts Separate No Flowcharts appear where they support programming ideas, but formal tracing practice is taught separately.
B2.1.1 Variables, scope and data types Yes Yes Global/local scope, Boolean, character, decimal, integer and string data, arithmetic, conversion, input and tracing.
B2.1.2 Substring extraction and manipulation Yes Yes Indexing, extraction, alteration, concatenation and replacement.
B2.1.3 Exception-handling techniques Yes Yes Unexpected input, unavailable resources, error-handling purpose, specific handlers and finally.
B2.1.4 Debugging techniques Yes Yes Trace tables, breakpoint debugging, print evidence and step-by-step execution.
B2.2.1 Static and dynamic data structures Yes Yes Memory allocation/resizing plus speed, memory-use and flexibility trade-offs.
B2.2.2 Arrays and lists Yes Yes 1D, 2D and dynamic collections including add, remove and traversal.
B2.2.3 Stacks and LIFO Yes Yes Operations, traces, qualitative performance/memory impact, safety and suitability.
B2.2.4 Queues and FIFO Yes Yes Operations, traces, qualitative performance/memory impact, safety and suitability.
B2.3.1 Sequence of instructions Yes Yes Instruction order, correct output and the effect of changing sequence.
B2.3.2 Selection structures Yes Yes if/else chains, Boolean operators and relational operators, then reuse inside larger programs.
B2.3.3 Looping structures Yes Yes Counted and conditional loops, appropriate loop choice, loop conditions and selection inside repetition.
B2.3.4 Functions and modularisation Yes Yes Inputs, returns, local/global scope, reuse, maintainability and scenario-based benefits.
B2.4.1 Algorithm efficiency and Big O Yes Yes Time/space complexity, O(1), O(log n), O(n), O(n²), dominant growth and scalability.
B2.4.2 Linear and binary search Yes Yes Construction, tracing, sorted-data precondition, efficiency comparison and technique choice.
B2.4.3 Bubble and selection sort Yes Yes Construction, pass tracing, time/space complexity and balanced evaluation across data sets.
B2.4.4–B2.4.5 Recursion (HL) Yes Yes Base/recursive cases, winding/unwinding, applications and simple non-branching recursive construction.
B2.5.1 File-processing operations Yes Yes Sequential text files, read/write/append effects and reliable closure.
B3.1.1 Evaluate OOP fundamentals Yes Yes Balanced scenario judgement rather than universal advocacy.
B3.1.2 Design classes, methods and behaviour Yes Yes Requirement-led UML and matching class designs.
B3.1.3 Class-owned and instance-owned members Yes Yes Ownership, scope and suitability are implemented with the selected language model.
B3.1.4 Define classes and instantiate objects Yes Yes Initialisation, objects, receivers and independent instance state.
B3.1.5 Encapsulation and information hiding Yes Yes Controlled state, deliberate interfaces and valid-state protection; Python differences are explicit.
B3.2.1 Inheritance and code reusability (HL) Yes Yes Parent–child hierarchies, parent initialisation, access impact and is-a judgement.
B3.2.2 Polymorphism and method overriding (HL) Yes Yes Dynamic overriding and runtime method selection through a shared role, plus a bounded Java overloading comparison for static polymorphic behaviour.
B3.2.3 Abstraction and abstract classes (HL) Yes Yes Abstract superclasses, required operations, shared implemented behaviour, non-instantiability, modular callers and the distinction from encapsulation.
B3.2.4 Composition and aggregation (HL) Yes Yes Whole–part relationships classified through ownership and meaningful independent lifetime, with filled/hollow UML diamonds.
B3.2.5 Design patterns (HL) Yes Yes Singleton, Factory and Observer taught from recurring design problems, with small implementations, application judgements and explicit benefits/trade-offs.
B4.1.1–B4.1.6 Abstract data types (HL) Separate No Outside the current practical companion sequence; retained as a later HL section.
HL boundaries: T16 recursion covers HL-only B2.4.4–B2.4.5. T22–T26 cover HL-only B3.2.1–B3.2.5. B4 abstract data types are not being marked complete here because they remain outside the current published practical sequence.