Software
Core Revision Module
Revision & Practice Book
Interactive revision notes with exam tips and worked examples for this chapter.
Practice & Resources
2 toolsChapter overview
A summary of this Computer Science chapter — open a section to read it. The full notes, worked examples and practice questions are in the study modules above.
What is Software about?
Cambridge IGCSE Computer Science 0478 is not divided into tiers. Every candidate takes the same two components, both papers assess the full A*–G grade range, and all ten subject-content topics are required. So every one of the 19 requirements mapped in this chapter is examinable for you, whichever grade you are working towards. Nothing here is optional, and nothing here is reserved for a different tier — there is no other tier.
A computer is built in layers, and each layer only works because the layer beneath it is already running. Hardware executes machine instructions and nothing else. Firmware, held in non-volatile memory, starts the hardware and its bootloader loads the operating system. The operating system then manages files, memory, peripherals, users and security, and provides the platform on which application software runs. While all of that is happening, interrupts let an urgent event — a key press, a division by zero — reach the CPU without it having to keep asking. And because a CPU can only execute machine code, every program a person writes must first be put through a translator: an assembler, a compiler or an interpreter.
Topic 4 is assessed in Paper 1: Computer Systems. Every candidate takes Paper 1 and Paper 2 — there is no choice of components and no tier — and both papers assess the full A*–G grade range and all three assessment objectives. Paper 1 is a written paper of 1 hour 45 minutes carrying 75 marks, made up of short-answer and structured questions set on Topics 1 to 6. All questions are compulsory, candidates answer on the question paper, the paper is externally assessed, and calculators are not permitted. Topic 4 contains no calculations at all, so what the paper is really testing here is different: your ability to describe a process in the right order and to compare two things against a stated context.
System software provides the services that the computer itself requires. It manages the hardware, keeps the machine usable, and provides the platform that other software runs on. The two categories the syllabus names are the operating system and utility software. System software is not written to do a job for the user; it is written to keep the computer in a state where a job can be done at all.
Application software provides the services that the user requires. It performs the tasks a person actually wants done — writing a letter, editing a photograph, keeping accounts, browsing the web, designing a part, playing a game. Application software cannot reach the hardware on its own: it depends on the system software beneath it, and requests every file, every allocation of memory and every use of a device through the operating system.
An operating system is system software that manages the computer's hardware and resources and provides a platform on which application software can run. It is not one job but nine, carried out at the same time and constantly interacting: managing files, handling interrupts, providing an interface, managing peripherals and drivers, managing memory, managing multitasking, providing a platform for running applications, providing system security, and managing user accounts. Every one of those functions exists because a shared machine with limited resources needs someone to be in charge of them.
Key ideas to remember
- Nine functions, one sentence to rehearse: Files, interrupts, interface, peripherals and drivers, memory, multitasking, platform, security, user accounts. Say it in that order until it is automatic — a question that asks for "four functions of an operating system" is then four seconds of work, not four minutes of hunting.
What you need to be able to do
- Describe the difference between system software and application software, and give examples of each.
- Describe the role of an operating system and its basic functions: managing files, handling interrupts, providing an interface, managing peripherals and drivers, managing memory, managing multitasking, providing a platform for running applications, providing system security and managing user accounts.
- Explain how hardware, firmware and an operating system are all required before application software can run, including that applications run on the operating system, the operating system runs on the firmware, and the bootloader in firmware runs on the hardware.
- Describe the role and operation of interrupts: how an interrupt is generated, how it is handled using an interrupt service routine, and what happens as a result.
- Give examples of hardware interrupts, including pressing a key on the keyboard and moving the mouse, and of software interrupts, including division by zero and two processes trying to access the same memory location.
- Explain what is meant by a high-level language and a low-level language, and give the advantages and disadvantages of each in terms of ease of reading and writing code, ease of debugging, machine independence and direct manipulation of hardware.
- Explain that assembly language is a form of low-level language that uses mnemonics, and that an assembler is needed to translate an assembly language program into machine code.
- Describe the operation of a compiler and of an interpreter, including how each translates high-level language and how each reports errors.
- Explain the advantages and disadvantages of a compiler and of an interpreter, including that an interpreter is mostly used while a program is being developed and a compiler is used to translate the final program.
- Explain the role of an integrated development environment in writing program code, and describe the common functions it provides: code editors, a run-time environment, translators, error diagnostics, auto-completion, auto-correction and prettyprint.
Common mistakes to avoid
- 1. Inverting the stack. Why it fails Writing that "the operating system loads the firmware" or "the operating system starts first" reverses the only ordering the syllabus states. Firmware is already present in non-volatile memory when the power arrives; the operating system is a file on secondary storage that something has to fetch. Fix Rehearse the order upward: hardware → bootloader in firmware → operating system → applications. See section 4.1 E.
- 2. Defining application software as "software the user installs". Why it fails A user can install anti-malware, a compression tool or a device driver — all system software. A manufacturer can pre-install a browser and a media player — both application software. Who installed it is irrelevant. Fix Ask what the software is for. Services the computer requires, or services the user requires? See section 4.1 C.
- 3. Saying an interrupt "stops" or "closes" the program. Why it fails The whole point of saving the state is that the interrupted program is resumed. If interrupts ended programs, moving the mouse would close your work. Fix Always finish the sequence with "the state is restored and the program continues from the point at which it was interrupted." See the interrupt laboratory.
- 4. Swapping the two interrupt types. Why it fails The syllabus names the examples explicitly. A key press and a mouse movement are hardware interrupts because a physical device raised them. Division by zero, and two processes trying to access the same memory location, are software interrupts because a running program caused them. Fix Ask "did a physical device raise this, or did a running program?" See section 4.1 G.
- 5. Describing multitasking as literal simultaneity. Why it fails On a single processor core, only one instruction is executed at a time. The operating system allocates processor time to each process in turn and switches between them so quickly that they appear to run at the same time. Fix Use the words "allocates processor time", "saves and restores state" and "appears simultaneous". See OS function 6.
- 6. Making the compiler line-by-line, or the interpreter whole-program. Why it fails These are exactly the wrong way round, and swapping them makes every other difference in 4.2 come out backwards too. A compiler translates the whole code before it is executed and produces an executable file. An interpreter translates and executes line by line and stops when it meets an error. Fix Memorise the pair as a single sentence, in that order, and never write one without the other. See the translator laboratory.
- 7. Treating assembly language as machine code. Why it fails Assembly language uses mnemonics such as LOAD and ADD. A CPU cannot execute a mnemonic. An assembler is needed to translate assembly language into machine code. Fix "Assembly language is written for people to read; machine code is what the processor executes." See section 4.2 D.
- 8. Believing an IDE fixes your program. Why it fails Auto-completion suggests identifiers, auto-correction repairs recognised simple mistakes, error diagnostics report syntax and translation errors, and prettyprint formats the layout. None of them can tell that your algorithm computes the wrong answer. Fix Separate syntax from logic in every IDE answer. See the IDE laboratory.
- "Firmware and the operating system are the same thing." Correct model They are different software with different jobs, held in different places. Firmware is in non-volatile memory, is tied to that specific hardware, and starts the machine. The operating system is on secondary storage, is loaded into main memory by the bootloader, and then manages the machine.
- "The operating system starts before the firmware." Correct model Impossible. The operating system has to be loaded from storage, and the thing that loads it is the bootloader, which is part of the firmware. Firmware is already present when the power arrives; the operating system is not.
- "Firmware is hardware, because it is built in." Correct model Firmware is software. It is stored in a hardware component, which is why the name is confusing, but it is a set of instructions and it can usually be updated. The chip is hardware; the instructions on it are firmware.
- "Applications control the hardware directly." Correct model Applications request resources from the operating system, which controls the hardware using device drivers. Direct hardware access without system-software mediation is not how the stack works.
- "A key press is a software interrupt, because software reacts to it." Why it fails The classification is about what raised the signal, not what deals with it. Software deals with every interrupt; that cannot be the distinguishing feature. Corrected model A key press is raised by the keyboard, a physical device, so it is a hardware interrupt. Exam-safe sentence "Pressing a key on the keyboard is a hardware interrupt, because the signal is raised by a physical device."
- "Division by zero is a hardware interrupt, because the processor's arithmetic unit detects it." Why it fails The detection happens in hardware, but the cause is an instruction in a running program. No device asked for attention; a program did something it could not complete. Corrected model Division by zero is a software interrupt, and so is two processes trying to access the same memory location. Exam-safe sentence "Division by zero is a software interrupt, because the condition arises inside a program that is executing."
- "Assembly language is machine code." Correct model They are different. Machine code is binary and is executed directly. Assembly language uses mnemonics and must be translated by an assembler first. They are closely related — roughly one instruction each — but they are not the same thing. Exam-safe sentence "Assembly language uses mnemonics and must be translated into machine code by an assembler."
- "An assembler translates a high-level language." Correct model An assembler translates assembly language into machine code. High-level languages are translated by a compiler or an interpreter. Exam-safe sentence "An assembler is needed to translate an assembly language program into machine code."
- "Assembly language is machine-independent because you can read it." Correct model Readability and portability are unrelated. Assembly language is tied to one processor's instruction set, so a program written for one type of processor will not assemble or run on another. Exam-safe sentence "Assembly language is machine-dependent, because its mnemonics correspond to one particular processor's instructions."
- M1. "The operating system is application software." Why it fails Application software provides the services the user requires. An operating system provides the services the computer requires, and applications run on it. Putting it in the wrong category inverts the whole layer model. Corrected model An operating system is system software. It manages the hardware and resources and provides the platform on which application software runs. Exam-safe sentence "An operating system is system software, because it provides the services the computer requires and gives application software a platform to run on." Show the retrieval checkHide the check Check: Which category does an operating system belong to, and what is the test?Answer: System software. The test is whose requirement it serves — the computer's, not the user's.
- M2. "All system software is an operating system." Why it fails It ignores the second half of the category. Backup software, anti-malware, compression tools, storage-management tools, encryption utilities and device drivers are all system software and none of them is an operating system. Corrected model System software has two parts: the operating system and utility software. Every operating system is system software; not all system software is an operating system. Exam-safe sentence "System software includes the operating system and utility software such as backup, anti-malware, compression, storage-management and encryption programs." Show the retrieval checkHide the check Check: Name three pieces of system software that are not operating systems.Answer: Any three of: backup software, anti-malware, compression tools, storage-management tools, encryption utilities, device drivers.
- M3. "Firmware is physical hardware." Why it fails The name suggests something halfway between hardware and software, and firmware is stored in a hardware component — but what is stored there is a set of instructions. The fact that firmware can be updated by a download proves it is not physical. Corrected model Firmware is low-level software held in non-volatile memory and closely associated with specific hardware. The chip is hardware; the instructions on it are firmware. Exam-safe sentence "Firmware is low-level software stored in non-volatile memory that provides the initial control of the hardware it is associated with." Show the retrieval checkHide the check Check: Give one piece of evidence that firmware is software rather than hardware.Answer: It can be updated — the instructions are replaced without any physical component being changed.
- M4. "Firmware and the operating system are identical." Why it fails They are stored in different places, run at different times and do different jobs. Merging them makes the start-up sequence impossible to describe. Corrected model Firmware is in non-volatile memory, is tied to that specific hardware, and provides the initial control. The operating system is on secondary storage, is loaded into main memory by the bootloader, and then manages the whole machine. Exam-safe sentence "Firmware provides the initial control of the hardware and its bootloader loads the operating system; the operating system then manages the computer's resources." Show the retrieval checkHide the check Check: Where is firmware stored, and where is the operating system stored before it runs?Answer: Firmware is in non-volatile memory on the device; the operating system is on secondary storage until the bootloader loads it into main memory.
- M5. "The operating system starts before firmware." Why it fails It is not merely conventional but impossible. The operating system has to be loaded from storage, and loading requires a program that is already running. The only software already present when the power arrives is the firmware. Corrected model Hardware → firmware (including the bootloader) → operating system → applications. The bootloader in firmware runs on the hardware, the operating system runs on the firmware, and applications run on the operating system. Exam-safe sentence "The bootloader, which is part of the firmware, runs on the hardware and loads the operating system into main memory; applications then run on the operating system." Show the retrieval checkHide the check Check: Why can the operating system not be the first software to run?Answer: Because it is on secondary storage and must be loaded into main memory, and loading it requires a program that is already running — the bootloader in firmware.
- M6. "A device driver is a physical connector." Why it fails A cable, a port and a plug are hardware. A driver is a program, and the usual symptom of a missing one is a device that is physically connected and still not recognised. Corrected model A device driver is software that allows the operating system to communicate with and control a particular hardware device, translating general instructions into the signals that device understands. Exam-safe sentence "A device driver is software that allows the operating system to communicate with and control a particular hardware device." Show the retrieval checkHide the check Check: A device is plugged in, powered on and not recognised. What is most likely missing, and what kind of thing is it?Answer: The device driver — and it is software, not a cable or connector.
- M7. "Multitasking means a single core executes everything simultaneously." Why it fails A single processor core executes one instruction at a time. Describing genuine simultaneity removes the mechanism the question is actually testing — the switching. Corrected model The operating system allocates processor time to each process in turn, saves and restores state at each switch, and switches so rapidly that the processes appear to run at the same time. Exam-safe sentence "The operating system allocates processor time to each process in turn, saving and restoring their states, and switches between them so quickly that they appear to run simultaneously." Show the retrieval checkHide the check Check: Which single word keeps a multitasking answer honest?Answer: "Appear". The processes appear to run at the same time; a single core executes one instruction at a time.
- M8. "An interrupt always closes the current program." Why it fails If it were true, moving the mouse would close your work. It also makes the whole save-and-restore mechanism pointless — why save a state you will never return to? Corrected model The current instruction completes, the state and return location are saved, the ISR runs, the state is restored, and the interrupted program resumes from where it stopped. A process only ends if the operating system decides that an unrecoverable fault requires it. Exam-safe sentence "After the interrupt service routine has finished, the saved state is restored and the interrupted program continues from the point at which it was interrupted." Show the retrieval checkHide the check Check: Why is the state saved at step 3 of interrupt handling?Answer: So that it can be restored at step 8 and the interrupted program resumed at step 9 exactly where it stopped.
- M9. "A keyboard press is a software interrupt." Why it fails It classifies by what deals with the interrupt rather than what raised it. Software deals with every interrupt, so that cannot be the distinguishing feature. Corrected model A key press is raised by the keyboard, a physical device, so it is a hardware interrupt — one of the two examples the syllabus names, along with moving the mouse. Exam-safe sentence "Pressing a key on the keyboard is a hardware interrupt, because the signal is generated by a physical device." Show the retrieval checkHide the check Check: What is the single question that classifies any interrupt?Answer: Did a physical device raise the signal, or did a running program?
- M10. "Division by zero is a hardware interrupt." Why it fails The condition is detected by the processor, which tempts candidates to call it hardware — but nothing external asked for attention. A program executed an instruction it could not complete. Corrected model Division by zero is a software interrupt, as is two processes trying to access the same memory location. Both are conditions arising inside executing software. Exam-safe sentence "Division by zero is a software interrupt, because the condition arises inside a program that is executing." Show the retrieval checkHide the check Check: Name the two software-interrupt examples the syllabus gives.Answer: Division by zero, and two processes trying to access the same memory location.
- M11. "An ISR is an ordinary user application." Why it fails An application provides a service the user requires and is started when the user asks for it. An ISR is never started by a user, provides no user service, and exists solely to service one particular interrupt. Corrected model An interrupt service routine is a specialised routine executed to service a particular interrupt. Each cause has its own. When it finishes, control returns to the interrupted process. Exam-safe sentence "An interrupt service routine is a specialised routine that is executed to service a particular interrupt, after which control returns to the interrupted process." Show the retrieval checkHide the check Check: Is there one ISR for the whole computer, or more than one? Why does it matter?Answer: More than one — each cause has its own. That is why the interrupt must be identified before the correct routine can be located.
- M12. "High-level code is directly executed by the CPU." Why it fails If it were true there would be no reason for compilers, interpreters or assemblers to exist — and the whole of 4.2 would be unexplainable. Corrected model A CPU executes machine code and nothing else. High-level source must be translated into machine code by a compiler or an interpreter first. Exam-safe sentence "High-level language must be translated into machine code before the CPU can execute it." Show the retrieval checkHide the check Check: What is the only kind of code a CPU can execute?Answer: Machine code — binary instructions from its own instruction set.
- M13. "Machine code is portable between every CPU." Why it fails It confuses machine code with high-level source. Portability is precisely what machine code does not have; it is the defining disadvantage of the low level. Corrected model Every design of processor has its own instruction set, so machine code is machine-dependent. High-level source is machine-independent, but must still be translated for each processor. Exam-safe sentence "Machine code is machine-dependent, because each type of processor has its own instruction set." Show the retrieval checkHide the check Check: Which is machine-independent — the source code or the translated machine code?Answer: The high-level source code. The machine code produced from it is tied to one instruction set.
- M14. "Assembly language is machine code." Why it fails They are closely related but not the same. A CPU cannot execute the word LOAD; something must replace it with binary first. Corrected model Assembly language uses mnemonics and must be translated by an assembler. Machine code is the binary the CPU executes directly. The correspondence between them is close to one-to-one, which is why they are easy to confuse. Exam-safe sentence "Assembly language uses mnemonics rather than binary, and an assembler is needed to translate it into machine code." Show the retrieval checkHide the check Check: What is the one thing that has to happen to an assembly language program before it can run?Answer: It must be translated into machine code by an assembler.
- M15. "An assembler translates high-level code." Why it fails It names the wrong translator, so any question that asks which translator is needed has simply been answered incorrectly. Corrected model An assembler translates assembly language into machine code. A compiler or an interpreter translates a high-level language. Exam-safe sentence "An assembler is needed to translate an assembly language program into machine code; high-level languages are translated by a compiler or an interpreter." Show the retrieval checkHide the check Check: Match each translator to what it translates: assembler, compiler, interpreter.Answer: Assembler → assembly language. Compiler → a whole high-level program. Interpreter → a high-level program, line by line.
- M16. "A compiler translates and executes one line at a time." Why it fails This is the interpreter's behaviour attached to the wrong name. It also makes the compiler's error report and its executable file impossible to explain. Corrected model A compiler translates the whole program at once, before it is executed, and produces an executable file. Exam-safe sentence "A compiler translates the whole code at once before executing it, producing an executable file." Show the retrieval checkHide the check Check: A 500-line program has an error on line 40. How many lines does a compiler execute?Answer: None. Nothing is executed until the whole program has translated successfully.
- M17. "An interpreter translates the entire program first." Why it fails It is the compiler's behaviour under the wrong name, and it contradicts the interpreter's own error behaviour: if it translated everything first, it could not stop at the first error it reached. Corrected model An interpreter translates and executes the code line by line: one statement is translated, then executed, then the next. Exam-safe sentence "An interpreter translates and executes the code line by line." Show the retrieval checkHide the check Check: A 500-line program has errors on lines 40 and 310. How many errors does an interpreter report on one run?Answer: One — the error at line 40. Execution stops there, so line 310 is never reached.
- M18. "An interpreter creates a standalone executable." Why it fails It removes the interpreter's defining disadvantage. If an executable existed, the source would not need translating on every run. Corrected model An interpreter produces no executable file. In the simplified syllabus model, the source code and a suitable interpreter are both needed wherever the program is to run. Exam-safe sentence "An interpreter does not produce an executable file, so the source code is translated again every time the program is run." Show the retrieval checkHide the check Check: Why can a company not distribute an interpreted program without giving away its source code?Answer: Because no executable is produced — the interpreter needs the source in order to translate and run it each time.
- M19. "Compiled programs never need supporting software." Why it fails It overstates a genuine advantage. It is true that a compiled program does not need its source code or a translator present in order to run — but it still needs an operating system to load it, allocate memory to it and give it access to files and devices, and it is still built for a particular platform. Corrected model A compiled executable runs without a translator. It does not run without an operating system, and it runs only on the platform it was compiled for. Exam-safe sentence "A compiled program can be run without the source code or a translator, but it still runs on an operating system and only on the platform it was compiled for." Show the retrieval checkHide the check Check: Name one thing a compiled executable still needs in order to run.Answer: An operating system — to load it, allocate memory to it and give it controlled access to hardware and storage. (It also needs the platform it was compiled for.)
- M20. "An IDE is a programming language." Why it fails It confuses the tool with the material. You write a language in an IDE, and the same IDE often supports several languages. Corrected model An IDE is software that combines the tools needed to develop programs — editor, run-time environment, translators, error diagnostics, auto-completion, auto-correction and prettyprint. It is also not itself the translator; it calls one. Exam-safe sentence "An IDE is software that combines the tools used to write, translate, run and correct programs into one application." Show the retrieval checkHide the check Check: Is the translator part of the IDE, or something the IDE uses?Answer: Something the IDE contains and calls. The translator remains a compiler or an interpreter in its own right.
- M21. "Auto-correction repairs program logic." Why it fails Auto-correction works on things it can recognise — a missing bracket, a misspelled keyword. It has no idea what your program is supposed to compute, so it cannot know that dividing by the wrong variable is wrong. Corrected model Auto-correction corrects recognised simple syntax or formatting mistakes, and may produce an incorrect change, so every correction must be reviewed. Logic errors are found only by testing. Exam-safe sentence "Auto-correction fixes recognised simple syntax mistakes and must be reviewed, because it cannot detect a logic error and may itself make an incorrect change." Show the retrieval checkHide the check Check: What finds a logic error?Answer: Only the programmer, by running the program in the run-time environment with test data whose correct answer is already known.
- M22. "Prettyprinting fixes syntax and logic errors." Why it fails Prettyprint changes presentation: indentation, spacing, layout. Reformatting a broken statement leaves it exactly as broken, and reformatting a wrong algorithm leaves it exactly as wrong. Corrected model Prettyprint formats code consistently and improves readability. It changes appearance only. Syntax errors are reported by error diagnostics; logic errors are found by testing. Exam-safe sentence "Prettyprint formats the code consistently to improve indentation and readability; it does not change what the program does." Show the retrieval checkHide the check Check: After prettyprinting a program, what has changed and what has not?Answer: Its layout and readability have changed. What it does — and any error in it — has not.
Examiner tips
- The routes are study methods, not qualification tiers. “Learn” and “Revise” describe when you read something, never who has to know it. If you are reading this chapter at all, all 19 requirements apply to you.
- How to use this chapter. Read a teaching section, answer its recall and transfer questions on paper before opening the answer, then use the matching tool in the laboratory that follows only to check your reasoning. The tools cannot be taken into the exam; the ordered sentences you rehearse can.
- All 19 are for you. There is no Core/Extended split in 0478 and no requirement in this table is reserved for a different set of candidates. If a row is not in your notes, that is a gap, not an optional extra.
- A comparison question is not a definition question. Answering one with the other spends a whole paragraph on the wrong question. "What is the advantage of a compiler for distributing software?" is not asking what a compiler is. Name the advantage, then tie it to distribution.
- The one-line test. If a question mentions mnemonics, the answer is an assembler. If it mentions an executable file or distribution, the answer is a compiler. If it mentions testing while writing or stopping at an error, the answer is an interpreter.
- Two rules that make the schedule work. First, always attempt before you look — producing a wrong order and correcting it builds far more durable memory than reading a right one. Second, if a session takes noticeably longer than the time shown, that is data, not failure: it tells you which competency to put in the next session.
Every chapter note, MCQ explanation, and structured mark scheme is rigorously vetted by Cambridge curriculum specialists.

