Skip to content

Criterion C: System overview

6 marksPlanning budget: 100 counted wordsIB recommended: 150 words

Criterion C is the design of your product. The IB guide says it should include a system model with the key components, their relationships, the rules governing their interaction and the user interface, the algorithms those components need, and a testing strategy, with enough clarity “to enable a third party to recreate the product”.

What you need to produce

  • A system model: diagrams of the components, how they connect, how data is stored and the user interface
  • Algorithms for the components: flowcharts, pseudocode or structured natural language
  • A testing strategy that aligns with the success criteria, usually a test-plan table

Word budget

About 100 counted words. Diagrams (including all the text inside them and their captions) and pseudocode are not counted, so draw the system model and write the algorithms as flowcharts or pseudocode rather than describing them in prose; see the diagram examples. Design and test-plan tables are typically not counted either (IB FAQ), as long as their cells are short entries; a cell of extended writing (more than about ten words) counts. See how words are counted and allocated.

Which diagrams? There is no compulsory set. Use the diagram selection guide on this page to choose the artefacts that answer the five design questions for your solution, and the diagram examples at the end of this page to see each one done properly.

Subsections

SubsectionWords (plan)Suggested rangeMain evidence
C1 System model3520–45mainly diagrams, not counted
Diagram selection guide––teaching material: choose your system-model artefacts
C2 Algorithms3020–45mainly flowcharts and pseudocode
C3 Testing strategy3515–50test-plan table with short cells, not counted

Each subsection below has the same seven parts: purpose, what to include, suggested length, a worked example, supporting evidence, lessons from the IB exemplars and a completion checklist. Labels show where each piece of guidance comes from:

IB requirement From the official IB Computer Science guide (IA_details.pdf)IA Guide Recommendation from the IA Documentation Guide (your teacher's analysis of IB exemplars)Teaching tip Extra suggestion added by this website
Official level descriptors for Criterion C (best-fit marking)
MarksLevel descriptor (IB Computer Science guide)
0The response does not reach a standard described by the descriptors below.
1–2outlines a limited system model
identifies algorithms for the components of the system model
identifies a testing strategy for at least one success criterion
3–4constructs a system model that is not complete
constructs algorithms for the components of the system model that lead to partial functionality of the product
outlines a testing strategy that aligns with at least three success criteria
5–6constructs a complete system model
constructs algorithms for the components of the system model that enable the product to perform
describes a testing strategy that aligns with the success criteria

1 Purpose

Show the components of the system, how they are connected and how the user interacts with it, completely enough that someone else could rebuild the product.

2 What to include

  1. IB requirementA system model consists of diagrams that include the components of the system and how they are connected. It includes the design of the user interface.
  2. IB requirementA complete system model (5–6) covers all the components. The IB notes a complete model “does not include the algorithms”: those belong in C2.
  3. IA GuideUse several diagram types (for example use-case, class/UML, UI wireframes, data or file flow).
  4. IA GuideModel your core output too, not just the input screens.
  5. IA GuideLabel every diagram correctly (do not call a class diagram a “use-case diagram”).
  6. Teaching tipChoose artefacts with the five-question selection guide below; one good diagram per question is usually enough.
  7. Teaching tipUse the same names everywhere: components in the decomposition (B1), modules in the diagrams and files in your code.

3 Suggested length

About 30–50 counted words (planning allocation 40). The diagrams do the work and are not counted. Use a few words to say what each diagram shows. Captions that label or identify a diagram are not counted.

4 Worked example

Worked example (illustrative) · PracticePal, a fictional project26 counted words (suggested 20–45)

The model shows who uses PracticePal (C1), how its parts connect (C2), how data is stored (C3) and the interface, including outputs and error messages (C4).

Use-case diagram for PracticePal: Student, Head of music and the Clock (scheduled task) as actors, and the services the system offers each of them, inside the system boundaryPracticePalLog inView free slotsBook a slotJoin waiting listCancel a bookingCheck inCheck booking rulesBlock a roomDownload usagereportOffer slot to nexton waiting listRelease no-showsStudentHead ofmusicClock(scheduled task)«include»«include»«include»«extend»slot fullShaded use cases are carried out by the system for other use cases, not started by an actor.
Figure C1: use-case diagram

Scroll sideways to see the whole diagram.

Architecture diagram for PracticePal: browsers on phones and laptops talk to the Flask web app on the school web server over HTTPS; a scheduler runs timed jobs; all data goes through one data-access module to an SQLite file; offer emails go to the school's SMTP server and usage reports are written as CSV filesClient devicesSchool web serverPython 3.12 · Flask 3Browserstudent's phone / laptopBrowserhead of music's laptopFlask web approutes · rules · waiting list · reportsSchedulerAPScheduler, every 5 minData accessdb.py: the only module with SQLCSV filesexports/SQLitepracticepal.dbSchool emailSMTP serverHTTPSoffer emailsweekly reportruns no-show andoffer-expiry jobsSQLDashed box = external service that PracticePal uses but does not control. Module-level detail: see the component dependency diagram.
Figure C2: architecture diagram

Scroll sideways to see the whole diagram.

ERD for PracticePal in crow's foot notation: STUDENT, BOOKING, ROOM, WAITLIST_ENTRY, NEIGHBOUR and ROOM_BLOCK with primary and foreign keys; for example a student makes zero or many bookings and each booking is for exactly one roomSTUDENTPKstudent_idnameemailpassword_hashroleBOOKINGPKbooking_idFKstudent_idFKroom_codestart_timeend_timeloudstatusROOMPKroom_codenameloud_allowedWAITLIST_ENTRYPKentry_idFKstudent_idFKroom_codeslot_startjoined_atstateNEIGHBOURPK,FKroom_aPK,FKroom_bROOM_BLOCKPKblock_idFKroom_codefrom_dateto_datereasonmakesis forwaits forforroom_aroom_bblocked byAt each end of a line: the symbol touching the entity = maximum (bar one, crow's foot many); the outer symbol = minimum (bar one, circle zero).
Figure C3: ERD

