Problem Solving With Algorithms And Data