Trace-based teaching in early programming courses