Two kinds of software
Software is any program. Hardware is the parts you can touch. Software splits into two families: the ones that run the computer, and the ones that do a job for you.
| System software | Application software | |
|---|---|---|
| Job | Runs and looks after the computer | Does a task for you |
| Examples | Operating system, utilities (antivirus, backup), drivers | Browser, games, Spotify, Word, Unreal Engine |
| Without it… | The computer can't start or run anything | The computer works but does nothing useful for you |
Sort the software
Is each one system or application software? Tap your answer.
Why have layers at all? So an app maker doesn't need to know which printer, graphics card or keyboard you have. They ask the operating system. The OS and its drivers deal with the hardware. One app works on millions of different computers.
A web browser is application software, even though it feels like part of the computer. It does a job for you (shows web pages).
What an operating system does
The operating system (Windows, macOS, Linux, Android, iOS) sits between the hardware and every app. It's the manager of the whole computer. It has six main jobs.
User interface. How you talk to the computer. A GUI (graphical user interface) has windows, icons, menus and a pointer. A command line means typing commands. Phones use touch; smart speakers use voice.
Memory management. Decides which program gets which part of RAM. Stops one program writing over another's memory. Moves things to virtual memory when RAM is full (Topic 8).
Process scheduling (multitasking). One core can only run one program at a time. The OS switches between programs thousands of times a second, so they all seem to run at once. Step 3 shows how.
Peripherals and drivers. A driver is a small program that lets the OS talk to one device: a printer, a graphics card, a game controller. New device → install its driver.
File management. Folders, file names, copying, moving, deleting. It remembers where on the drive each file's pieces are.
Security and users. Accounts and passwords. Who can open which files. Updates that fix security holes. A firewall.
Which OS job is it?
You plug in a new game controller. Windows says "Setting up a device". It is finding and installing the driver. Without it, the OS gets button signals but doesn't know what they mean.
OCR J277 lists five OS jobs: user interface, memory management and multitasking, peripheral management and drivers, user management, file management. AQA 8525 groups them as managing the processor, memory, I/O devices, applications and security. Same ideas, different words.
Sharing the CPU: round robin
Lots of programs want the CPU at once. One simple, fair way to share it is round robin: everyone gets a short turn, called a time slice, then goes to the back of the queue.
Round-robin scheduler
Each program needs some time units. The CPU gives the one at the front of the queue one time slice, then moves on.
Why not just run each program to the end? A long job (exporting a video) would freeze everything else. Your music would stop and the mouse would stick. Short turns keep every program moving, so the computer feels responsive.
Why not make slices really tiny? Every switch costs time (saving and loading registers). Too many switches and the CPU spends its time switching, not working.
Real operating systems also use priorities: the mouse pointer and your music get turns before a background update. Round robin is the simplest fair scheduler.
Utility software
A utility is a small system program that keeps the computer healthy, tidy or safe. Five to know.
| Utility | What it does | Problem it solves |
|---|---|---|
| Defragmentation | Puts a hard disk's scattered pieces back together | Hard disk slow to open files |
| Compression | Makes files smaller (ZIP) | Files too big to email or store |
| Backup | Copies files somewhere else, on a schedule | Drive dies, files deleted, ransomware |
| Encryption | Scrambles data so only someone with the key can read it | Laptop stolen; data read by the wrong person |
| Antivirus | Finds and removes harmful software (malware) | Viruses, worms, trojans |
Defragmentation
A hard disk saves a file wherever there's a free gap. Over time, files get split into pieces scattered across the disk. That's fragmentation. The read/write head must jump around to read one file, which is slow.
Defragmenter
Don't defragment an SSD. It has no moving parts, so reading scattered blocks is just as fast. Defragmenting only wears its cells out with extra writes. Windows runs a different tidy-up ("TRIM") on SSDs instead.
The other four
Compression. Finds patterns and stores them more briefly. ZIP is lossless: you get every bit back. Topic 7 goes deeper.
Encryption. Scrambles data using a key. BitLocker (Windows) and FileVault (macOS) encrypt the whole drive, so a stolen laptop is useless to the thief.
Antivirus. Compares files with a list of known malware "signatures", and watches for suspicious behaviour. It needs updating every day, because new malware appears every day.
Backup. A copy kept somewhere else. Next step.
Backups: full and incremental
A full backup copies everything. An incremental backup only copies what changed since the last backup. Most people do one full backup, then incrementals.
| Full backup | Incremental backup | |
|---|---|---|
| Copies | Every file | Only files changed since the last backup |
| Space used | A lot | Very little |
| Time to make | Slow | Fast |
| Time to restore | Fast: one copy | Slower: the full one, then every incremental in order |
To compare sizes, put them in the same unit first. The formula box below follows the planner further down: it turns the drive size from TB into GB.
By hand: how many incremental backups fit?
A school backs up 200 GB in full, then about 800 MB of changes a day. The backup drive is 1 TB. How many days of incrementals fit after the full backup?
Put everything in the same unit (GB). 1 TB → GB: a bigger unit going down to a smaller one, so multiply: 1 × 1,000 = 1,000 GB.
800 MB → GB: going up to a bigger unit, so divide: 800 ÷ 1,000 = 0.8 GB.
Take off the full backup. 1,000 − 200 = 800 GB left for incrementals.
Divide by the size of one. 800 ÷ 0.8 = 1,000 incremental backups.
Sense check. That's nearly 3 years of school days. Doing a fresh full backup every month would only cost 200 GB. ✓
Backup planner
The 3-2-1 rule: 3 copies of your data, on 2 different kinds of storage, with 1 kept off site (another building or the cloud). A backup in the same room burns in the same fire.
Open source vs proprietary
Programs are written as source code (text a person can read), then turned into machine code. The question is: can you see and change the source code?
| Open source | Proprietary (closed source) | |
|---|---|---|
| Source code | Anyone can see it, change it and share it | Kept secret by the company |
| Cost | Usually free | Usually paid: a one-off price or a subscription |
| Licence | e.g. GPL, MIT, Apache | An end-user licence agreement (EULA): you may use it, not copy or change it |
| Examples | Linux, Firefox, Python, LibreOffice, Blender, Godot, Thonny | Windows, macOS, Microsoft Office, Photoshop, most console games |
Open source
- + Free to use.
- + You can change it to fit your needs.
- + Many people check the code, so bugs can be found fast.
- − Support may only be forums and volunteers.
- − Can be less polished or harder to install.
Proprietary
- + Paid support and regular updates.
- + Usually well tested and polished.
- + Often the industry standard (files open everywhere).
- − Costs money, often every year.
- − You can't fix or change it; you depend on the company.
Free is not the same as open source. WhatsApp and Fortnite are free to download, but their code is secret: they are proprietary. Open source is about the code, not the price.
Software is protected by copyright like a book. In the UK that's the Copyright, Designs and Patents Act 1988; in Spain the Ley de Propiedad Intelectual (Real Decreto Legislativo 1/1996). Copying proprietary software without a licence breaks these laws. A GPL licence says: you may change and share this, but what you share must stay open source too. MIT lets you do almost anything if you keep the author's name.
High-level and low-level languages
The CPU only understands machine code: binary instructions. People find that almost impossible to write. So we write in languages closer to English, and translate.
| Level | Looks like | Notes |
|---|---|---|
| Machine code (low) | 10100101 00110010 | What the CPU runs. Different for each CPU type |
| Assembly (low) | LDA 50 / ADD 51 / STA 52 | One short word (mnemonic) per machine instruction |
| High-level | total = a + b | Python, C#, JavaScript. Easier. Works on any CPU once translated |
High to low: one Python line, all the way down
A made-up 8-bit CPU: the first 4 bits are the opcode (what to do), the last 4 are the address. Real CPUs use longer codes, but the idea is the same.
| High-level | Low-level (assembly / machine code) | |
|---|---|---|
| Easy to read and write? | Yes: English-like words | No: codes and numbers |
| One line does… | Many machine instructions | Exactly one |
| Runs on | Any CPU, once translated | Only one family of CPU |
| Control over hardware | Little: the translator decides | Total: every register and address |
| Used for | Almost all apps and games | Drivers, embedded systems, tiny fast code |
Why does anyone still write assembly? For tiny chips with very little memory (a washing machine controller), or code that must be as fast as possible. You can say exactly which register to use. Old consoles like the NES were programmed this way.
Translators: compiler, interpreter, assembler
A translator turns code people can write into machine code the CPU can run. There are three kinds.
Assembler: assembly → machine code. One line in, one instruction out.
Compiler: translates the whole program first, into a file like .exe. Then that file runs, as often as you like, with no translating.
Interpreter: translates and runs one line at a time. Every time you run the program, it translates again.
| Compiler | Interpreter | |
|---|---|---|
| When | All at once, before running | Line by line, while running |
| Output | A file you can run (an executable) | No file |
| Speed | Fast to run | Slower: translating while running |
| Errors | Lists them all at the end; nothing runs | Stops at the first one; lines before it have already run |
| Sharing | Share the .exe; your source code stays private | The user needs the interpreter and your source code |
| Good for | Finished products: games, apps | Learning and testing: try a line, see what happens |
| Examples | C, C++ (Unreal Engine), Rust | Python, JavaScript |
A compiler translates a whole book before printing it. An interpreter translates a speech sentence by sentence, as the speaker talks.
The CPU can only run its own machine code. People can't sensibly write millions of 0s and 1s, and machine code only works on one type of CPU. A translator lets us write once, in a language people can read, and run it on any CPU that has a translator.
Real Python is a mix: it first compiles your code into "bytecode", then an interpreter runs the bytecode. Java and C# do something similar. For GCSE, call Python interpreted.
The IDE: where you write code
An IDE (Integrated Development Environment) is the program you code in. It puts everything a programmer needs in one window. Year 8 uses Thonny or IDLE for Python; you might also see VS Code.
| Feature | What it does | Why it helps |
|---|---|---|
| Editor | Where you type, with line numbers, auto-indent and syntax colouring | Mistakes stand out: a string that never ends turns the rest of the line green |
| Auto-complete | Suggests names as you type | Fewer spelling mistakes in variable names |
| Run button + translator | Translates and runs the code in one click | No need to use the command line |
| Error diagnostics | Shows the error type and line number | Tells you where to look |
| Debugger | Breakpoints pause the program; step runs one line at a time; watch variables change | Find logic errors: see the exact line where a value goes wrong |
In Thonny, press the bug icon, then Step over (F6) again and again. The Variables panel shows each value change. It's a live trace table.
OCR J277 asks for IDE tools: editors, error diagnostics, run-time environment, translators. AQA 8525 doesn't name the IDE, but expects compilers, interpreters and assemblers.
Common mix-ups
The mistakes nearly everyone makes the first time. Read the left side, then the right.
The operating system is the same as the computer.
It's software running on the hardware. You can wipe Windows and install Linux on the same machine.
Free software means open source.
Open source is about seeing the code. Lots of free apps are proprietary.
An interpreter makes a program file.
Only a compiler makes an executable file. An interpreter translates again every run.
A compiler finds logic errors.
It finds syntax errors (broken grammar). A program that compiles can still give wrong answers.
Defragmenting makes any computer faster.
Only hard disks benefit. On an SSD it does nothing useful and adds wear.
Multitasking means the CPU runs programs at the same time.
Each core runs one at a time. The OS switches so fast it looks simultaneous.
An incremental backup is a complete copy.
It only holds the changes. You need the full backup plus every incremental to restore.
Check yourself
Quick questions first. Then endless practice: a wrong answer shows you the working, step by step.