Making Programs From Scratch