A set of programs, procedures, algorithms and its documentation (lol). In order to write software, we use programming languages which operate at different levels
They represent computational instructions as a language, with its own syntactic and semantic rules. They often come with their own methods to allow different ways to express the computation and have safeguards like memory management, error handling etc.
Memory is a key aspect of the hardware, and along with the processor, largely decides the computational power of the system.
When we boot up a computer system, we must first run the bootstrap