Scroll sideways to see the whole diagram.

Annotated wireframe of PracticePal's week grid on a laptop: week selector, room tabs, a grid of days and 30-minute slots showing free, booked, your own and blocked slots, and a booking panel with the loud-instrument option, weekly counter and an error message areapracticepal.school.org/week?room=P5&w=2026-11-02PracticePal◀ Week of 2 Nov 2026 ▶Maya L. ▾ | My bookingsP1P2P3P4P5 ♪P6 ♪♪ = loud instruments allowedMon 2Tue 3Wed 4Thu 5Fri 612:00BookedBooked12:30BookedselectedYou13:00Booked13:30Booked16:0016:3017:00Blocked17:30BlockedFreeBookedYour bookingBlockedBook this slotRoom P5 (Drum room)Tue 3 Nov, 12:30–13:00Loud instrument (drums, amp)Confirm bookingYou have 2 of 3 bookings this weekError message areae.g. “Not booked: P6 next doorhas a loud booking at 12:30.”Join waiting list(only shown when the slot is taken)1234567
Figure C4: week-grid wireframe

Scroll sideways to see the whole diagram.

Illustrative only: the people, data and results are invented to show the level of detail expected. Your documentation must describe your own problem, your own evidence and your own decisions.

5 Supporting evidence (to be added to your appendix)

PracticePal's model also includes a site map, structure chart, booking state diagram and validation and error-message table.

Choose from the selection guide. For a typical database-backed app: a use-case diagram, an architecture diagram or site map, an ERD with schema, and annotated wireframes. For a game: a state diagram, an event–action table and screen designs. Browse the diagram examples.

6 Lessons from the IB exemplars

From the IA Documentation Guide's analysis of real, examiner-graded IB Computer Science IAs.

  • A single diagram put a project in the lowest band; top scorers used 3+ diagram types.For your IA: Answer several of the five design questions, each with the artefact that suits your solution.

7 Completion checklist

Ticks are saved in this browser only, so you can use the list while you draft.

Your system model and algorithms should answer five questions about your design. Under each question are the kinds of documentation that can answer it, with a worked example of each.

