Chapter 4 – Software (0478/2210) IGCSE/GCE CS Notes

Based on Cambridge Syllabus 2026-2028


What is Software?

Software is a collection of instructions (programs) that tell the computer hardware what to do. Without software, hardware is useless.

Software is classified into two main types:

  • System Software – Manages the computer hardware and provides a platform for applications
  • Application Software – Performs specific tasks for the user

Types of Software

System Software

System software provides the services that the computer requires to operate. It runs in the background and manages the hardware.

Examples of System Software:

TypeExamplesPurpose
Operating SystemWindows, macOS, LinuxManages all computer operations
Utility ProgramsAnti-virus, Disk defragmenterMaintains and optimises the system
Device DriversPrinter driver, Graphics driverAllows OS to communicate with hardware
TranslatorsCompiler, Interpreter, AssemblerConverts code into machine language

Application Software

Application software provides the services that the user requires to perform specific tasks. Users interact directly with application software.

Examples of Application Software:

CategoryExamples
Word ProcessingMicrosoft Word, Google Docs
SpreadsheetsMicrosoft Excel, Google Sheets
Web BrowsersChrome, Firefox, Safari
GamesMinecraft, Fortnite
Graphics SoftwarePhotoshop, GIMP
Database SoftwareMicrosoft Access, MySQL

Key Difference

System SoftwareApplication Software
PurposeManages hardware and provides platformHelps user perform specific tasks
RunsIn backgroundDirectly by user
ExamplesOS, drivers, utilitiesWord processors, games, browsers
Without itComputer cannot functionComputer can still run but user can’t do tasks

Operating System Functions

The Operating System (OS) is the most important system software. It provides the environment for applications to run and manages all computer operations.

Key OS Functions

FunctionDescription
File ManagementManages reading, writing, creating, deleting, and organising files and folders
Memory ManagementAllocates RAM to running programs; uses virtual memory if physical RAM is full
User InterfaceProvides a way for users to interact with the computer (GUI or CLI)
MultitaskingRuns multiple applications simultaneously by rapidly switching between them
Peripheral ManagementManages communication with hardware devices through drivers
SecurityProvides authentication, password protection, user accounts, access rights
Interrupt HandlingDetects and responds to interrupt signals from hardware or software
Platform for ApplicationsProvides services (APIs) that applications need to run
User Account ManagementCreates and manages user accounts with different permission levels

Detailed Explanation

File Management

  • Organises files into directories/folders
  • Controls who can read, write, or execute files
  • Manages file creation, deletion, and modification
  • Tracks where files are stored on disk

Memory Management

  • Keeps track of which parts of memory are in use
  • Allocates memory to processes when needed
  • Deallocates memory when processes finish
  • Uses virtual memory (space on hard disk) when RAM is full

User Interface

Two main types:

Graphical User Interface (GUI)

  • Uses windows, icons, menus, pointers
  • Easy to use, visual
  • Examples: Windows, macOS

Command Line Interface (CLI)

  • User types commands
  • Faster for experts, uses less memory
  • Examples: Linux terminal, MS-DOS

Multitasking

  • CPU can only run one instruction at a time
  • OS rapidly switches between tasks (time-slicing)
  • Gives illusion of running multiple programs at once
  • Each program gets a small time slot

Peripheral Management

  • Uses device drivers to communicate with hardware
  • Drivers translate OS commands into device-specific instructions
  • Plug and Play automatically detects and configures new devices

Security

  • User authentication (username/password)
  • File permissions (read, write, execute)
  • Firewall protection
  • Prevents unauthorised access

Hardware, Firmware and Operating System Relationship

How They Work Together

For applications to run, there is a clear hierarchy:

APPLICATIONS SOFTWARE
         ↑
         │ runs on
         ↓
OPERATING SYSTEM
         ↑
         │ runs on
         ↓
FIRMWARE (including Bootloader)
         ↑
         │ runs on
         ↓
HARDWARE

The Boot Process

  1. Hardware – Physical components (CPU, RAM, storage) are powered on
  2. Firmware (BIOS/UEFI) – Basic software stored in ROM that:
  • Performs Power-On Self-Test (POST)
  • Initialises hardware components
  • Locates and loads the bootloader
  1. Bootloader (part of firmware) – Loads the Operating System into RAM
  2. Operating System – Takes control, loads drivers, provides user interface
  3. Applications – User launches applications that run on the OS

