Nice, you've got a good chunk of the spec covered there.
Here’s a set of **revision questions** grouped by
topic to help you test your knowledge across all those areas:
---
### 🧠 **1.2 Software and Software Development**
#### **1.2.1 Systems Software**
1. What are the main functions of an operating system?
To provide a user interface, storage management, file management
2. How do paging and segmentation differ in memory management?
pagin
3. What is virtual memory and why is it used?
4. What is an interrupt and how does it affect the fetch-decode-execute cycle?
5. What is the purpose of an Interrupt Service Routine (ISR)?
6. Compare round robin and first-come-first-served scheduling.
7. What is a multi-level feedback queue and when is it useful?
8. Define the characteristics of:
- Distributed OS
- Embedded OS
- Multi-tasking OS
- Multi-user OS
- Real-Time OS
9. What is the BIOS and what role does it play in starting up a computer?
10. What is a device driver and why are they needed?
11. What is a virtual machine? Give one example of when it’s used.
#### **1.2.2 Applications Generation**
12. Give an example of general-purpose, special-purpose, and bespoke software.
13. What is a utility program? Name three examples.
14. What is the difference between open-source and closed-source software? Give one advantage and
disadvantage of each.
---
### 🧩 **1.4 Data Types, Data Structures and Algorithms**
#### **1.4.1 Data Types**
15. Name five primitive data types.
16. Convert the decimal number 27 into binary.
17. Convert -18 into binary using two’s complement (use 8-bit).
18. What is the difference between sign and magnitude and two’s complement?
19. Add the binary numbers 0101 and 1011. What is the result in binary?
#### **1.4.2 Data Structures**
20. Describe the difference between a list, a tuple, and a record.
21. What are the advantages of using a stack over a queue?
22. Describe how a binary search tree is created.
23. What’s the difference between a directed and undirected graph?
24. What is hashing, and how is a hash table used?
25. Explain how you would add and remove elements from a linked list.
---
### 🧠 **2.1 Elements of Computational Thinking**
#### **2.1.1 Thinking Abstractly**
26. What is abstraction and why is it important in computing?
27. Give an example of abstraction in a real-life situation.
#### **2.1.2 Thinking Ahead**
28. Identify the inputs and outputs in a system like a cash machine (ATM).
29. What is caching and when might it be useful?
30. Why is reusable code beneficial when writing large programs?
#### **2.1.3 Thinking Procedurally**
31. Break down the process of making a cup of tea into components of a problem and sub-procedures.
#### **2.1.4 Thinking Logically**
32. Give an example of a situation in a program where a decision is needed.
33. What logical conditions affect the flow of a loop?
#### **2.1.5 Thinking Concurrently**
34. What is concurrent processing and how can it improve performance?
35. What is a trade-off that might occur with concurrent processing?
---
### 💻 **2.2 Problem Solving and Programming**
36. What is the difference between sequence, selection, and iteration?
37. What is recursion and how is it different from iteration?
38. When would you use a local variable instead of a global one?
39. What is modularity and why is it useful in programming?
40. Explain the difference between passing by value and passing by reference.
41. Name three features of an IDE that help with debugging.
42. What is encapsulation in object-oriented programming?
---
### 🔁 **2.3 Algorithms**
43. Compare the time complexities of bubble sort and quick sort.
44. What does Big O notation represent?
45. Which sorting algorithm is most efficient for large, unsorted data?
46. How does Dijkstra’s algorithm find the shortest path?
47. Describe the steps of a binary search and when it can be used.
48. When is depth-first traversal preferred over breadth-first traversal?
---
Let me know if you want answers to these or if you’d like them turned into flashcards, a quiz, or anything
interactive!