Predictive Programming: Part 1