Digital resources for WACE Computer Science. No subscription. Review the free samples before you decide.
WACE Computer Science Mastery Pack
Python and pseudocode programming, networks and subnetting, cyber security and relational databases, with original short-answer and extended-answer practice papers built on the 2026 SCSA exam structure for Computer Science ATAR Units 3 and 4.
WACE exams start Wed 28 Oct — 18 days away
Explore the study materials
Control structures, data types, operators and Boolean logic
1. The three control structures and how the exam writes them
Every algorithm you will write in this course is built from three control structures: sequence (statements run in order), selection (a condition decides which statements run) and iteration (statements repeat). The syllabus splits iteration into fixed (count-controlled), pre-test and post-test loops, and questions say whether they want Python or pseudocode. The support booklet conventions are guidance, not a strict syntax: capitalise keywords, indent the body of every structure, close each structure explicitly (END IF, END WHILE, END FOR) and use = for assignment and == for comparison.
| Structure | Pseudocode (booklet style) | Python |
|---|---|---|
| One-way selection | IF speed > 50 THEN … END IF | if speed > 50: |
| Two-way selection | IF … ELSE … END IF | if … else: |
| Multi-way selection | IF … ELSE IF … ELSE … END IF, or CASE value OF … END CASE | if … elif … else: |
| Fixed loop | FOR i = 1 TO 10 … END FOR | for i in range(1, 11): |
| Pre-test loop | WHILE condition … END WHILE | while condition: |
| Post-test loop | REPEAT … UNTIL condition | while True: … if condition: break |
Two details cost marks every year. First, a CASE statement tests single values only; a range such as "speed between 20 and 50" must be written with IF. Second, Python's range stops one before its end value, so the pseudocode loop FOR i = 1 TO 10 becomes range(1, 11). Writing range(1, 10) gives nine iterations, which is a logic error a trace table would expose.
2. Choosing between fixed, pre-test and post-test loops
Pick the loop from what you know before the loop starts. Use a fixed loop when the number of repetitions is known (process every element of a list, print 12 monthly totals). Use a pre-test loop when the body might need to run zero times, because the condition is checked first (keep reading lines while the file has lines). Use a post-test loop when the body must run at least once, because the condition is checked after it; input validation is the classic case, since you cannot test a value you have not yet read.
Python has no REPEAT … UNTIL, so a post-test loop is written either with while True and a break, or, more commonly in marking keys, as a "priming read" followed by a pre-test loop. The version below reads once, then re-prompts while the value is outside 6 to 17. It was run with the inputs 4, 19 and 12:
age = int(input("Age: "))
while age < 6 or age > 17:
print("Out of range - try again")
age = int(input("Age: "))
print("Accepted:", age)Output:
Out of range - try again
Out of range - try again
Accepted: 12Notice the condition is the negation of the valid range: valid means age >= 6 AND age <= 17, so the loop continues while age < 6 OR age > 17. In pseudocode the post-test form reads REPEAT INPUT(age) UNTIL (age >= 6) AND (age <= 17): UNTIL takes the exit condition, WHILE takes the continue condition. Mixing the two up is the most common loop error in written answers.
3. Data types and why the choice matters
The four types in the syllabus are integer (whole numbers, used for counts and indices), float (numbers with a fractional part, used for measurements and averages), string (text, including digits that are never calculated with) and Boolean (True or False, used for flags and conditions). Choosing a type is a design decision you must justify: a phone number or postcode is a string because it may start with 0 and no arithmetic is done on it; a quantity in stock is an integer; a temperature reading is a float; "has paid" is a Boolean.
In Python, input() always returns a string, so numeric input must be converted with int() or float(). Adding two strings concatenates them rather than adding them. Floats are stored in binary and cannot represent most decimals exactly, so never compare floats with == after arithmetic; round first or compare with a tolerance. Each line below was executed:
print("7" + "3")
print(7 + 3)
print(int("7") + 3)
print(0.1 + 0.2 == 0.3)
print(round(0.1 + 0.2, 2) == 0.3)Output:
73
10
10
False
TrueAn exam may ask you to "state the most appropriate data type and justify". A full answer names the type and gives a reason tied to the data: "Integer, because the number of seats is always a whole number and is used in calculations." One word without a reason usually earns only half the marks. Money is a special case: a float is acceptable in exam answers, but storing whole cents as an integer avoids rounding drift in totals, and saying so shows understanding.
4. Arithmetic, relational and logical operators
The syllabus lists arithmetic operators (+, -, *, /, %), relational operators (==, !=, >, <, >=, <=) and logical operators (AND, OR, NOT). Python adds // for integer (floor) division; the booklet also accepts DIV and MOD in pseudocode. Know exactly what each division operator produces:
| Expression | Result | Why |
|---|---|---|
| 17 / 5 | 3.4 | true division always gives a float |
| 17 // 5 | 3 | whole number of times 5 fits into 17 |
| 17 % 5 | 2 | remainder after taking out three 5s |
| 4729 % 10 | 9 | last digit of a whole number |
| 4729 // 10 | 472 | removes the last digit |
| 135 // 60 and 135 % 60 | 2 and 15 | 135 minutes is 2 hours 15 minutes |
The modulus operator turns up in many algorithms: n % 2 == 0 tests for an even number, i % 3 == 0 picks every third item, and // with % together split a quantity into larger and smaller units. Be careful with negative operands in Python: -7 // 2 is -4, because floor division rounds down towards negative infinity, not towards zero.
A relational operator compares two values and produces a Boolean. Writing = where you mean == is a syntax error in Python and an ambiguity in pseudocode that markers penalise. Logical operators combine Booleans: AND is true only when both sides are true, OR when at least one is, and NOT reverses a value.
5. Complex logical expressions and order of precedence
When an expression mixes operators, evaluate in this order: brackets, arithmetic, relational comparisons, then NOT, then AND, then OR. Because AND binds more tightly than OR, the two expressions below are different. Take age = 20, member = False, guest = False:
- age >= 18 OR member AND guest → member AND guest is evaluated first (False), then True OR False gives True.
- (age >= 18 OR member) AND guest → the bracket gives True, then True AND False gives False.
When a question asks you to "evaluate" an expression, show each step in this order and write the intermediate Boolean values; the marks are for the working as well as the final value. When you write a condition yourself, add brackets even when precedence would make them optional, because the marker should never have to guess what you meant.
De Morgan's laws let you rewrite a negated condition: NOT (A AND B) is equivalent to NOT A OR NOT B, and NOT (A OR B) is equivalent to NOT A AND NOT B. The truth table proves the first law row by row:
| A | B | A AND B | NOT (A AND B) | NOT A OR NOT B |
|---|---|---|---|---|
| True | True | True | False | False |
| True | False | False | True | True |
| False | True | False | True | True |
| False | False | False | True | True |
This is exactly what happens when you turn a "valid" test into a "keep asking" test: NOT (x < 1 OR x > 10) means the same as x >= 1 AND x <= 10. Checking the boundary values 0, 1, 10 and 11 confirms the two forms agree.
6. Worked example: tracing a loop that combines selection and iteration
Trace tables (desk checks) are examined directly, and they are also the fastest way to check your own code in the exam. Give each variable a column, add a column for any condition, and write a new row every time a value changes or the loop repeats. Here is a short program and its output when run:
readings = [12, 31, 7, 45, 28]
total = 0
count_high = 0
for r in readings:
if r > 25:
count_high = count_high + 1
total = total + r
print(total, count_high, total / len(readings))Output:
123 3 24.6The trace table for the loop body, one row per iteration:
| r | r > 25 | count_high | total |
|---|---|---|---|
| 12 | False | 0 | 12 |
| 31 | True | 1 | 43 |
| 7 | False | 1 | 50 |
| 45 | True | 2 | 95 |
| 28 | True | 3 | 123 |
Three readings exceed 25 (31, 45 and 28), the total is 123 and the mean is 123 / 5 = 24.6. Note that 25 itself would not be counted, because the test is strictly greater than. Questions often hide a boundary value like this in the data to see whether you trace the condition exactly rather than reading the intention of the code.
When a question gives you code and asks for its output, the marking key expects the exact output, including order and formatting. If a print statement sits inside the loop, there will be one line of output per iteration; if it is after the loop (as here), there is only one line. Indentation in Python decides which, so read it carefully.
7. Exam technique for control-structure questions
Marking keys for short algorithms award marks element by element: correct initialisation of accumulators and counters, a loop with the right start, end and update, a correctly formed condition, the correct processing inside the loop, and the required output or return. A response with one small slip still collects most marks if each element is visible, so write each element on its own line rather than compressing logic.
- Check the command: "write in Python" needs valid Python syntax (colons, indentation, correct function names); "write an algorithm" accepts clear pseudocode.
- Initialise every variable before the loop. An accumulator set to 0 inside the loop resets on every pass, which is a logic error.
- Make sure every WHILE loop changes something its condition depends on, otherwise it never ends.
- Test your loop at its boundaries: the first value, the last value, and a value exactly on any comparison threshold.
A model sentence for the commonly asked comparison: "A pre-test loop evaluates its condition before the body executes, so the body may execute zero times; a post-test loop evaluates its condition after the body, so the body always executes at least once, which suits input validation because a value must be read before it can be checked."
The 2025 examination report noted that candidates handled foundational structures such as initialisation, iteration and simple data processing better than multi-step algorithms. That makes the basics your safe marks: secure them first, then spend remaining time on the harder logic.
Original practice item. A weather logger runs the pseudocode below. Complete a trace table (desk check) using the test inputs 12, -4, 9, 0, with the columns reading, reading > 0, total, count, reading == 0 and output. State the final output. (4 marks)
total = 0
count = 0
REPEAT
INPUT(reading)
IF reading > 0 THEN
total = total + reading
count = count + 1
END IF
UNTIL reading == 0
average = total / count
PRINT("Average: ", average)Show the worked answer
Answer: Worked solution
Trace table (one row per pass of the post-test loop):
| reading | reading > 0 | total | count | reading == 0 | output |
|---|---|---|---|---|---|
| 12 | TRUE | 12 | 1 | FALSE | |
| -4 | FALSE | 12 | 1 | FALSE | |
| 9 | TRUE | 21 | 2 | FALSE | |
| 0 | FALSE | 21 | 2 | TRUE | Average: 10.5 |
The loop body runs four times. The negative reading fails the IF test, so total and count do not change. On the fourth pass reading == 0 is TRUE, so the loop exits after the body has run, and the post-test loop also processes the terminating 0 (it is not added because 0 > 0 is FALSE). average = 21 / 2 = 10.5, so the output is Average: 10.5.
Marking guide (4 marks): 1 mark for each correct row (4 x 1 mark): row 1 (12, TRUE, 12, 1, FALSE); row 2 (-4, FALSE, 12, 1, FALSE); row 3 (9, TRUE, 21, 2, FALSE); row 4 (0, FALSE, 21, 2, TRUE, output Average: 10.5). A row with any wrong value earns no mark for that row; carry an earlier error forward if later rows follow correctly from it. Accept TRUE/FALSE written as T/F or True/False.
What's inside Computer Science
Preview it all free. Unlock when you're ready.
Unlock the original practice exams, answer guides, worked questions and digital flashcards. Complete revision notes are also available free. From $20 once for one subject, with access while the platform operates.
Taking more subjects? Add two more for $30 — three subjects for $50 total, $16.67 each, all yours for life.
Compare 1, 3 or 5 subjects ▾
- 1 subject — $20 once
Computer Science onlyUnlock 1 - 3 subjects — $50 once
$16.67 a subject · pick the rest after you payUnlock 3 - 5 subjects — $60 once
$12 a subject · pick the rest after you payUnlock 5
Each selected subject includes its complete Mastery Pack. Choose how many subjects you need. Full pricing page →
No account needed · one-time payment in AUD · digital resources · by purchasing you agree to our Terms.
WACE exams start Wed 28 Oct — 18 days away
Our promise: see the real material before you pay — a worked exam question, the opening of a real revision note and the full contents list of all 20 revision notes and 20 practice exams are on this page, free. If you unlock it and it isn't what this page described, email hello@atarmaxxing.com.au and we'll refund it — no form, no argument. We won't promise you an ATAR; we promise the material is what we said it was.
Everything you unlock
All 20 practice exams
- Exam 1 — Python 2D array processing; OOP inheritance; subnetting a /24 into four subnets
- Exam 2 — dictionaries in Python; binary search and Big O; TCP vs UDP for streaming
- Exam 3 — trace tables and post-test loops; exception handling; Cisco network diagram with three subnets
- Exam 4 — class design in pseudocode; insertion vs selection sort; IPv4 vs IPv6
- Exam 5 — 2D grid search in Python; modular design and stubs; ping and traceroute analysis
- Exam 6 — parameter passing value vs reference; Gantt chart and iterative development; default gateway and DNS
- Exam 7 — Boolean logic and precedence; bubble sort trace; packet architecture by layer
- Exam 8 — OOP polymorphism; unit and acceptance testing; CIDR /26 and /27 allocation
- Exam 9 — dictionary of lists in Python; runtime errors (division by zero, index out of range); router vs switch roles
- Exam 10 — linear search vs binary search; functions returning one data structure; wireless access points and segmentation
- Exam 11 — selection sort and Big O; class with methods and validation; public vs private IP and NAT-free design
- Exam 12 — nested loops over 2D arrays; version control and backup; OSI vs DoD comparison
- Exam 13 — algorithm design in pseudocode; desk check and logic errors; traceroute to a remote server
- Exam 14 — inheritance hierarchy; live test data and load testing; subnetting for departments by host count
- Exam 15 — dictionary frequency counting; good programming practice choices; ports and well-known services
- Exam 16 — 2D array row/column totals; encapsulation and abstraction; bandwidth and broadcast domains
- Exam 17 — recursion-free iterative algorithm in Python; stubs and modular decomposition; IPv6 addressing features
- Exam 18 — sorting records by a key; exception handling for input validation; firewall placement and DMZ-free small office design
- Exam 19 — OOP game objects; Big O of nested loops; network diagram with VoIP and PoS devices
- Exam 20 — grid path-finding in pseudocode; developer retrospective and UAT; DNS resolution steps
All 20 revision notes
- Control structures, data types, operators and Boolean logic
- Modular code: functions, parameters, scope and parameter passing
- Data structures: one- and two-dimensional arrays and dictionaries
- Search and sort algorithms and Big O notation
- Classes, objects, inheritance, encapsulation, abstraction and polymorphism
- Development framework, linear vs iterative processes and good programming practice
- Testing, error types, debugging and desk checking with trace tables
- Impacts of software and the rights and responsibilities of software developers
- Privacy Act 1988, Australian Privacy Principles (APP5, 8, 10, 11, 12), Notifiable Data Breaches and data ethics
- OSI and DoD TCP/IP models, layer roles and packet architecture
- TCP vs UDP, ports, DNS, default gateways, IPv4 vs IPv6 and public vs private addressing
- IP addressing schemes, subnet masks, subnetting and CIDR notation
- Network components, Cisco network diagrams, topology, bandwidth, ping and traceroute
- External and internal network threats, malware and zero day vulnerabilities
- Security solutions, mitigation strategies, the CIA triad, the AAA framework and red vs blue teams
- Symmetric and asymmetric encryption, certificates, secure communication and early ciphers
- Relational database concepts: entities, keys, relationships, data types, anomalies, ACID and ODBC
- ER diagrams in crow's foot notation, relational notation, data dictionaries and resolving M:N
- Data integrity, data quality and normalisation to 3NF
- SQL: CREATE, ALTER, DROP, INSERT, UPDATE, DELETE, SELECT, joins, aggregates and GROUP BY
Common questions about WACE Computer Science
Which syllabus applies to the 2026 exam?
The Year 12 syllabus for teaching from 2026 (2022/39860 v4, effective 1 January 2026). It is the syllabus first examined in 2024 with minor 2026 changes: Python is named as the language, arithmetic overflow is removed from runtime errors, 'collision domains' becomes 'broadcast domains', and SQL querying explicitly includes searching, sorting and filtering.
How is the 2026 exam structured?
Ten minutes reading and three hours working. Section One has 20 compulsory short-answer questions worth 83 marks (40% of the exam, about 70 minutes); Section Two has 4 compulsory extended-answer questions worth 111 marks (60%, about 110 minutes). A Source booklet holds the case-study material.
Can I take a calculator?
Yes. Up to three calculators that cannot create or store programs or text are permitted, along with a Mathomat, Mathaid or system flowchart template.
Do I have to write real Python?
Yes, when the question says so. Python is the prescribed language for exam programming questions; other questions accept pseudocode, which should follow the support booklet conventions (capitalised keywords, indentation, explicit END statements).
Is there multiple choice?
No. Every question is written. The multiple-choice items in this hub are revision drills only.
What does Section Two usually contain?
Recent papers have had one large database question (anomalies, normalisation, a crow's foot ER diagram, SQL), one network design question (subnetting, a Cisco diagram, ping or traceroute analysis) and two programming questions on lists, 2D arrays and dictionaries, with cyber security or encryption parts mixed in.
What did examiners say candidates found hardest in 2025?
Multi-step programming with lists and dictionaries, subnetting and assigning IP addresses to router interfaces and devices, interpreting network performance data, correct SQL joins and applying encryption concepts; answers to 'explain', 'compare' and 'discuss' often lacked depth.
What is included in the WACE Computer Science Mastery Pack?
Original practice exams with answer guides, worked questions, digital flashcards and revision notes for Computer Science. Complete revision notes are also available free. Official past papers are free external links, not material we sell. Preview the sample note, worked question and contents here. Paid resources unlock with a one-time purchase from $20, with access while the platform operates.
Where can I buy WACE Computer Science notes and practice exams?
You can buy the Computer Science Mastery Pack here as a one-time purchase: original practice exams with answer guides, revision notes, worked questions and flashcards. Printed study guides, trial-exam packs and student note marketplaces are other options, and official SCSA past papers are free — see the past-paper index for this subject.
Is the WACE Computer Science Mastery Pack a subscription?
No. It is a single payment per subject with no renewal, and access continues while the platform operates. You can preview a sample note, a worked question and the full contents before paying.
More detail: the syllabus explained · every official past paper by topic · all 20 Computer Science revision notes · Computer Science practice exams with worked solutions