Key Points

  • Hardware cannot do anything without software
  • Firmware is essential to start the computer
  • Operating System provides platform for applications
  • Applications rely on OS services to function

Interrupts

What is an Interrupt?

An interrupt is a signal that temporarily stops the CPU’s current task to handle a more urgent task.

Why Interrupts are Needed

  • Allows CPU to respond immediately to urgent events
  • Makes system more efficient (CPU doesn’t have to constantly check devices)
  • Enables multitasking
  • Handles errors and exceptional conditions

Types of Interrupts

TypeDescriptionExamples
Hardware InterruptsGenerated by hardware devicesKeypress, mouse movement, printer out of paper, network data received
Software InterruptsGenerated by programs or CPUDivision by zero, memory access violation, system call

How an Interrupt is Generated

  1. A device or program needs CPU attention
  2. It sends an electronic signal to the CPU’s interrupt pin
  3. The interrupt controller prioritises interrupts if multiple occur

How Interrupts are Handled

Step-by-step process:

  1. Interrupt occurs – A device or program sends an interrupt signal
  2. CPU suspends current task – Completes current instruction, saves its state
  3. Interrupt acknowledged – CPU identifies which interrupt occurred
  4. Interrupt Service Routine (ISR) located – Finds appropriate ISR in interrupt vector table
  5. ISR executed – CPU runs the code to handle the interrupt
  6. Task resumed – CPU restores previous state and continues original task

Visual Representation

CPU RUNNING PROGRAM A
         │
         ▼
   ┌─────────────┐
   │             │
   │  INTERRUPT  │◄─────── Keyboard press
   │   OCCURS    │
   └─────────────┘
         │
         ▼
CPU SUSPENDS PROGRAM A
         │
         ▼
SAVES CURRENT STATE
         │
         ▼
EXECUTES INTERRUPT
SERVICE ROUTINE (ISR)
         │
         ▼
RESTORES PROGRAM A STATE
         │
         ▼
RESUMES PROGRAM A

What Happens as a Result of Interrupts

  • Keyboard interrupt → Character appears on screen
  • Mouse interrupt → Cursor moves, click action performed
  • Timer interrupt → OS switches to another task (multitasking)
  • Division by zero → Program terminated with error message
  • Disk ready interrupt → Data is read from or written to disk

Programming Languages

High-Level Languages

High-level languages are designed to be easy for humans to read and write.

Examples: Python, Java, C++, JavaScript, Visual Basic

Characteristics:

  • Uses English-like words and syntax
  • Must be translated into machine code
  • Independent of computer hardware
  • One statement can do complex tasks

Low-Level Languages

Low-level languages are closer to machine code and designed for specific hardware.

Two types:

  1. Machine Code – Binary (1s and 0s) – directly executed by CPU
  2. Assembly Language – Uses mnemonics (e.g., ADD, MOV, SUB)

Assembly Language Example:

LOAD  R1, 5     ; Load value 5 into register R1
ADD   R1, 3     ; Add 3 to R1
STORE R1, RESULT ; Store result in memory

Comparison: High-Level vs Low-Level Languages

AspectHigh-Level LanguageLow-Level Language
ReadabilityEasy to read and writeHard to read and write
DebuggingEasier to debugDifficult to debug
Machine IndependenceWorks on different machinesMachine-specific
SpeedSlower executionFaster execution
Memory UsageMore memory usedEfficient memory use
Hardware ControlLimited direct controlFull hardware control
Development TimeFaster to developSlower to develop
Use CaseApplications, websitesEmbedded systems, drivers, OS

Advantages of High-Level Languages

  • Easier to learn and use
  • Faster program development
  • Easier to debug and maintain
  • Portable between different systems
  • More readable code

Disadvantages of High-Level Languages

  • Slower execution speed
  • Less control over hardware
  • Requires translator (compiler/interpreter)
  • May use more memory

Advantages of Low-Level Languages

  • Very fast execution
  • Efficient use of memory
  • Direct hardware control
  • No translator needed for machine code

