The human programmer is still responsible for feeding the data into the model, selecting an appropriate algorithm and tweaking its settings (called hyperparameters) in a bid to reduce prediction error, but ultimately the machine and developer operate a layer apart in contrast to traditional programming.