The purpose of thinking ahead is to make problems easy and intuitive for users to use.
Inputs is data that is required to solve a problem, usually entered through a program by the user.
Outputs is data, that are given by the program once the inputs have been processed.
Three considerations programmers need to do when writing a program Inputs and Outputs is the order of data, the type of data inputted and methods of input and output.
Preconditions are requirements programmers must make before a program must be executed.
Caching is where data such as instructions or values are stored in cache memory after they have been used, as they may be used again
Advantages of reusable programs are that they are more reliable as they have already been tested. It also saves: time, money and resources
Two examples of reusable program components are classes and subroutines.