Problem Solving in Computer Science