Disadvantages of Low-Level Languages

  • Difficult to learn and use
  • Time-consuming to write
  • Hard to debug
  • Not portable (machine-specific)

Language Translators

Since computers only understand machine code (binary), all programs must be translated.

Three Types of Translators

TranslatorInputOutput
CompilerHigh-level languageMachine code (executable file)
InterpreterHigh-level languageMachine code (line by line)
AssemblerAssembly languageMachine code

Compiler

A compiler translates the entire high-level program into machine code before execution.

How it works:

  1. Reads entire source code
  2. Checks for syntax errors
  3. Converts whole program to machine code
  4. Creates executable file (.exe, .class)
  5. Program can be run without compiler

Error Reporting:

  • Reports all errors at once after compilation
  • No executable created if errors exist

Advantages:

  • Faster execution (already translated)
  • Executable can be distributed without source code
  • Optimises code for better performance
  • No need for compiler on user’s machine

Disadvantages:

  • Slower to debug (all errors shown at once)
  • Compilation can take time for large programs
  • Less flexible during development

Interpreter

An interpreter translates and executes the program line by line.

How it works:

  1. Reads one line of source code
  2. Translates that line
  3. Executes that line
  4. Repeats for each line

Error Reporting:

  • Stops at first error encountered
  • Reports only that error
  • Must fix error and restart execution

Advantages:

  • Easier to debug (stops at error)
  • Good for learning and testing
  • No separate compilation step
  • Platform independent if interpreter available

Disadvantages:

  • Slower execution (translates every time)
  • Source code needed every time
  • Cannot run without interpreter
  • No optimisation across entire program

Assembler

An assembler translates assembly language into machine code.

How it works:

  • Converts mnemonics (e.g., ADD) into binary opcodes
  • Replaces labels with memory addresses
  • Creates object code that CPU can execute

Example:

Assembly:  ADD R1, R2
Assembler → Machine code: 10010101 00010010

When to Use Each Translator

ScenarioBest Translator
Learning to programInterpreter
Developing/testing codeInterpreter
Final commercial productCompiler
Creating an app for usersCompiler
Embedded system programmingAssembler
Writing device driversAssembler

Integrated Development Environments (IDEs)

What is an IDE?

An Integrated Development Environment (IDE) is a software application that provides comprehensive tools for programmers to write, test, and debug code.

Why Use an IDE?

An IDE brings together everything a programmer needs in one place, making development faster and easier.

Common IDE Features

FeaturePurpose
Code EditorWrite and edit source code with syntax highlighting
TranslatorCompiler or interpreter to convert code
Run-time EnvironmentTest and execute programs within the IDE
Error DiagnosticsShows syntax and logic errors with line numbers
Auto-completionSuggests code as you type (e.g., variable names, keywords)
Auto-correctionAutomatically fixes simple syntax errors
PrettyprintFormats code neatly with proper indentation
DebuggerStep through code, set breakpoints, examine variables
File ManagementOrganise project files and folders

Detailed Explanation of IDE Features

1. Code Editor

  • Where you write your program
  • Syntax highlighting colours different parts of code
  • Shows line numbers for easy reference
  • May have multiple tabs for different files

2. Translator

  • Built-in compiler or interpreter
  • Translates code so it can be executed
  • Can be run with a single button click

3. Run-time Environment

  • Allows you to run and test your program
  • Shows program output
  • May provide input options

4. Error Diagnostics

  • Highlights errors in the code
  • Shows error messages and descriptions
  • Often underlines errors like a spell checker
  • Suggests possible fixes

5. Auto-completion

  • As you type, IDE suggests possible completions
  • Saves typing time
  • Reduces spelling errors
  • Helps learn available functions

6. Auto-correction

  • Automatically fixes common mistakes
  • Adds missing brackets or semicolons
  • Corrects indentation

7. Prettyprint (Code Formatting)

  • Automatically formats code neatly
  • Ensures consistent indentation
  • Makes code more readable
  • Can be applied with one click

8. Debugger

  • Run program step by step
  • Set breakpoints to pause at specific lines
  • Examine variable values at any point
  • Helps find logic errors

Examples of IDEs

