In this chapter we describe constructive procedures in the form of error detecting, correcting, and decoding codes that are used for encoding messages being transmitted over noisy channels. The goal of such codes is to decode messages with no error rate or the least error rate. Most of these codes involve certain basic iterative procedures for simple error-correcting codes, which are described in detail in the following chapters. During the past half century, coding theory has shown phenomenal growth, with applications in areas such as communication systems, storage technology, compact disc players, and global positioning systems. Before we enter into these developments, we must review some basic digital logic and related rules that are useful for the development of the subject.