2.1.2a Identify the inputs and outputs for a given situation
2.1.2b Determine the preconditions for devising a solution to a problem
2.1.2c The nature, benefits and drawbacks of caching
2.1.2d The need for reusable program components