How to do practical questions
One place for every practical question type: flowcharts, data flow diagrams, structure charts, class diagrams, ERDs, decision trees, storyboards, UI mock-ups, network diagrams, trace tables, pseudocode, Python, SQL and HTML/CSS. Each section has a notation key, a numbered method, a worked example, a marking checklist, the top mistakes and links to try one now.
Methods are general advice built from the course notation and the NESA specification and marking material on the full pages; check symbols with your teacher. Tap a section to open it.
- Flowchart
- Data flow diagram (DFD)
- Structure chart
- Class diagram
- ERD and database schema
- Decision tree
- Storyboard
- UI mock-up
- Network diagram
- Trace table
- Pseudocode
- Python
- SQL
- HTML and CSS
Flowchart
A flowchart shows the steps of an algorithm with standard shapes, read top to bottom. Full page with NESA marking and 3 practice prompts.
Notation key
Method
- Read the question and list the steps in order. Underline every decision and every repeat.
- Draw Start, then each step down the page, one shape per step. Use the right shape (Get/Display = parallelogram, calculations = rectangle).
- Draw each decision as a diamond with exactly two exits, labelled Yes and No.
- A loop is an arrow that goes back UP to an earlier step (usually the decision or the Get).
- Finish with End. Check every path reaches End and every arrow has an arrowhead.
Worked example
Task. A program asks for a ticket count that must be 1 to 10. Draw a flowchart that repeats the question until the count is valid, then displays it.
Why it earns marks: Start/End terminators, parallelograms for Get and Display, one diamond with labelled Yes and No, and the No arrow returns to the Get so the loop is visible.
Marking checklist
- Start and End are rounded terminators
- Input and output use parallelograms; calculations use rectangles
- Every decision is a diamond with exactly two labelled exits
- Loops return to the correct earlier step
- Every path reaches End; every arrow has an arrowhead
- Text matches the question (same variable names and conditions)
Top mistakes
- Decision exits left unlabelled
- Using a rectangle for Get or Display
- A loop-back arrow that goes to the wrong shape (for example back to Start or to an initialiser)
- Two arrows leaving a process
- No End, or a path that stops in the middle
Data flow diagram (DFD)
A DFD shows how data moves between people, processes and stores. Level 0 is the whole system as one process; Level 1 splits it into numbered processes. Full page with NESA marking and 3 practice prompts.
Notation key
Method
- List the external entities, the processes (verbs), the stores (nouns) and the data that moves.
- Level 0: one circle for the system, the entities around it, every flow labelled.
- Level 1: number the processes, add stores, then draw each flow from the question one at a time.
- Every flow must touch a process. Never join entity to entity, entity to store or store to store.
- Check every process has at least one input AND one output, and every arrow is labelled.
Worked example
Task. Draw the Level 0 and Level 1 DFD for a parking system (entities Driver and Attendant).
Why it earns marks: entities as rectangles, numbered process circles named with verbs, an open store, and every arrow labelled with the data it carries.
Marking checklist
- External entities are rectangles named with nouns
- Processes are circles named with verb phrases (numbered at Level 1)
- Data stores are open rectangles named with nouns
- Every data flow is labelled and has an arrowhead
- No flow goes straight between two entities, two stores, or an entity and a store
- Every process has an input and an output
Top mistakes
- Unlabelled arrows
- Entity-to-store flows that skip the process
- A process with only inputs (or only outputs)
- Naming a process with a noun
- Mixing levels: stores or sub-processes on a Level 0 diagram
Structure chart
A structure chart shows the modules (subroutines) of a program and how they call each other, with the data passed between them. Full page with NESA marking and 3 practice prompts.
Notation key
Method
- Find the mainline (top box) and the tasks it must do.
- Place the sub-modules in call order, left to right, each joined to its caller by a line.
- For each module decide what data goes in and out. Draw an arrow with an open circle for data and a filled circle for a true/false flag, and label it.
- Add a diamond where a module runs only sometimes, and a curved arrow where it repeats.
- Check names are short verb phrases and every module is reachable from the mainline.
Worked example
Task. Show a car park program with mainline, decision and repetition.
Why it earns marks: modules below the mainline in call order, labelled data couples, a flag, a decision diamond and a repetition arrow.
Marking checklist
- Mainline at the top; modules below it
- Calls shown top to bottom, left to right in order
- Data couples (open circle) and flags (filled circle) are labelled and point the right way
- Selection shown with a diamond, repetition with a curved arrow
- Module names are clear verb phrases
Top mistakes
- Missing data names on couples
- Using a filled circle for ordinary data
- Joining modules sideways instead of through the caller
- Forgetting the repetition or decision symbol
Class diagram
A class diagram shows classes, what they hold (attributes), what they do (methods) and how they relate. Inheritance moves shared attributes up to a parent. Full page with NESA marking and 3 practice prompts.
Notation key
Method
- List the classes and their attributes.
- Find attributes that appear in several classes and move them into a parent class (remove the duplicates from the children).
- Draw each class as a three-part box: name, attributes, methods.
- Join children to the parent with a hollow-triangle arrow pointing up to the parent.
- If asked, add associations with multiplicity at each end.
Worked example
Task. Student and Teacher both have a name and an email. Draw a class diagram that removes the repeated attributes.
Why it earns marks: shared attributes sit in Person, children only keep their own, the inheritance arrow points up and multiplicity is shown on the association.
Marking checklist
- Each class has a name, attributes and methods (if asked)
- Shared attributes appear once, in the parent
- Inheritance arrows point to the parent with a hollow triangle
- Associations have multiplicity at both ends (if asked)
- Every attribute from the question appears exactly once
Top mistakes
- Repeating inherited attributes in the child classes
- Arrow pointing the wrong way
- Forgetting a class from the list
- Writing methods in the attribute section
ERD and database schema
An entity relationship diagram shows the tables in a database and how they link through keys. Full page with NESA marking and 3 practice prompts.
Notation key
Method
- List the entities (nouns the system stores) and their attributes.
- Choose a primary key for each entity.
- For each relationship decide one-to-many (the many side holds the foreign key) or many-to-many (add a linking table).
- Draw the crow’s foot on the many end and mark PK and FK.
- Check every foreign key matches a primary key in the other table.
Worked example
Task. Customers place orders and each order is for one product. Draw the ERD.
Why it earns marks: primary and foreign keys marked, the many end at Order, and no many-to-many relationship left undivided.
Marking checklist
- Each table has a primary key
- Foreign keys are on the many side
- Crow’s foot on the many end of each relationship
- Many-to-many relationships are split with a linking table
- Attribute names are clear and consistent
Top mistakes
- Foreign key on the wrong side
- Leaving a many-to-many relationship
- No primary key
- Crow’s foot drawn at the one end
Decision tree
A decision tree starts at a condition, branches on its answers, and ends at outcomes. Simplify it by removing tests that never change the outcome. Full page with NESA marking and 3 practice prompts.
Notation key
Method
- List the conditions and the possible outcomes.
- Put the most important test (the one that rules out the most) at the top.
- Draw two labelled branches for every condition.
- End every branch in an outcome.
- Simplify: if both branches of a test lead to the same outcome, remove that test.
Worked example
Task. Simplify this tree: the test "Has warranty?" has the same outcome on both branches.
Why it earns marks: the redundant test is removed and every remaining branch is labelled.
Marking checklist
- Every condition has labelled branches
- Every branch ends in an outcome
- No test whose branches both give the same outcome
- The tree gives the right outcome for every combination in the question
Top mistakes
- Unlabelled branches
- Missing outcomes
- Keeping tests that change nothing
- Repeating the same condition on one path
Storyboard
A storyboard is a sequence of screens that shows how a user moves through an app, with arrows labelled by the action. Full page with NESA marking and 3 practice prompts.
Notation key
Method
- List the screens the user needs, in order.
- Draw one frame per screen and title it.
- Sketch the main content of each screen (buttons, lists, text).
- Join the frames with arrows labelled with the user action that moves between them (Tap Menu, Press Pay).
- Check the user can reach the goal and go back.
Worked example
Task. Storyboard a café ordering app from Home to Order summary.
Why it earns marks: titled screens, content on each, and every arrow says what the user does.
Marking checklist
- Each screen is titled
- Key content is shown on each screen
- Arrows are labelled with the user action
- The sequence reaches the goal (and shows a way back)
Top mistakes
- Unlabelled arrows
- Missing the screen where the goal is reached
- Too much detail instead of the key content
UI mock-up
A UI mock-up shows what one screen looks like, with the controls a user needs and labels that explain them. Full page with NESA marking and 3 practice prompts.
Notation key
Method
- Read what the screen must do (inputs, outputs, actions).
- Draw a heading and one labelled control for each input.
- Choose the right control: text box, drop-down, checkbox, buttons.
- Add feedback: hint text, a masked password, and an error message area.
- Label or annotate the features the question asks about (consistency, clarity, accessibility).
Worked example
Task. Mock up a registration screen.
Why it earns marks: every input labelled, a masked password, an error area, and clear Register and Cancel buttons.
Marking checklist
- Every input has a label
- The control type suits the data
- Clear action buttons
- Hints or error messages are shown
- Layout is consistent and readable
Top mistakes
- Unlabelled boxes
- Using a text box where a list is better
- No way to submit or cancel
- Forgetting error feedback
Network diagram
A network or system diagram shows the devices and how they connect, with the protocol on each link. Full page with NESA marking and 3 practice prompts.
Notation key
Method
- List the devices (client, router, servers, database).
- Place the user device on one side and the data on the other.
- Draw links between devices that talk to each other.
- Label each link with the protocol or data (HTTPS, SQL).
- Add security devices (firewall) where the question asks.
Worked example
Task. Show how a client reaches a web server and database.
Why it earns marks: all devices labelled, the firewall shown, and the protocol on every link.
Marking checklist
- Every device is labelled
- Links join the devices that communicate
- Protocols are labelled on links
- Security devices shown where required
Top mistakes
- Unlabelled links
- Missing the database or server
- Drawing the internet as a device
Trace table
A trace table follows the values of the variables line by line so you can find the output or a bug. Full page with NESA marking and 3 practice prompts.
Notation key
| count | total | count <= 4 | Output |
|---|---|---|---|
| 1 | 0 | TRUE | |
| 2 | 2 | TRUE |
Columns: one for each variable, one for each condition you test, one for Output. Rows: one per step or per loop pass.
Method
- Make a column for every variable, every condition tested and Output.
- Start with the first line. Write the initial values in the first row.
- Work through one line at a time. Add a row each time a value changes or a condition is tested.
- Copy unchanged values down so each row is a complete snapshot.
- Read the Output column last, and re-check the loop condition on the final pass.
Worked example
Task. Trace this algorithm.
BEGIN Sum
total = 0
count = 1
WHILE count <= 4
total = total + count * 2
count = count + 1
ENDWHILE
Display total
END Sum| count | total | count <= 4 |
|---|---|---|
| 1 | 0 | TRUE |
| 2 | 2 | TRUE |
| 3 | 6 | TRUE |
| 4 | 12 | TRUE |
| 5 | 20 | FALSE |
Output: 20. The loop ends when count is 5 because 5 <= 4 is FALSE.
Marking checklist
- A column for every variable and condition
- Values change one step at a time
- Loop condition tested on every pass, including the last
- Output taken from the final row(s)
- Test data traced one run per row where asked
Top mistakes
- Skipping the final failed test of the loop
- Updating two variables in one row when they change on different lines
- Forgetting initial values
- Writing the output before the loop ends
Pseudocode
Pseudocode is plain-English code written with a fixed set of keywords. Marks are for correct logic and clear structure, not for syntax. Full page with NESA marking and 3 practice prompts.
Notation key
| Idea | How to write it on this site |
|---|---|
| Start and end | BEGIN Name ... END Name |
| Input / output | Get x, Display x |
| Assignment | total = total + 1 |
| Selection | IF ... ELSEIF ... ELSE ... ENDIF; CASEWHERE ... END CASE |
| Loops | WHILE ... ENDWHILE; REPEAT ... UNTIL; FOR i = 0 TO 4 ... NEXT i |
| Subroutines | BEGIN Name (parameter) ... RETURN value ... END Name |
Method
- Underline inputs, outputs, decisions and repeats in the question.
- Write BEGIN and the name, then initialise variables (counters to 0).
- Write the structure first (the loop or IF), then fill in the body.
- Indent inside every IF and loop and close it (ENDIF, ENDWHILE, NEXT).
- Trace your answer with one example. Fix off-by-one errors in loop bounds.
Worked example
Task. Display how many of the 5 marks in Marks are 50 or more.
BEGIN CountPasses
count = 0
FOR i = 0 TO 4
IF Marks[i] >= 50 THEN
count = count + 1
ENDIF
NEXT i
Display count
END CountPassesWhy it earns marks: counter starts at 0, every element is visited, the test is exactly "50 or more", and the result is displayed after the loop.
Marking checklist
- BEGIN/END with the same name
- Variables initialised before use
- Correct structure for the logic (IF, loop)
- Correct conditions and loop bounds
- Indentation and closing keywords
- Output in the right place
Top mistakes
- Displaying inside the loop when it should be after
- Forgetting to initialise a counter
- Off-by-one loop bounds
- Missing ENDIF or ENDWHILE
- Using = to compare in a way that is unclear
Python
Python questions ask you to read, fix or write short programs. Mark logic first, then syntax. Full page with NESA marking and 3 practice prompts.
Notation key
| Idea | Python |
|---|---|
| Input / output | name = input("Name: "); print(name) |
| Number conversion | int(input()), float(...) |
| Selection | if x > 5: / elif / else: (colon and indent) |
| Loops | for i in range(5):; while x < 10: |
| Lists | marks = [60, 70]; marks.append(80); len(marks) |
| Functions | def add(a, b): ... return a + b |
Method
- Read the task and decide the inputs, process and output.
- Write the structure first: def, loop, or if. Remember the colon and indent.
- Convert input with int() or float() when you need numbers.
- Run it (or trace it) with a normal case and an edge case.
- Fix errors from the message: read the line number and the error name.
Worked example
Task. Ask for a number and print its times table (1 to 12).
n = int(input("Number: "))
for i in range(1, 13):
print(n, "x", i, "=", n * i)Why it earns marks: input is converted, the range stops at 12 (range(1, 13)), and the print is inside the loop.
Marking checklist
- Input is converted to the right type
- Colons and indentation are correct
- Loop range matches the question
- Correct output in the correct place
- Meaningful variable names
Top mistakes
- range(1, 12) instead of range(1, 13)
- Forgetting int() around input
- Mixing tabs and spaces
- Printing inside a loop that should print once
SQL
SQL questions ask you to read from tables with SELECT, or change data with INSERT, UPDATE and DELETE. Full page with NESA marking and 3 practice prompts.
Notation key
| Clause | Use |
|---|---|
SELECT cols FROM table | Choose columns and the table |
WHERE condition | Filter rows (comparisons, AND, OR) |
ORDER BY col DESC | Sort the result |
GROUP BY col + COUNT/SUM/AVG | Summarise groups |
JOIN ... ON a.id = b.id | Combine tables through a key |
INSERT INTO t VALUES (...); UPDATE t SET ... WHERE ...; DELETE FROM t WHERE ... | Change data (always use WHERE) |
Method
- Find the table(s) and the columns the question wants.
- Write SELECT and FROM first.
- Add WHERE for the filter, then ORDER BY or GROUP BY if needed.
- If two tables are needed, JOIN on the matching key column.
- For UPDATE and DELETE, write the WHERE first so you do not change every row.
Worked example
Task. List the names and prices of products over $20, most expensive first.
SELECT Name, Price
FROM Products
WHERE Price > 20
ORDER BY Price DESC;Why it earns marks: the right columns, the table, the exact comparison, and sorted in the direction asked.
Marking checklist
- Right columns and table
- WHERE condition matches the wording (> or >=)
- Sorted or grouped as asked
- JOIN uses the key columns
- UPDATE/DELETE have a WHERE
Top mistakes
- UPDATE or DELETE without WHERE
- Using = where LIKE or IN is needed
- Selecting columns not asked for
- JOIN with no ON condition
HTML and CSS
HTML gives a page its structure. CSS controls how it looks. Questions ask you to read, complete or fix short snippets. Full page with NESA marking and 3 practice prompts.
Notation key
| Idea | Example |
|---|---|
| HTML element | <h1>Title</h1>, <p>, <a href="...">, <img src="..." alt="..."> |
| Class and id | <p class="note">, <div id="top"> |
| CSS rule | selector { property: value; } |
| Selectors | p (element), .note (class), #top (id) |
| Common properties | color, background-color, font-size, margin, padding, border |
Method
- Identify the element or class the question wants to change.
- Write the selector, then braces.
- Add each property with a colon and end it with a semicolon.
- Check the HTML has matching opening and closing tags.
- Check the class/id in the CSS matches the HTML exactly.
Worked example
Task. Make every paragraph with class note have a yellow background and 10px padding.
.note {
background-color: yellow;
padding: 10px;
}Why it earns marks: the class selector starts with a dot, and each property ends with a semicolon.
Marking checklist
- Right selector (dot for class, # for id)
- Property names and values spelled correctly
- Colons and semicolons present
- HTML tags closed
- Class names match between HTML and CSS
Top mistakes
- Missing semicolons or braces
- Writing class="note" in CSS instead of .note
- Forgetting to close a tag
- Using a property name that does not exist
All how-to pages · One-page cheat sheet · Software Engineering home