fleshing out learning to program