The table shows where the syllabus names each tool. Click a tool to jump to its section.
| Tool | What it helps you do | Focus areas that name it |
|---|---|---|
| Flowcharts | Show the steps of an algorithm with shapes and arrows | Building mechatronic and automated systems; Creating games and simulations; Developing apps and web software |
| Pseudocode | Write the same steps in short, plain-English lines | The same three focus areas as flowcharts |
| IPO charts | Plan the inputs, processes and outputs of a program | Creating games and simulations |
| Decision trees | Map every answer a program could give | Creating games and simulations |
| Storyboards and wireframes | Plan screens, scenes and prototypes before building them | Designing for user experience. It is also a common tool for planning screens in any focus area. |
| Trace tables and desk checking | Check an algorithm by hand, step by step | Building mechatronic and automated systems; Creating games and simulations; Developing apps and web software |
| Test cases and test data | Decide what to try, and what should happen | All six focus areas |
| Use cases and requirements | Say what a solution must do, and how well | All six focus areas |
| Network maps and sociograms | Draw people or devices and the links between them | Modelling networks and social connections |
| Spreadsheets | Summarise, sort, filter and chart data | Designing for user experience; Analysing data |
| Simple SQL | Ask a database questions and change its data | Modelling networks and social connections; Analysing data |
| Data modelling | Plan tables, keys and the links between them | Designing for user experience; Modelling networks and social connections; Analysing data |
| Data types and validation | Choose the right kind of data, and check it | All six focus areas (validation is named in the first three) |
Flowcharts
A flowchart shows the steps of an algorithm with shapes and arrows. An algorithm is a step-by-step plan for solving a problem.
The syllabus asks you to represent algorithms with flowcharts in mechatronic systems, games and apps.
The shapes
- Terminator (rounded ends): START at the top and END at the bottom.
- Process (rectangle): one action or calculation, such as “Add 1 to count”.
- Decision (diamond): a yes or no question. Both exits are labelled Yes or No.
- Input or output (parallelogram): data coming in, such as “Input age”, or going out.
- Subprogram (rectangle with a line down each side): a named task done elsewhere.
Concept diagram
The five flowchart symbols
A key to the five symbols this site uses in flowcharts. Each symbol has one job, so each one has one shape.
What to notice
- Only the terminator has rounded ends. Every flowchart starts and ends with one.
- The decision is the only symbol with two exits, and both exits must be labelled Yes or No.
- Process, input or output, and subprogram each hold one short step. A subprogram is a named task that is done somewhere else.
Try thisChoose a routine you know, such as making toast. Write each step on its own card, then sort the cards into these five kinds of symbol.
Arrows show the order. START has one arrow out. END can have more than one arrow in, because two paths can finish at the same END.
How to draw one, step by step
- Write the steps in plain words, in order.
- Draw START at the top and END at the bottom.
- Turn each step into a shape. Use a rectangle for an action and a diamond for a question.
- Join the shapes with arrows that follow the order.
- Label both exits of every decision Yes or No.
- START, then input the age.
- Decision: is the age 13 or more? Two exits, Yes and No.
- Yes: show “You can join the club”, then END.
- No: show “Sorry, you need to be 13 or older”, then END.
Flowchart
Flowchart: the club check
Read from top to bottom. The decision has two exits, and each one is labelled Yes or No. Both paths finish at END.
What to notice
- The first parallelogram holds the input, because the age comes in from the person using the program.
- Each message is an output, so it is also a parallelogram. It holds the exact words the program shows.
- Both paths end at the same END, so the program always finishes in one place.
Try thisTrace the flowchart with the ages 12 and 13. Which message does each age get? Then write the pseudocode for the same check.
Pseudocode
Pseudocode writes an algorithm as short, plain-English lines. It is not a real programming language, so a computer cannot run it. Its job is to help people follow the logic before they write code.
Use the same few keywords every time. Write keywords in capitals, put one step on each line, and indent the lines inside an IF or a loop.
Here is the club check, written three ways. Each row matches one flowchart shape to its pseudocode and Python lines.
| Flowchart shape | Pseudocode | Python |
|---|---|---|
| Input (parallelogram): “Input age” | INPUT age | age = int(input("How old are you? ")) |
| Decision (diamond): “age 13 or more?” | IF age >= 13 THEN | if age >= 13: |
| Yes exit (output) | OUTPUT "You can join the club" | print("You can join the club") |
| No exit (output) | ELSE, then OUTPUT "Sorry, you need to be 13 or older" | else:, then print("Sorry, you need to be 13 or older") |
| End of the decision | END IF | Indentation ends the block |
# The club check, written in Python
age = int(input("How old are you? ")) # input() gives text, so int() makes it a whole number
if age >= 13:
print("You can join the club")
else:
print("Sorry, you need to be 13 or older")Worked example: counting down from 3 with a loop. The loop repeats while count is more than 0.
SET count TO 3
WHILE count > 0
OUTPUT count
SET count TO count - 1
END WHILE
OUTPUT "Go!"The loop outputs 3, then 2, then 1. When count becomes 0, the loop stops and “Go!” is output. The full output is 3, 2, 1, Go!
IPO charts
An IPO chart is a planning table with three columns: Input, Process and Output. Before a program is written, you list what goes in, what the program does with it, and what comes out.
The Creating games and simulations focus area names IPO charts as a development tool, so they are useful when you design a game.
How to make one, step by step
- Write the task in one sentence.
- List every input: data the user types, and values the program already holds.
- List the process: the steps that turn the inputs into the output, in order.
- List the output: what the user sees or receives.
- Check that someone could build the program from the chart alone.
Block diagram
IPO chart: the concert ticket program
An IPO chart is a table with three columns. The arrows show the order: the inputs go into the process, and the process makes the output.
| Input | Process | Output |
|---|---|---|
| Number of tickets, typed by the buyer (for example, 3) | Multiply the number of tickets by $12 | Total cost (for example, $36) |
| Price per ticket: $12, stored in the program (not typed) | — | — |
What to notice
- The number of tickets is typed in, so it is an input.
- The price is an input too, even though the buyer never types it. The program stores it.
- The only process is the multiplication. Its result is the output: the total cost.
Try thisMake an IPO chart for a program that works out the change from $20 when one ticket costs $12. Which input is typed in, and which is stored in the program?
The price is an input even though the buyer never types it. Inputs can be typed in, or stored in the program.
Decision trees
A decision tree starts with one question at the top. Each answer follows a branch down to the next question, or to an outcome at the end of the path. A decision tree shows every path a program could take, so you can check that none are missing.
Think of it as a flowchart that only asks questions. Every branch moves forward and ends in an outcome, so there are no loops.
How to draw one, step by step
- Write the first question at the top, in a box.
- Draw a branch for each answer, and label every branch Yes or No.
- At the end of each branch, put the next question in a box, or write the outcome if no more questions are needed.
- Keep going until every path ends in an outcome.
Enrolled at this school?
No -> Not allowed to borrow a laptop
Yes -> Returned the last laptop on time?
No -> Return the old laptop first
Yes -> Is a laptop free?
No -> Join the waiting list
Yes -> Borrow a laptopDecision tree
Decision tree: borrowing a laptop
Boxes hold the questions and the outcomes. Every branch is labelled Yes or No. The highlighted path follows one student from the first question to an outcome.
What to notice
- Each question has its own box, and both of its branches are labelled.
- Every path ends in an outcome, so no student is left without an answer.
- The highlighted student answers Yes, Yes, then No, so the outcome is Join the waiting list.
Try thisA student is enrolled but did not return the last laptop on time. Follow the tree and name the outcome.
Storyboards and wireframes
A storyboard is a set of numbered frames. Each frame shows one moment: what the screen or scene looks like, what the user does, and what happens next. Designers use storyboards to plan an animation or a game before they build it. A storyboard is also a common tool for planning screens in any focus area, such as an app or a website.
A wireframe is a simple layout sketch of one screen. It uses plain boxes with labels, such as Title, Image or Button. It has no colours and no real content, so people can focus on where things go. A prototype is a trial model that tests an idea before the final product is built. It can be a paper sketch or a clickable digital mock-up.
How to make a storyboard, step by step
- Write the story or task in one sentence.
- Draw four to six numbered boxes, one for each moment.
- In each box, sketch the screen or describe the scene.
- Under each box, write what the user does and what happens next.
- Read the frames in order, as the user would. Does the story flow smoothly?
| Frame | What the user sees | What the user does | What happens next |
|---|---|---|---|
| 1 | The title “Maths Quest” and a Start button | Taps Start | Frame 2 |
| 2 | “7 × 8 = ?” and an answer box | Types 56 and taps Submit | Frame 3 |
| 3 | “Correct! Score: 1 out of 1” (when 56 was typed) and a Play again button | Taps Play again | Back to frame 1 |
Wireframe
Wireframe: the title screen
A wireframe is a plain sketch of one screen. Boxes and outlines show where things go, not what they look like.
What to notice
- The grey box at the top is for the title. The wireframe shows where the title goes, not the words.
- The Start button is the biggest control, so it is easy to find.
- Settings is a small link at the bottom, so it does not compete with Start.
Try thisSketch the Play again screen from frame 3 of the storyboard. Use the same kind of boxes, and label each one.
Trace tables and desk checking
A trace table records the value of each variable at each step of an algorithm. Desk checking means checking an algorithm by hand, on paper, before you run it. NESA’s glossary describes tracing as following an algorithm to check its logic and correctness, using a sample of typical inputs.
A variable is a labelled box that stores a value, such as total.
How to trace, step by step
- Make one column for each variable, and one for the output.
- Write the starting values in the first row.
- Work through each line in order. When a value changes, write the new value in the next row.
- For a loop, write one row each time round the loop.
- Compare the final output with what the task says it should be.
SET total TO 0
SET count TO 0
FOR EACH score IN (4, 7, 2)
SET total TO total + score
SET count TO count + 1
END FOR
OUTPUT total / count| Step | score | total | count |
|---|---|---|---|
| Start | (none) | 0 | 0 |
| Loop 1 | 4 | 4 | 1 |
| Loop 2 | 7 | 11 | 2 |
| Loop 3 | 2 | 13 | 3 |
| End | (none) | 13 | 3 |
The output is 13 ÷ 3, which is about 4.33. The trace shows the algorithm gives that answer for this sample.
Test cases and test data
A test case is a plan for one check of a program. It has three parts: the test data you type in, the expected output (what should happen), and the actual output (what really happens). If they match, the test passes.
Every focus area asks for test cases. There are three kinds of test data:
- Typical: normal data, such as 15 for an age.
- Boundary (edge): values on a limit, such as 12 and 13 for “13 or older”.
- Invalid: data the program should reject, such as “twelve”.
How to write test cases, step by step
- Take each rule, such as “13 or older can join”.
- Write one typical test, then boundary tests: the limit and the value just below it.
- Write invalid tests: wrong types, or values the rules do not allow.
- Write the expected output first, then mark each test Pass or Fail.
if age > 13:. Four tests were run on it.| Test | Kind of data | Input | Expected output | Actual output | Result |
|---|---|---|---|---|---|
| 1 | Typical | 15 | You can join the club | You can join the club | Pass |
| 2 | Boundary (limit) | 13 | You can join the club | Sorry, you need to be 13 or older | Fail |
| 3 | Boundary (below it) | 12 | Sorry, you need to be 13 or older | Sorry, you need to be 13 or older | Pass |
| 4 | Invalid (text) | twelve | Please type a whole number | An error stops the program | Fail |
Test 2 and Test 4 showed the two faults. This fixed version handles both. Run all four tests again.
text = input("How old are you? ")
if not text.isdigit(): # digits only (also rejects negatives)
print("Please type a whole number")
else:
age = int(text)
if age >= 13: # fixed: 13 is now allowed
print("You can join the club")
else:
print("Sorry, you need to be 13 or older")Use cases and requirements
A requirement is something a solution must do, or must be like. Before anyone builds a program, the people who will use it agree on its requirements. There are two kinds:
- Functional requirements say what the solution must do, such as “shows each student’s due date”.
- Non-functional requirements say how well it must work, such as how fast, easy, safe or private it is.
A use case describes one thing a user does with a solution, step by step. It names the actor (the user or device), the goal and the main steps.
How to write a use case, step by step
- Name it with a short verb phrase, such as “Borrow a book”.
- Name the actor and the goal.
- List the main steps in order, showing what the user does and what the system does.
- Add what happens if something goes wrong.
- The student scans their library card.
- The system checks the card and shows the student’s name.
- The student scans the book.
- The system records the loan and shows the due date.
- If the card is not recognised, the system shows “Card not recognised” and the loan stops.
Requirements for the library app:
| Requirement | Type | Why it matters |
|---|---|---|
| The system shows the due date after each loan | Functional | The student needs to know when to return the book. |
| The screen responds within two seconds of a tap | Non-functional (speed) | Students will not want to wait. |
| Buttons are large enough to tap easily on a phone | Non-functional (ease of use) | Small buttons cause mis-taps. |
| Student details can only be seen by logged-in staff | Non-functional (privacy and security) | Personal information must be protected. |
Network maps and sociograms
A network map shows devices or people as dots, and the connections between them as lines. In a network map, each dot is a node, and each line is a link. A sociogram is a network map of people, showing who is linked to whom.
The degree of a node is the number of links that touch it. A path is a route from one node to another, following the links. The shortest path has the fewest links.
How to draw one, step by step
- List the nodes: each person or device.
- Draw each node as a labelled circle.
- For each node, list who or what it is directly linked to.
- Draw one line for each link. Do not draw the same link twice.
- Count the degree of each node, then trace paths along the lines.
| Node | Linked to | Degree |
|---|---|---|
| Ava | Ben, Chloe | 2 |
| Ben | Ava, Chloe | 2 |
| Chloe | Ava, Ben, Dev | 3 |
| Dev | Chloe, Ella | 2 |
| Ella | Dev | 1 |
Chloe has the highest degree, so she is the best connected person in this group. The path from Ava to Ella is Ava, Chloe, Dev, Ella: 3 links. The longer route through Ben has 4 links.
Graph
Sociogram: five friends
A sociogram is a network map of people. Each circle is a node (a person), and each straight line is a link between two people.
What to notice
- Chloe has 3 links, the most of anyone, so she is the best connected person in this group.
- The highlighted path goes Ava, Chloe, Dev, Ella. It has 3 links.
- Ben is linked to Ava and Chloe, but not to Dev or Ella.
Try thisAdd a link between Ben and Dev. Which two nodes have a new degree, and how many shortest paths from Ava to Ella are there now?
Spreadsheets
A spreadsheet is a grid of cells. Each cell has a column letter and a row number, such as B3 (column B, row 3). That address is the cell reference. A range is a block of cells, written with a colon: C2:C6 means cells C2 down to C6.
A formula starts with an equals sign and uses functions, listed here.
| Function | What it does | Example |
|---|---|---|
| SUM | Adds the numbers in a range | =SUM(C2:C6) |
| AVERAGE | Works out the mean | =AVERAGE(C2:C6) |
| COUNT | Counts the cells that hold numbers | =COUNT(C2:C6) |
| COUNTIF | Counts the cells that match a rule | =COUNTIF(B2:B6,"Red") |
| MIN and MAX | Finds the smallest or largest | =MAX(C2:C6) |
| IF | Picks one result if a test is true, another if not | =IF(C2>=12,"Yes","No") |
Made-up sports day list:
| Row | A | B | C |
|---|---|---|---|
| 1 | Name | Team | Score |
| 2 | Ava | Red | 14 |
| 3 | Ben | Blue | 9 |
| 4 | Chloe | Red | 17 |
| 5 | Dev | Green | 11 |
| 6 | Ella | Blue | 20 |
=SUM(C2:C6): 14 + 9 + 17 + 11 + 20 = 71=AVERAGE(C2:C6): 71 ÷ 5 = 14.2=COUNTIF(B2:B6,"Red"): 2, for Ava and Chloe=IF(C3>=12,"Yes","No"): Ben scored 9, so “No”
How to use one, step by step
- Type a heading in row 1, and one kind of data in each column.
- Start a formula with = in an empty cell. Check that the range covers every row.
- Sort by score, highest first: Ella, Chloe, Ava, Dev, Ben.
- Filter to one team, such as Blue: Ben and Ella.
- Use conditional formatting to colour cells that meet a rule, such as scores of 15 or more.
- Select the names and scores, then insert a column chart.
Menu names differ between programs. Look for Sort, Filter, Conditional formatting and Chart.
Concept diagram
A spreadsheet grid, with cell C6 highlighted
Columns are lettered across the top and rows are numbered down the side. A cell’s address is its column letter followed by its row number.
What to notice
- C6 is in column C, in row 6. It holds 20, which is Ella’s score.
- Row 1 holds the headings, so the scores start at row 2. The range C2:C6 covers the five scores.
- Because C6 is inside C2:C6, the formula =SUM(C2:C6) includes Ella’s score.
Try thisWhich cell holds Chloe’s score? Write its address.
=SUM(C2:C6) one row down gives =SUM(C3:C7). To keep a reference fixed, add dollar signs: =SUM($C$2:$C$6).Simple SQL
SQL is a language for asking a database questions and changing its data. A database stores data in tables. Each table has records (rows, one for each item) and fields (columns, one for each kind of fact).
The syllabus names SELECT, WHERE, ORDER BY and LIMIT, and asks you to insert and update data. AND, OR and NOT join conditions. FROM, INTO, VALUES and SET complete these statements. DESC and ASC set the order (highest first, or lowest first). The syllabus does not name them, so treat them as an extra. No other keywords appear here.
This is a made-up table called Games.
| GameID | Title | Genre | ReleaseYear | Price ($) |
|---|---|---|---|---|
| 1 | Star Quest | Adventure | 2019 | 30 |
| 2 | Block Builder | Puzzle | 2021 | 15 |
| 3 | Road Rally | Racing | 2018 | 25 |
| 4 | Pixel Pets | Puzzle | 2023 | 10 |
| 5 | Sky Ninja | Action | 2022 | 35 |
| 6 | Dino Dig | Adventure | 2020 | 20 |
Worked examples
Query 1: the puzzle games and their prices.
SELECT Title, Price
FROM Games
WHERE Genre = 'Puzzle';Result: Block Builder (15) and Pixel Pets (10).
Query 2: the three most expensive games.
SELECT Title, Price
FROM Games
ORDER BY Price DESC
LIMIT 3;Result: Sky Ninja (35), Star Quest (30) and Road Rally (25).
Query 3: non-puzzle games that cost less than $30, in alphabetical order.
SELECT Title
FROM Games
WHERE NOT (Genre = 'Puzzle') AND Price < 30
ORDER BY Title ASC;Result: Dino Dig, then Road Rally. To match either genre instead, use OR: WHERE Genre = 'Adventure' OR Genre = 'Racing' returns Dino Dig, Road Rally and Star Quest.
Query 4: add a game, then change a price.
INSERT INTO Games (GameID, Title, Genre, ReleaseYear, Price)
VALUES (7, 'Ocean Run', 'Racing', 2024, 18);
UPDATE Games
SET Price = 12
WHERE GameID = 2;Result: the table gets a seventh row, Ocean Run. Block Builder now costs $12, not $15. Without the WHERE line, the UPDATE would change every row.
Data modelling
Data modelling means planning how data will be organised before a database is built. You decide what to store (entities), which facts to keep about each (attributes) and how they link (relationships).
Each table needs a primary key: an attribute whose value is different for every record, such as PlayerID. A foreign key is a field that holds another table’s primary key.
How to model, step by step
- List the entities. For a sports club, these are Team and Player.
- List the attributes of each entity, and choose a primary key.
- Decide how the entities link. One team has many players, but each player is in one team: one-to-many.
- Put the foreign key on the “many” side. The Player table holds TeamID.
- Check that each player points to exactly one team.
Team table
| TeamID (PK) | TeamName | Coach |
|---|---|---|
| T1 | Riverside Robins | Ms Tran |
| T2 | Hilltop Hawks | Mr Osei |
Player table
| PlayerID (PK) | PlayerName | Position | TeamID (FK) |
|---|---|---|---|
| P1 | Sam | Goal | T1 |
| P2 | Mia | Defence | T1 |
| P3 | Jordan | Midfield | T2 |
| P4 | Leo | Goal | T2 |
The team name is stored once, in the Team table, not repeated in every player row. If it changed, only one row would need changing.
Concept diagram
Two linked tables: Team and Player
Each table is a box with its name on top and one field on each line. The line joins the two tables through TeamID.
What to notice
- PK marks the primary key. Each value in that field is different for every record.
- FK marks the foreign key. The TeamID in Player holds a TeamID from the Team table.
- The 1 is at the Team end and many is at the Player end, so one team has many players.
Try thisFind the team for player P3, Jordan. Write down the TeamID, then the team name from the Team table.
Data types and validation
A data type tells the computer what kind of value a field or variable holds. The right type stops mistakes. For example, you cannot add up names.
| Data type | What it holds | Example |
|---|---|---|
| Integer | Whole numbers, with no decimal point | 14 goals, -3 |
| Float | Numbers with a decimal point | 4.5 minutes, $2.50 |
| String | Text, including digits that are not used in sums | Ava, 0412 345 678 |
| Boolean | One of two values, True or False | paid = True |
| Date | A calendar day, written day/month/year | 14/03/2027 |
Names vary between programs, so these are the common names. A phone number should be a string. 0412 345 678 starts with a zero, and an integer would lose that zero.
Validation checks that data is sensible before the program uses it. The main checks are:
| Check | Question it asks | Example |
|---|---|---|
| Presence | Has something been entered? | A name must not be blank. |
| Type | Is it the right kind of data? | An age must be a number, not “twelve”. |
| Range | Is it between the smallest and largest allowed values? | A test score must be from 0 to 100. |
| Format | Does it follow the right pattern? | A date must look like dd/mm/yyyy. |
text = input("Enter the score: ")
if text == "": # presence: something was typed
print("Please type a score.")
elif not text.isdigit(): # type: digits only, so a minus sign is also rejected
print("Scores must be whole numbers.")
elif int(text) > 100: # range: 100 is the largest allowed
print("Scores must be 100 or less.")
else:
print("Score accepted:", int(text))Each check in the code matches a row of the table. Try nothing typed, then “abc”, “150” and “42”. They give the presence, type and range messages, and then “Score accepted: 42”.