System programming involves creating system software that provides services to computer hardware rather than users. It requires an awareness of hardware. The document discusses types of system software like operating systems, utility programs, and database management systems. It also discusses types of application software like spreadsheets and presentation programs. The evolution of system programming components is explained, including assemblers that translate assembly language into machine code, and loaders that load programs into memory for execution.