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:
| Type | Examples | Purpose |
|---|---|---|
| Operating System | Windows, macOS, Linux | Manages all computer operations |
| Utility Programs | Anti-virus, Disk defragmenter | Maintains and optimises the system |
| Device Drivers | Printer driver, Graphics driver | Allows OS to communicate with hardware |
| Translators | Compiler, Interpreter, Assembler | Converts 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:
| Category | Examples |
|---|---|
| Word Processing | Microsoft Word, Google Docs |
| Spreadsheets | Microsoft Excel, Google Sheets |
| Web Browsers | Chrome, Firefox, Safari |
| Games | Minecraft, Fortnite |
| Graphics Software | Photoshop, GIMP |
| Database Software | Microsoft Access, MySQL |
Key Difference
| System Software | Application Software | |
|---|---|---|
| Purpose | Manages hardware and provides platform | Helps user perform specific tasks |
| Runs | In background | Directly by user |
| Examples | OS, drivers, utilities | Word processors, games, browsers |
| Without it | Computer cannot function | Computer 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
| Function | Description |
|---|---|
| File Management | Manages reading, writing, creating, deleting, and organising files and folders |
| Memory Management | Allocates RAM to running programs; uses virtual memory if physical RAM is full |
| User Interface | Provides a way for users to interact with the computer (GUI or CLI) |
| Multitasking | Runs multiple applications simultaneously by rapidly switching between them |
| Peripheral Management | Manages communication with hardware devices through drivers |
| Security | Provides authentication, password protection, user accounts, access rights |
| Interrupt Handling | Detects and responds to interrupt signals from hardware or software |
| Platform for Applications | Provides services (APIs) that applications need to run |
| User Account Management | Creates 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
- Hardware – Physical components (CPU, RAM, storage) are powered on
- Firmware (BIOS/UEFI) – Basic software stored in ROM that:
- Performs Power-On Self-Test (POST)
- Initialises hardware components
- Locates and loads the bootloader
- Bootloader (part of firmware) – Loads the Operating System into RAM
- Operating System – Takes control, loads drivers, provides user interface
- 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
| Type | Description | Examples |
|---|---|---|
| Hardware Interrupts | Generated by hardware devices | Keypress, mouse movement, printer out of paper, network data received |
| Software Interrupts | Generated by programs or CPU | Division by zero, memory access violation, system call |
How an Interrupt is Generated
- A device or program needs CPU attention
- It sends an electronic signal to the CPU’s interrupt pin
- The interrupt controller prioritises interrupts if multiple occur
How Interrupts are Handled
Step-by-step process:
- Interrupt occurs – A device or program sends an interrupt signal
- CPU suspends current task – Completes current instruction, saves its state
- Interrupt acknowledged – CPU identifies which interrupt occurred
- Interrupt Service Routine (ISR) located – Finds appropriate ISR in interrupt vector table
- ISR executed – CPU runs the code to handle the interrupt
- 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:
- Machine Code – Binary (1s and 0s) – directly executed by CPU
- 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
| Aspect | High-Level Language | Low-Level Language |
|---|---|---|
| Readability | Easy to read and write | Hard to read and write |
| Debugging | Easier to debug | Difficult to debug |
| Machine Independence | Works on different machines | Machine-specific |
| Speed | Slower execution | Faster execution |
| Memory Usage | More memory used | Efficient memory use |
| Hardware Control | Limited direct control | Full hardware control |
| Development Time | Faster to develop | Slower to develop |
| Use Case | Applications, websites | Embedded 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
| Translator | Input | Output |
|---|---|---|
| Compiler | High-level language | Machine code (executable file) |
| Interpreter | High-level language | Machine code (line by line) |
| Assembler | Assembly language | Machine code |
Compiler
A compiler translates the entire high-level program into machine code before execution.
How it works:
- Reads entire source code
- Checks for syntax errors
- Converts whole program to machine code
- Creates executable file (.exe, .class)
- 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:
- Reads one line of source code
- Translates that line
- Executes that line
- 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
| Scenario | Best Translator |
|---|---|
| Learning to program | Interpreter |
| Developing/testing code | Interpreter |
| Final commercial product | Compiler |
| Creating an app for users | Compiler |
| Embedded system programming | Assembler |
| Writing device drivers | Assembler |
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
| Feature | Purpose |
|---|---|
| Code Editor | Write and edit source code with syntax highlighting |
| Translator | Compiler or interpreter to convert code |
| Run-time Environment | Test and execute programs within the IDE |
| Error Diagnostics | Shows syntax and logic errors with line numbers |
| Auto-completion | Suggests code as you type (e.g., variable names, keywords) |
| Auto-correction | Automatically fixes simple syntax errors |
| Prettyprint | Formats code neatly with proper indentation |
| Debugger | Step through code, set breakpoints, examine variables |
| File Management | Organise 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
| IDE | Languages | Platform |
|---|---|---|
| Thonny | Python | Education |
| PyCharm | Python | Professional |
| Visual Studio | C#, C++, many | Professional |
| VS Code | Many languages | Lightweight |
| NetBeans | Java | Professional |
| Eclipse | Java, others | Professional |
| IDLE | Python | Basic (comes with Python) |
Summary & Key Takeaways
Types of Software
| Type | Purpose | Examples |
|---|---|---|
| System Software | Manages hardware, runs computer | OS, drivers, utilities |
| Application Software | User tasks | Word, 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-Level | Low-Level | |
|---|---|---|
| Readability | Easy | Hard |
| Portability | Portable | Machine-specific |
| Speed | Slower | Faster |
| Use | Applications | System programming |
Translators
| Translator | How it Works | When Used |
|---|---|---|
| Compiler | Translates whole program at once | Final product |
| Interpreter | Translates line by line | Development, learning |
| Assembler | Converts assembly to machine code | Low-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
- State the difference between system software and application software. Give two examples of each.
- 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
- List five functions of an operating system.
- Explain what is meant by multitasking and how the operating system achieves it.
- Describe the difference between a GUI and a CLI. Give one advantage of each.
- Why does an operating system need to manage memory?
Section C: Hardware, Firmware and OS Relationship
- Explain the relationship between hardware, firmware, and the operating system.
- Describe what happens during the boot process from when the computer is switched on until the OS loads.
Section D: Interrupts
- What is an interrupt?
- Give two examples of:
a) Hardware interrupts
b) Software interrupts - Describe the step-by-step process of how an interrupt is handled by the CPU.
- Why are interrupts important in a multitasking system?
Section E: Programming Languages
- Explain the difference between high-level and low-level programming languages.
- Give two advantages and two disadvantages of:
a) High-level languages
b) Low-level languages - What is assembly language and why is an assembler needed?
Section F: Translators
- Compare how a compiler and an interpreter translate code.
- Give one advantage and one disadvantage of:
a) Using a compiler
b) Using an interpreter - Why would a programmer use an interpreter during development but a compiler for the final product?
- What is the role of an assembler?
Section G: IDEs
- What is an IDE and why do programmers use them?
- List five common features of an IDE and explain the purpose of each.
- Explain how each of the following helps a programmer:
a) Auto-completion
b) Error diagnostics
c) Debugger - Give an example of an IDE you have used and describe two features that helped you write code.
Quick Reference Card
| Concept | Key Point |
|---|---|
| System Software | Runs computer hardware |
| Application Software | User tasks |
| OS Functions | Files, memory, interface, multitasking, peripherals, security, interrupts |
| Boot Process | Hardware → Firmware → Bootloader → OS → Applications |
| Interrupt | Signal to pause CPU, run ISR, then resume |
| Hardware Interrupt | From device (keyboard, mouse) |
| Software Interrupt | From program (division by zero) |
| High-Level Language | Easy to read, portable, slower |
| Low-Level Language | Hard to read, machine-specific, fast |
| Compiler | Translates whole program, creates executable |
| Interpreter | Translates line by line, stops at errors |
| Assembler | Converts assembly to machine code |
| IDE Features | Editor, 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.
