Prediction Versus Production For Teaching Computer Programming