How does compression work? Basically, all compression programs look for common substrings in a file (we will deal only with bitstrings here, since that's how computers store their data, so a file will be viewed as nothing more than a sequence of bits). [Insert stuff about run-length encoding here, to introduce the concepts.] [Then discuss variable-length encoding here, and close with the problem of how to find the most efficient alphabet given frequency statistics. Lead into Huffman encoding from that question.] [Then talk about other methods, normally used in addition to Huffman encoding.] The question naturally arises: for a given file, is there a minimum size to which it can be compressed? The answer has to by "Yes", because certainly no file (of size greater than one bit) can be compressed into a single bit, right? No practical compression method actually reaches the theoretical limit, however, because doing so involves very lengthy computations. In essence, you'd have to do this: [What the hell *would* you have to do, anyway?] Here are some methods commonly used to approach this limit without taking forever to compress the file: [Here they are, come and get 'em...]