The scientific study of algorithms and statistical models that computer systems use to progressively improve their performance on a specific task.