Tool-Aided Learning of Code Reasoning with Abstraction in the CS Curriculum