key elements of algorithm design: sequencing, decision-making, repetition and representation including the use of pseudocode.