Software programs tell computers what tasks to perform and how to perform them. There are two main types of software: system software which helps computers run properly, and application software for specific tasks like writing or graphics. System software includes operating systems like Windows and Mac OS, which allow hardware devices to communicate, and utility programs for maintenance. Application software is grouped into categories for productivity, graphics, communication, and home/education/entertainment. Software can either be custom designed for a specific user or purchased off-the-shelf.