Unofficial Practice Paper: J277/02: Computational Thinking, Algorithms and Programming
General Certificate of Secondary Education
| Question | Answer / Indicative Content | Mark | Guidance |
|---|---|---|---|
| 1 (a) |
1 mark per correct element:
|
4 | Labels must be explicit (T/F or Y/N). |
| 1 (b) |
1. Abstraction [1] 2. Algorithmic Thinking [1] 3. Decomposition [1] |
3 | |
| 2 (a) |
1 mark per point (max 4):
|
4 | Must explain both "divide" and "merge" stages for full marks. |
| 2 (b) (i) | The array must be sorted in order. | 1 | Accept: Alphabetical / numerical order. |
| 2 (b) (ii) |
1 mark per point:
|
3 | Must compare binary vs linear for full marks. |
| 3 (a) |
|
4 |
| Question | Answer / Indicative Content | Mark | Guidance |
|---|---|---|---|
| 3 (b) |
2 marks per tool (1 for identify, 1 for description). Max 2 tools.
|
4 | Do not accept "Debugger" without description of diagnostics. |
| 4 (a) |
1 mark for each correctly drawn shape and 1 for overall logic:
|
4 | Marks awarded solely on geometric shape. NOT gate without a circle scores 0. |
| 4 (b) |
Truth table completion:
|
4 | Allow follow-through if intermediate columns are wrong but OR logic is correct. |
| 5 (a) |
SELECT Name, Price [2] (1 for SELECT, 1 for fields)FROM Products [1]WHERE Price > 20 [2] (1 for WHERE, 1 for condition)
|
5 | Do not penalise lowercase SQL keywords. |
| 5 (b) |
Price: Real [1] (because currency requires decimal numbers) [1]InStock: Boolean [1] (because it only has two states e.g. True/False) [1]
|
4 | Reject 'Float'. Accept 'Float' as BOD if justified well, but strictly Real is expected. |
| Question | Answer / Indicative Content | Mark | Guidance |
|---|---|---|---|
| 6 (a) |
Normal Data: Any value between 2 and 499 (e.g. 150) [1] Valid Boundary Data: 1 or 500 [1] Invalid Data: -1, 501, or text (e.g. "fifty") [1] |
3 | 0 is Invalid boundary. Do not accept 0 as Valid Boundary. |
| 6 (b) |
1 mark for method, 1 mark for reason (max 4):
|
4 | Reject "Makes it easier to read" as TV. Must link method to context. |
| 7 (a) |
Line number: 02 [1] Correction: Delete the line / Remove line 02 completely [1] |
2 | The parameter `current` is already passed to the function, using `input()` overwrites it. |
| 7 (b) |
1 mark per bullet:
Example: function calculateOrder(currentStock, maxCapacity) needed = maxCapacity - currentStock return needed endfunction |
4 | Deduct 1 mark if `print()` is used instead of `return`. Do not allow `input()`. |
| Question | Answer / Indicative Content | Mark | Guidance |
|---|---|---|---|
| 8 (a) |
1 mark per bullet:
Example: code = input("Enter code")
while code.length != 5
print("Error, must be 5 chars")
code = input("Enter code")
endwhile
print("Code Accepted")
|
6 | MUST be a WHILE loop. Using IF scores maximum 3 marks (for input, condition, error message). |
| 8 (b) |
Trace Table: x: 0, 1, 2, 3 [1] y: 10, 10, 9, 7 [2] (1 for 9, 1 for 7) Output: 7 [2] (1 for correct value, 1 for only printing at the end) |
5 | Outputs during the loop score 0 for the output mark. |
| 9 (a) |
1 mark per bullet:
Example: total = 0 for row = 0 to 49 total = total + inventoryData[row, 2] next row print(total) |
8 | Accept `[row][2]` or `[row, 2]`. Penalise 1-based indexing (e.g. 1 to 50) unless arrays are explicitly declared as 1-based. |
| 9 (b) |
1 mark per bullet:
Example: myFile = openWrite("urgent.txt")
for i = 0 to 19
myFile.writeLine(criticalItems[i])
next i
myFile.close()
|
8 | Must use array index inside the loop. |