The chapter introduces the fundamental problem of communication, which is to reproduce a message at one point either exactly or approximately after it has been transmitted through a noisy channel. It discusses the limitations and possibilities of communication, focusing on error-correcting codes for the binary symmetric channel. The chapter begins by explaining the concept of repetition codes, such as the R3 code, and their decoding process using a majority-vote algorithm. It then introduces block codes, specifically the (7,4) Hamming code, and explains how to encode and decode it. The Hamming code is shown to be more efficient than repetition codes in terms of rate and error probability. The chapter concludes with a discussion of Shannon's noisy-channel coding theorem, which states that reliable communication at any rate beyond the channel's capacity is impossible, while communication at all rates up to the capacity is possible. The chapter also covers the trade-off between the probability of bit error and the rate of communication, and provides examples and exercises to illustrate the concepts.The chapter introduces the fundamental problem of communication, which is to reproduce a message at one point either exactly or approximately after it has been transmitted through a noisy channel. It discusses the limitations and possibilities of communication, focusing on error-correcting codes for the binary symmetric channel. The chapter begins by explaining the concept of repetition codes, such as the R3 code, and their decoding process using a majority-vote algorithm. It then introduces block codes, specifically the (7,4) Hamming code, and explains how to encode and decode it. The Hamming code is shown to be more efficient than repetition codes in terms of rate and error probability. The chapter concludes with a discussion of Shannon's noisy-channel coding theorem, which states that reliable communication at any rate beyond the channel's capacity is impossible, while communication at all rates up to the capacity is possible. The chapter also covers the trade-off between the probability of bit error and the rate of communication, and provides examples and exercises to illustrate the concepts.