This book, even while a bit old, is the best introduction to error correcting codes that has ever been written. The coverage of important topics is relatively complete and the organization is masterful. The proofs are easy to understand and are rigorous. The exercise sets are well thought out and reinforce the material quite well. What makes this book special is the exceptionally clear exposition. Few books are this easy to read. This is THE book to own if you want to really understand error correcting codes.