These are choices, not a checklist. Pick the artefacts that suit your solution and language. Python, Java, JavaScript and other languages are all fine, and your solution does not have to use OOP, a relational database, a website or a GUI. Some artefacts answer more than one question (a wireframe also shows outputs; an ERD also shows rules). Draw each one once and refer to it, rather than repeating it. The IA Guide found that top-scoring IAs used three or more diagram types, and that a single diagram put a project in the lowest band.

IB requirement In the IB's terms, questions 1–4 and the interaction diagrams of question 5 (data flow, sequence, state) make up the system model; flowcharts, pseudocode, decision tables and query designs are the algorithms (C2).

1What does the system do and for whom?

Show the services your system provides and who can use each one. This is the outside view: no screens, no code, just actors (people or other systems, including a clock) and what they can do. It is the quickest way for an examiner to check your design covers every success criterion.

Suitable documentation

  • Use-case diagram: actors, the use cases they start, the system boundary, and «include»/«extend» for shared or optional behaviour.
  • User roles and permissions table: which role can view, create, change or delete what. Essential when you have logins or admin features.

Choosing for your solution

Most solutions with more than one kind of user benefit from a use-case diagram. If there is only one user and no login (a single-player game, a data-analysis tool), a short list of features linked to success criteria may be enough, and your effort is better spent on questions 4 and 5.

What useful design evidence looks like

  • Each use case is a verb phrase (“Book a slot”), not a screen name.
  • Every success criterion can be traced to at least one use case; label them with SC numbers if it helps.
  • Automatic behaviour (timers, scheduled jobs) appears, with a clock as the actor.

Revise on this site: B1.1.1 problem specification

2What parts make up the system?

Show the main components, what each one is responsible for and how they connect. Pick the artefact that matches how your solution is actually built: modules and functions for procedural code, classes for object-oriented code, screens for a website, services for anything that talks to an external API.

Suitable documentation

Choosing for your solution

One or two of these is usually right. A Flask or Node web app: architecture + site map. A Python program made of functions: structure chart. A Java or C# program: class diagram. An app calling a weather or payment API: architecture + API specification.

What useful design evidence looks like

  • Each component has a clear responsibility (one line is enough).
  • Connections are labelled: what is sent, in which direction, using what (HTTPS, SQL, a function call).
  • Names match your decomposition in B1 and your code files.

Revise on this site: B3.1.2 class designs · B3.2.4 composition and aggregation · B2.3.4 functions and modularisation · A2.2.2 servers

3How is data organised and stored?

Show both kinds of data: what is stored permanently (database, files, cloud store) and the data structures your program uses while it runs. Document the technology you actually use: a relational database, a document database, a JSON tree and a CSV file each need a different diagram.

Suitable documentation

Choosing for your solution

Firestore or Realtime Database? They are both Firebase products but organise data differently. Cloud Firestore stores documents (sets of fields) inside collections; a document can contain subcollections, and queries run over a collection. Firebase Realtime Database stores one large JSON tree; every value has a path such as /roomStatus/P5/state, and you design by choosing keys and nesting so that each screen reads one branch. Draw the model of the one you use; a Firestore diagram for a Realtime Database project (or the other way round) misrepresents your design.

What useful design evidence looks like

  • Keys and identifiers are shown: primary/foreign keys, document IDs, JSON keys.
  • Types and validation are given for fields (in the diagram or a data dictionary).
  • You explain at least one decision: why a link table, why a subcollection, why a queue instead of a list.

Revise on this site: A3.2.2 ERDs · A3.2.4 tables · A3.2.6 3NF · A3.4.1 database models · B2.2.2 arrays and lists · stacks · queues · linked lists · BSTs · sets · file processing

4How does the user interact with the system?

Show the interface, what the user can do on it, what feedback they get, and what happens when they enter something invalid. The IB guide says the system model includes the design of the user interface, and the IA Guide says to model the outputs, not only the input screens.

Suitable documentation

Choosing for your solution

Graphical apps and websites: annotated wireframes of the key screens (not every screen) plus a validation table. Command-line tools: example sessions. Chatbots and voice interfaces: a conversation flow. Games: screen designs plus the controls (often clearer as an event–action table, see question 5).

