Approaches to Algorithm Design — Programming Keynou