9 Algorithm Design and Problem Solving