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 standard | Focus | Technique(s) | Explained here | Challenge evidence | Notes |
|---|---|---|---|---|---|
| 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.