(a)

Explain and justify the structure of the solution.

(b)

Describe the parts of the solution using algorithms, justifying how the algorithms form a complete solution to the problem.

(c)

Describe usability features to be included in the solution.

(d)

Identify key variables/data structures/classes, justifying choices and any necessary validation.