Algorithms for Algorithms: Teaching Problem-Solving in Computer Science