Systems programming is the activity of programing system software. The primary distinguishing characteristic of systems programming when compared to application programming is that application programming aims to produce software which provides services to the user, whereas systems programming aims to produce software which provides services to the computer hardware. Systems programming requires greater levels of hardware awareness.