What useful design evidence looks like

  • Outputs are designed too: results, confirmations, reports, error messages.
  • Annotations explain behaviour (“greyed out when the slot is taken”), not just labels.
  • Every input has a validation rule and a planned message.

Revise on this site: B2.1.3 exception handling

5How does the system process information?

Show your algorithms, the rules they apply, how parts interact over time and how the system responds to events. This is where the IB's “algorithms for the components of the system model” live, together with the rules governing how components interact.

Suitable documentation

Choosing for your solution

Every algorithm you describe in Criterion D must appear here first. Choose the format that makes each one clearest: a flowchart for branching logic, pseudocode for longer procedures, a state diagram for anything with modes or a lifecycle, a sequence diagram when timing between components matters, SQL query designs when the database does the work.

What useful design evidence looks like

  • The algorithm is detailed enough to code from and is not copied code.
  • Each one is linked to the success criteria it delivers.
  • The key rule is stated once in plain words (for example “two bookings overlap when each starts before the other ends”).

Revise on this site: B1.1.4 flowcharts · searching · sorting · SQL queries · SQL aggregates

Practical selection guide

Start from how your solution is built, then add whatever else your success criteria need.

If your solution is…Start with…
Procedural solution (functions and modules)Structure chart, function specifications, algorithm designs
Object-oriented solutionClass diagram (the relevant classes), sequence diagrams for key interactions
Functional solutionFunction composition / data transformation diagrams, function specifications
Event-driven application or gameEvent–action table, state diagram, screen designs
Relational databaseERD, table schemas, data dictionary, SQL query designs for significant queries
Cloud FirestoreCollection/document structure: fields, document IDs, subcollections and references
Firebase Realtime DatabaseJSON tree: keys, paths and nested values
External APIs or serverless functionsArchitecture diagram, request/response specifications, sequence diagrams
Website or web appSite map, wireframes, validation table
Command-line tool or chatbotExample sessions or conversation flow, plus algorithm designs
Explain your decisions, not just your diagrams. For each significant design decision (a data structure, a table design, a rule, an algorithm), say in a sentence what you chose and how it meets your requirements and success criteria. A diagram with no explanation shows what; the marks in C and D reward showing why.

Artefacts that are often confused

These two……are different because
ERD vs class diagramAn ERD models stored data: entities, attributes, keys and cardinality. A class diagram models program code: classes with attributes and methods, visibility and relationships such as inheritance. A Booking table and a Booking class can both exist, but they are drawn differently.
Data flow diagram vs flowchartA DFD shows where data goes between external entities, processes and data stores, with no order or decisions. A flowchart shows the order of steps in one algorithm, with decisions and loops.
Site map vs deployment architectureA site map shows screens and navigation as the user experiences them. An architecture diagram shows where the software runs and how machines and services communicate.
Decomposition (B) vs structure chart (C)A decomposition breaks the problem into tasks for planning. A structure chart shows the program's modules, which calls which and the data passed.

1 Purpose

Show how each component will work, in a form that is detailed enough to code from, before you write the code.

2 What to include

  1. IB requirementConstruct algorithms for the components of the system model that enable the product to perform (5–6). They can be natural language, flowcharts or pseudocode.
  2. IA GuideUse pseudocode, flowcharts or an indented list, not full code yet.
  3. IA GuideEvery algorithm that appears in Criterion D must appear here first.
  4. Teaching tipStart with the algorithms that carry your success criteria: rules, calculations, searches, sorting, scheduling, scoring, validation. Simple page navigation does not need an algorithm.
  5. Teaching tipWrite the key rule once in plain words (for example the overlap rule) so the examiner can check your logic quickly.
  6. Teaching tipIf your solution relies on database queries, a SQL query design table counts as algorithm design.

3 Suggested length

About 20–45 counted words (planning allocation 30). The flowcharts and pseudocode are the evidence and are not counted; the words say which algorithm covers which success criteria.

4 Worked example

Worked example (illustrative) · PracticePal, a fictional project27 counted words (suggested 20–45)

