A computer system is made up of hardware and software:
Software is translated into machine code for the hardware to understand. Software types are in a hierarchy of their position in relation to the hardware.
Firmware is a program embedded onto a hardware device. All hardware components in a computer have firmware. Firmware is usually coded into a hardware device when it is created in a factory. The user of the computer does not usually interact with the firmware directly. A typical example of firmware is the BIOS program written into the ROM of a computer. The BIOS runs when a system starts up before the operating system starts.
An operating system (OS) is a platform that gives the user an interface to the hardware. The OS uses device drivers to communicate with the firmware. The OS provides a user-friendly interface and performs basic tasks such as controlling and allocating memory, controlling the execution of software applications, controlling peripherals, networking, and managing files.
Software applications - also called an application or 'app' - is not essential for the basic function of the computer. Examples include games, word processors and web browsers. Programming environments are a type of software application used to write code and create programs.