A sequence of instructions for converting input to output
It is a computational procedure that converts a set of input values to a set of output values
Solving probelms: sorting, optimising, searching, anaylsing data
Flexible, Robust, Efficient, Easy to understand, Correct, Compact, Low energy consumption, Simple mathematical form
Observe Hypothesise Predict Verify Validate
Experiments must be reproducible
Hypothesise should be falsifiable