An apprentice-based approach to learning problem-solving knowledge