Figure C5 and the pseudocode describe make_booking (SC4–SC6); offer_next (SC7) and the no-show job (SC8) follow. The significant SQL queries are in a query design table.

Flowchart of PracticePal's make_booking algorithm: validate the slot, then check room blocks, clashes, the weekly cap of three and the loud-neighbour rule; if all pass, insert the booking inside a transaction; every rejection outputs a reasonSTARTINPUT student, room, start, loudSlot valid?(future, 07:30–17:30, :00 or :30)NoOUTPUT Invalid timeYesRoom blockedat that time?YesOUTPUT Room is blockedNoOverlaps a bookingfor this room?YesOUTPUT Slot taken: offerwaiting listNoStudent already has3 bookings that week?YesOUTPUT Weekly limitreachedNoloud AND a neighbourroom has a loud bookingthat overlaps?YesOUTPUT Noise clash withneighbour roomNoBEGIN IMMEDIATE transactionINSERT booking (status = confirmed)Insert succeeded?(no UNIQUE violation)NoOUTPUT Slot just taken(ROLLBACK)YesCOMMIT; OUTPUT “Booked” + bookingENDevery rejectionjoins the END
Figure C5: make_booking flowchart

Scroll sideways to see the whole diagram.

FUNCTION make_booking(student, room, start, loud)
    // SC4–SC6: every check must pass before anything is saved
    end ← start + 30 minutes
    IF NOT valid_slot(start) THEN RETURN "Invalid time"
    IF room_blocked(room, start, end) THEN RETURN "Room is blocked"
    IF overlapping_bookings(room, start, end) > 0 THEN
        RETURN "Slot taken"                      // the page then offers the waiting list (SC7)
    END IF
    IF bookings_in_week(student, week_of(start)) ≥ 3 THEN RETURN "Weekly limit reached"
    IF loud THEN
        FOR EACH n IN neighbours[room]           // dictionary: room → set of rooms
            IF loud_bookings(n, start, end) > 0 THEN RETURN "Noise clash with " + n
        END FOR
    END IF
    BEGIN IMMEDIATE TRANSACTION                  // lock first, so two requests cannot both pass
        repeat the overlap check
        INSERT booking(student, room, start, end, loud, "confirmed")
    COMMIT, or ROLLBACK and RETURN "Slot just taken" if the insert fails
    RETURN booking
END FUNCTION

overlap rule: booking A overlaps B when A.start < B.end AND B.start < A.end
PROCEDURE offer_next(room, slot)              // SC7, called when a booking is cancelled or released
    entry ← first WAITING entry for (room, slot) ORDER BY joined_at   // queue: first in, first out
    IF entry = NULL THEN RETURN                  // nobody waiting: the slot simply becomes free
    entry.state ← "offered";  entry.offered_at ← now
    send offer to entry.student (link expires in 15 minutes)
END PROCEDURE

PROCEDURE every_5_minutes(now)                   // run by the scheduler
    FOR EACH booking WHERE status = "confirmed" AND start + 10 min < now AND NOT checked_in
        booking.status ← "no_show";  offer_next(booking.room, booking.start)        // SC8
    FOR EACH entry WHERE state = "offered" AND offered_at + 15 min < now
        entry.state ← "expired";  offer_next(entry.room, entry.slot)                // SC7
END PROCEDURE
Illustrative only: the people, data and results are invented to show the level of detail expected. Your documentation must describe your own problem, your own evidence and your own decisions.

5 Supporting evidence (to be added to your appendix)

6 Lessons from the IB exemplars

From the IA Documentation Guide's analysis of real, examiner-graded IB Computer Science IAs.

  • Building a feature in D that was never modelled here gets penalised.For your IA: Before you submit, list every algorithm you describe in D and check it appears in C.

7 Completion checklist

Ticks are saved in this browser only, so you can use the list while you draft.

1 Purpose

Plan, before development, how you will show that each success criterion is met and that the product copes with unexpected or incorrect input.

