Fostering Problem Understanding As a Precursor to Problem-Solving in Computer Programming | AMiner