a)
unambigious: algorithms should be clear and concise, inputs and outputs should be clear and all steps of the procedure explicit
independent: the algorithm should have a step by step instructions and be independent of any programming language
b)
loop: allows a set of instructions to repeat when a condition is met
instructions: an algorithm consists a series of sub algorithms
although natural language is easily understood by both developers and non coders, natural language tend to be ambigious and lack clarity so flowchart is a good alternative method