Error detecting codes are very popular for error control in practical systems for two reasons. First, such codes can be used to provide any desired reliability of communication over any noisy channel. Second, implementation is usually much simpler than for a system using error correcting codes. To consider a particular code for use in such a system, it is very important to be able to calculate or estimate the probability of undetected error. For the binary symmetric channel, the probability of undetected error can be expressed in terms of the weight distribution of the code. The first part of the book gives a detailed description of all known methods to calculate or estimate the probability of undetected error, for the binary symmetric channel in particular, but a number of other channel models are also considered. The second part of the book describes a number of protocols for feedback communication systems (ARQ systems), with methods for optimal choice of error detecting codes for the protocols. Results have been collected from many sources and given a unified presentation. The results are presented in a form which make them accessible to the telecommunication system designer as well as the coding theory researcher and student. The system designer may find the presentation of CRC codes as well as the system performance analysis techniques particularly useful. The coding theorist will find a detailed account of a part of coding theory which is usually just mentioned in most text books and which contains a number of interesting and useful results as well as many challenging open problems. Audience: Essential for students, practitioners and researchers working in communications and coding theory. An excellent text for an advanced course on the subject.