IDELanguagesPlatform
ThonnyPythonEducation
PyCharmPythonProfessional
Visual StudioC#, C++, manyProfessional
VS CodeMany languagesLightweight
NetBeansJavaProfessional
EclipseJava, othersProfessional
IDLEPythonBasic (comes with Python)

Summary & Key Takeaways

Types of Software

TypePurposeExamples
System SoftwareManages hardware, runs computerOS, drivers, utilities
Application SoftwareUser tasksWord, browser, games

Operating System Functions

  • File management
  • Memory management
  • User interface
  • Multitasking
  • Peripheral management
  • Security
  • Interrupt handling
  • Platform for applications

Hardware-Firmware-OS Relationship

  • Hardware runs firmware
  • Firmware loads OS
  • OS runs applications

Interrupts

  • Signal to CPU to handle urgent task
  • Hardware or software generated
  • CPU runs Interrupt Service Routine (ISR)
  • Original task resumes

Programming Languages

High-LevelLow-Level
ReadabilityEasyHard
PortabilityPortableMachine-specific
SpeedSlowerFaster
UseApplicationsSystem programming

Translators

TranslatorHow it WorksWhen Used
CompilerTranslates whole program at onceFinal product
InterpreterTranslates line by lineDevelopment, learning
AssemblerConverts assembly to machine codeLow-level programming

IDE Features

  • Code editor
  • Translator
  • Run-time environment
  • Error diagnostics
  • Auto-completion
  • Auto-correction
  • Prettyprint
  • Debugger

Practice Questions

Section A: Types of Software

  1. State the difference between system software and application software. Give two examples of each.
  2. Identify whether each of the following is system software or application software:
    a) Microsoft Word
    b) Windows 11
    c) Anti-virus program
    d) Printer driver
    e) Google Chrome

Section B: Operating System Functions

  1. List five functions of an operating system.
  2. Explain what is meant by multitasking and how the operating system achieves it.
  3. Describe the difference between a GUI and a CLI. Give one advantage of each.
  4. Why does an operating system need to manage memory?

Section C: Hardware, Firmware and OS Relationship

  1. Explain the relationship between hardware, firmware, and the operating system.
  2. Describe what happens during the boot process from when the computer is switched on until the OS loads.

Section D: Interrupts

  1. What is an interrupt?
  2. Give two examples of:
    a) Hardware interrupts
    b) Software interrupts
  3. Describe the step-by-step process of how an interrupt is handled by the CPU.
  4. Why are interrupts important in a multitasking system?

Section E: Programming Languages

  1. Explain the difference between high-level and low-level programming languages.
  2. Give two advantages and two disadvantages of:
    a) High-level languages
    b) Low-level languages
  3. What is assembly language and why is an assembler needed?

Section F: Translators

  1. Compare how a compiler and an interpreter translate code.
  2. Give one advantage and one disadvantage of:
    a) Using a compiler
    b) Using an interpreter
  3. Why would a programmer use an interpreter during development but a compiler for the final product?
  4. What is the role of an assembler?

Section G: IDEs

  1. What is an IDE and why do programmers use them?
  2. List five common features of an IDE and explain the purpose of each.
  3. Explain how each of the following helps a programmer:
    a) Auto-completion
    b) Error diagnostics
    c) Debugger
  4. Give an example of an IDE you have used and describe two features that helped you write code.

Quick Reference Card

ConceptKey Point
System SoftwareRuns computer hardware
Application SoftwareUser tasks
OS FunctionsFiles, memory, interface, multitasking, peripherals, security, interrupts
Boot ProcessHardware → Firmware → Bootloader → OS → Applications
InterruptSignal to pause CPU, run ISR, then resume
Hardware InterruptFrom device (keyboard, mouse)
Software InterruptFrom program (division by zero)
High-Level LanguageEasy to read, portable, slower
Low-Level LanguageHard to read, machine-specific, fast
CompilerTranslates whole program, creates executable
InterpreterTranslates line by line, stops at errors
AssemblerConverts assembly to machine code
IDE FeaturesEditor, translator, runtime, error diagnostics, auto-complete, debugger

End of Chapter 4: Software

Below is the presentation for this chapter. You can download it to study from the slides.

Scroll to Top