programs developed to carry out specific tasks or solve particular problems.
enable people, workgroups, and entire enterprises to solve problems and perform specific tasks.
takes data (like a string, or a file's contents) and outputs a hash, a fixed-size string or number.