2 What to include

  1. IB requirementDescribe a testing strategy that aligns with the success criteria (5–6); “at least three” only reaches 3–4.
  2. IB requirementThe testing strategy is a systematic approach to evaluating whether the solution works as intended. It should check that code functions correctly and handles unexpected or incorrect inputs. A table of proposed test data and expected outcomes is suggested.
  3. IA GuideOne row per success criterion at least: test → expected result.
  4. IA GuideInclude NORMAL, EXTREME (boundary) and ABNORMAL (invalid) data.
  5. Teaching tipPlan how you will test things that are hard to do by hand: timing, two users at once, large data (efficiency). Criterion D asks for correctness, reliability and efficiency.
  6. IB FAQThe criteria look for evidence of your testing strategy, not all of the testing itself. The teacher support material suggests test tables for a few major algorithms; full testing can go in your appendix if you need to refer to it.
  7. IB FAQTables used for a testing strategy are typically not counted, but extended writing in a table is. Keep each cell to a short entry (data, expected result, SC code) and put explanations in prose.
  8. Teaching tipRefer to success criteria by code (SC4), never by their text, so cells stay short.
  9. Teaching tipKeep the actual results for your appendix; Criterion D justifies the testing of each technique.

3 Suggested length

About 15–50 counted words (planning allocation 35) of prose around the test-plan table. The table is not counted while every cell is a short entry; a cell of more than about ten words counts as extended writing. Keep cells to data and expected results, never explanations.

4 Worked example

Worked example (illustrative) · PracticePal, a fictional project22 counted words (suggested 15–50)

Each success criterion has at least one test, with normal, extreme and abnormal data. Timing and simultaneous bookings are tested with scripts.

PracticePal test plan
TestSCDataInputExpected
T1SC1Normalcorrect loginweek grid shown
T2SC1Abnormalwrong password; student opens /adminerror message; 403
T3SC2NormalP5, this and next week5 × 20 slots, correct states
T4SC3Normalbook a free slot≤ 3 taps; < 2 s
T5SC4Extreme12:30 next to 12:00accepted
T6SC4Abnormalsame slot twice at once, ×200one booking each time
T7SC5Extreme3rd, then 4th booking (incl. Sunday)3rd accepted; 4th refused
T8SC6Normal, abnormalloud next to loud; quietloud refused; quiet accepted
T9SC7Normaljoin queue; booking cancelledfirst offered; passes on after 15 min
T10SC8Extremeno check-in at +9 and +11 minkept; then released as no-show
T11SC9Normalblock P3, 9–13 Novbookings cancelled; students emailed
T12SC10Normal, extremebusy week; empty weekcorrect counts; 0%
T13allAbnormalroom “P9”; 03:00; text as datemessage, not error page
T14SC2, SC4Efficiency2,400 bookings; 30 at oncegrid < 0.5 s; booking < 1 s
Illustrative only: the people, data and results are invented to show the level of detail expected. Your documentation must describe your own problem, your own evidence and your own decisions.

5 Supporting evidence (to be added to your appendix)

  • A test-plan table like the one above. Its actual results, with screenshots and test output, go in your appendix; Criterion D justifies the testing of each technique, and the video shows examples.
  • Validation rules for inputs belong in the validation and error-message table; the abnormal tests check them.

6 Lessons from the IB exemplars

From the IA Documentation Guide's analysis of real, examiner-graded IB Computer Science IAs.

  • “Normal data only” testing was the single most repeated criticism across every exemplar.For your IA: Every criterion that takes input needs extreme and abnormal tests as well as normal ones.

7 Completion checklist

Ticks are saved in this browser only, so you can use the list while you draft.

A worked example of each design artefact, grouped by the five design questions in the selection guide. Choose the ones that suit your solution: nobody needs all of them.

1. What does the system do and for whom?

2. What parts make up the system?

3. How is data organised and stored?

4. How does the user interact with the system?

5. How does the system process information?

Often confused: ERD vs class diagram · data flow diagram vs flowchart · site map vs architecture. See the comparison table.

Criterion C worked examples: word total

SubsectionPlanning allocationWorked example (counted words)
C1 System model3526
C2 Algorithms3027
C3 Testing strategy3522
Total10075

The fictional PracticePal documentation uses 75 of the 100 counted words planned for Criterion C. Across all five criteria it stays within 2,000; see the budget table.