Blame

0648ae lisa 2026-06-08 09:18:19
Add C05 student wiki pages: design tools, annotation, traceability Six DRAFT pages under /sd/C05 targeting common rubric-boundary errors: - Sketch vs Mock-up (C5-1) — embeds two videos - Data Dictionary — Format is not Type (C5-1) - IPO Charts — Process Means Steps (C5-1) - VCAA Pseudocode — Not Python (C5-1) - The Annotation Verb Ladder (C5-2) - Connect the Dots — design traceability (C5-3) Pages 2-6 have video slots pending teacher selection. Home index reorganised by indicator. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
1
> **DRAFT** — under teacher review.
2
3
# VCAA Pseudocode — Write Structured English, Not Python
4
5
The Hamilton and Alexandra College · Year 12 · 2026
6
7
If you can already code in Python, pseudocode feels like a step backwards — why write `count ← 5` when `count = 5` is right there? The answer: VCAA assessors are checking whether you can express an algorithm clearly and independently of any language. Python-flavoured pseudocode loses marks. This page maps every construct you need.
8
9
---
10
11
## 🎬 Watch
12
13
> [!NOTE]
14
> Video coming soon.
15
16
**🎯 Watch for:** how to translate a working Python method into clean VCAA pseudocode, keeping the logic identical while swapping Python syntax for language-independent Structured English.
17
18
---
19
20
## The two rules that actually matter
21
22
Before the big table, pin these two rules — they matter more than any single symbol:
23
24
1. **Be consistent.** If you open a block with `BEGIN`, close it with `END` throughout. If you use `WHILE … ENDWHILE`, don't switch to `WHILE … END_WHILE` two lines later.
25
26
2. **Write at a clear high level.** You do not need to encode every trivial detail. "Load `data.csv` into an array of records" is perfectly acceptable pseudocode when it is self-explanatory.
27
28
---
29
30
## Pseudocode ↔ Python comparison
31
32
### Program structure and basics
33
34
| Pseudocode | Python | Notes |
35
|---|---|---|
36
| `START` … `STOP` or `BEGIN` … `END` | *(not required)* | Brackets a whole program or subprogram. Pick one style and stick to it. |
37
| `count ← 5` | `count = 5` | Assignment uses a **left-arrow `←`**, not `=` or `:=`. |
38
| `// comment` or `# comment` | `# comment` | Comments work in pseudocode too — use them. |
39
40
### Selection
41
42
| Pseudocode | Python | Notes |
43
|---|---|---|
44
| `IF condition THEN`<br>&nbsp;&nbsp;`action_1`<br>`ELSE`<br>&nbsp;&nbsp;`action_2`<br>`ENDIF` | `if condition:`<br>&nbsp;&nbsp;`action_1`<br>`else:`<br>&nbsp;&nbsp;`action_2` | Must close with `ENDIF`. Chained: use `ELSE IF … THEN`. |
45
| `CASE OF variable`<br>&nbsp;&nbsp;`value1: action_1`<br>&nbsp;&nbsp;`value2 TO value3: action_2`<br>&nbsp;&nbsp;`OTHERWISE action_3`<br>`ENDCASE` | `if variable == value1:`<br>&nbsp;&nbsp;`action_1`<br>`elif value2 <= variable <= value3:`<br>&nbsp;&nbsp;`action_2`<br>`else:`<br>&nbsp;&nbsp;`action_3` | CASE has no direct Python equivalent; use it when there are many branches. |
46
47
### Iteration
48
49
| Pseudocode | Python | Notes |
50
|---|---|---|
51
| `WHILE condition DO`<br>&nbsp;&nbsp;`action_1`<br>`ENDWHILE` | `while condition:`<br>&nbsp;&nbsp;`action_1` | Pre-test loop. Must close with `ENDWHILE`. |
52
| `REPEAT`<br>&nbsp;&nbsp;`action_1`<br>`UNTIL condition` | `while True:`<br>&nbsp;&nbsp;`action_1`<br>&nbsp;&nbsp;`if condition: break` | Post-test loop — body always runs at least once. |
53
| `FOR count ← a TO b STEP 1`<br>&nbsp;&nbsp;`action_1`<br>`ENDFOR` | `for count in range(a, b+1, 1):`<br>&nbsp;&nbsp;`action_1` | Count-controlled. Must close with `ENDFOR`. |
54
| `FOREACH item IN seq`<br>&nbsp;&nbsp;`action_1`<br>`NEXT item` | `for item in seq:`<br>&nbsp;&nbsp;`action_1` | Iterates over a sequence. Close with `NEXT item`. |
55
56
### Operators
57
58
| Pseudocode | Python | Notes |
59
|---|---|---|
60
| `=` | `==` | **Equality test** in pseudocode is `=`, not `==`. |
61
| `<>` | `!=` | **Not-equals** in pseudocode is `<>`. Never use `!=` in pseudocode. |
62
| `>, <, <=, >=` | `>, <, <=, >=` | Same symbols in both. |
63
| `AND, OR, NOT` | `and, or, not` | Uppercase in pseudocode. |
64
| `+, -, *, /, ^` | `+, -, *, /, **` | Pseudocode uses `^` for exponentiation; Python uses `**`. |
65
| `MOD` or `%` | `%` | Integer remainder. |
66
| `DIV` | `//` | Integer division. |
67
68
### Subprograms (methods / functions / procedures)
69
70
| Pseudocode | Python | Notes |
71
|---|---|---|
72
| `BEGIN fun(arg1, arg2)`<br>&nbsp;&nbsp;`action_1`<br>&nbsp;&nbsp;`RETURN expression`<br>`END` | `def fun(arg1, arg2):`<br>&nbsp;&nbsp;`action_1`<br>&nbsp;&nbsp;`return expression` | `BEGIN`/`END` bracket the subprogram. `RETURN` ends a function; omit it for a procedure. |
73
74
---
75
76
## Worked example — a method inside a class
77
78
This is the Level-9 OOP pseudocode skill. You are writing a method, not a standalone program, so you use `BEGIN`/`END` rather than `START`/`STOP`.
79
80
**Scenario:** a `ScoreTracker` class has a method `is_passing` that returns whether a student's average score meets a threshold.
81
82
```
83
BEGIN is_passing(scores, threshold)
84
total ← 0
85
FOREACH score IN scores
86
total ← total + score
87
NEXT score
88
average ← total / length(scores)
89
IF average >= threshold THEN
90
RETURN True
91
ELSE
92
RETURN False
93
ENDIF
94
END
95
```
96
97
Notice:
98
- Assignment is `←` throughout — never `=` or `==`.
99
- Not-equals would be `<>` if needed (e.g. `IF count <> 0 THEN`).
100
- `FOREACH … NEXT item` closes the loop.
101
- `IF … THEN … ELSE … ENDIF` closes the selection.
102
- Indentation is consistent.
103
104
> [!TIP]
105
> You do not need to write out every getter and setter in full. If a step is clear — "retrieve the current user record from the database" — that single line is enough. Save detailed pseudocode for the logic that actually matters in your design.
106
107
---
108
109
## Common mistakes
110
111
### Mistake 1 — Using `=` or `==` for assignment
112
113
> ~~`count = 5`~~ or ~~`count == 5`~~
114
115
Correct: `count ← 5`. The left-arrow shows data flowing *into* the variable. Using `=` is Python; using `==` is a comparison, not assignment.
116
117
### Mistake 2 — Using `!=` for not-equals
118
119
> ~~`IF count != 0 THEN`~~
120
121
Correct: `IF count <> 0 THEN`. The `!=` operator belongs only in Python code.
122
123
### Mistake 3 — Python-only constructs leaking in
124
125
> ~~`for item in list:`~~ or ~~`elif`~~ or ~~`print(x)`~~
126
127
Use `FOREACH item IN list … NEXT item`, `ELSE IF … THEN`, and `OUTPUT x` instead.
128
129
### Mistake 4 — Forgetting closing keywords
130
131
Every block that opens must close. Missing `ENDIF`, `ENDWHILE`, `ENDFOR`, or `ENDCASE` is a consistency error. Markers notice immediately.
132
133
### Mistake 5 — Inconsistent block keywords
134
135
> ~~Opening with `BEGIN` but closing with `STOP`~~
136
137
Pick `BEGIN`/`END` or `START`/`STOP` and use it everywhere in the same document.
138
139
---
140
141
## Check Your Understanding
142
143
1. Rewrite this Python line as valid VCAA pseudocode: `score = score + 1`
144
145
>| **Answer:** `score ← score + 1` — assignment uses `←`, not `=`.
146
147
2. A classmate writes `IF x != 0 THEN … ENDIF`. Name the mistake and write the corrected line.
148
149
>| **Answer:** `!=` is Python syntax, not pseudocode. Correct: `IF x <> 0 THEN … ENDIF`. The not-equals operator in VCAA pseudocode is always `<>`.
150
151
3. You have a `WHILE` loop and an `IF` statement nested inside it. List the two closing keywords you need and the order they must appear.
152
153
>| **Answer:** `ENDIF` closes the inner `IF` first, then `ENDWHILE` closes the outer loop. Inner blocks always close before outer blocks.
154
155
---
156
157
## See also
158
159
- [IPO Charts — Process Means Steps](/sd/C05/IPO%20Charts%20-%20Process%20Means%20Steps)
160
- [Connect the Dots](/sd/C05/Connect%20the%20Dots)
161
- [C05 Resources](/sd/Resources/C05-Resources)
162
163
---
164
165
← Back to [C05 Home](/sd/C05/C05-home) · [VCE Software Development Hub](/sd/VCE%20Software%20Development%20Hub)