This book is well written and a fun read. It is best read by someone with a fair amount of background in information theory or the theory of computation; however, such a background is not required. Several examples of problems not typically associated with information theory are considered and analyzed.