Curriculum map
Course map
See the complete Code Companion programming journey and how each technique maps to the IB Diploma Programme Computer Science standards it deliberately teaches and practises.
26 TECHNIQUES · JAVA + PYTHON
The programming journey at a glance
Follow the route from core programming foundations through data, algorithms and object-oriented programming. HL-only content is marked clearly.
Programming foundations
9 techniques
Data, files and algorithms
8 techniques
Object-oriented programming
4 techniques
HL object-oriented programming
5 techniques · HL only
26 techniques
T01–T26 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.
DETAILED AUDIT
IB standards coverage
Use this table to check exactly where a standard is explained, practised, embedded or intentionally kept separate from the programming sequence.
| 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. |