📁 Topic 4 · 4.5 Software
4.5 Software types and programming languages
Edexcel 4CP0 · iGCSE Computer Science · ~12 min read
Notes

Types of Software

Software is divided into two main categories: system software and application software.

System Software

System software manages and controls the computer hardware, and provides a platform for application software to run. It runs in the background and is not directly used by the end user for productive tasks.

  • Operating system — manages hardware resources, provides UI, handles files and processes
  • Utility programs — maintenance tools: antivirus, disk defragmenter, backup software, compression tools
  • Device drivers — allow the OS to communicate with specific hardware peripherals
  • Compilers and interpreters — translate high-level code into machine code

Application Software

Application software is designed to perform specific tasks directly for the user. Examples include word processors (Microsoft Word), spreadsheets (Excel), web browsers (Chrome), and games.

Levels of Programming Language

Machine Code (Low-level)

Machine code is the only language a CPU can directly execute. It consists entirely of binary (1s and 0s). Machine code is processor-specific — a program written for one CPU architecture will not run on another. It is very fast but extremely difficult for humans to read or write.

Assembly Language (Low-level)

Assembly language uses mnemonics (short readable codes) to represent machine code instructions. E.g. ADD, MOV, LDA. Each mnemonic corresponds to one machine code instruction. A program called an assembler converts assembly language into machine code. Still processor-specific and difficult, but more readable than raw binary.

High-level Languages (High-level)

High-level languages (Python, Java, C++, Visual Basic) use English-like syntax and are designed to be human-readable. They are processor-independent — the same code can run on different hardware. They must be translated into machine code before the CPU can execute them.

Translators: Compiler vs Interpreter

FeatureCompilerInterpreter
How it worksTranslates the entire source code into machine code in one go, producing an executable fileTranslates and executes one line at a time; no separate output file
Speed of executionFaster — executable runs directlySlower — translation happens at runtime
Error reportingAll errors reported at end of compilationStops at first error; easier to debug line by line
PortabilityCompiled file is platform-specificSource code runs on any system with the interpreter
ExamplesC, C++, Java (bytecode)Python, JavaScript (in browser)

High-level vs Low-level Comparison

FeatureHigh-levelLow-level (Assembly/Machine code)
ReadabilityEasy to read and writeDifficult — uses mnemonics or binary
PortabilityPortable across hardwareProcessor-specific
Execution speedSlower (after translation)Faster (closer to hardware)
Memory controlLimitedDirect — used in embedded/real-time systems
Use caseMost programs, apps, websitesDevice drivers, operating systems, embedded systems

Simulation and Modelling Software

Simulation software creates a model of a real-world system so it can be tested or studied without the cost, danger, or time involved in real-life trials.

  • Examples: flight simulators (pilot training), weather forecasting models, vehicle crash-test simulations, nuclear reactor simulators, epidemic spread models
  • Advantages: safe (no physical risk), cheaper than real trials, repeatable, can test scenarios impossible to create in reality
  • Disadvantages: only as good as the underlying model — if assumptions are wrong, results are wrong; complex systems are difficult to model accurately

Assembler: Advantages and Disadvantages

An assembler converts assembly language programs (written with mnemonics) into machine code. Assembly language sits between high-level languages and raw machine code.

Advantages of assembly languageDisadvantages of assembly language
Direct control over hardware and memory registersDifficult to read and write compared to high-level languages
Very fast execution — close to machine code speedProcessor-specific — not portable across different CPU architectures
Useful where hardware resources are very limited (e.g. embedded systems)Time-consuming to develop and maintain
Can optimise critical sections of code for specific hardwareErrors are harder to debug than in high-level code
📝 Exam Tip: Know the key difference between compiler and interpreter: a compiler translates all code at once and produces an executable (fast to run, errors found at compile time); an interpreter translates line by line (easier debugging, slower execution, no separate file).
⚠️ Common Mistakes
  • Saying assembly language is the same as machine code — assembly uses mnemonics; machine code is pure binary
  • Saying high-level code runs faster than low-level — low-level is closer to hardware and runs faster
  • Confusing compiler and interpreter — compilers produce a file; interpreters do not
← 4.4 Logic gates Topic 4 · 4.5 Software Next: Topic 5 →
🔒
Pro Content
Subscribe to access all 47 Edexcel iGCSE lessons.
£7.99/month
or £59/year