A class of algorithms which enables a computer to learn as it goes, thereby accomplishing its goal without being explicitly programmed to do so.