Fundamentals of Codes, Graphs, and Iterative Decoding contains need-to-know information for both professionals and academicians working in the field of communications. Fifty years of learning how to design good codes can now be reduced to a single sentence: Good codes have a high degree of local connectivity, but must have simple structural descriptions to facilitate iterative decoding. Fundamentals of Codes, Graphs, and Iterative Decoding is an explanation of how to introduce local connectivity, and how to exploit simple structural descriptions. Chapter 1 provides an overview of Shannon theory and the basic tools of complexity theory, communication theory, and bounds on code construction. Chapters 2 - 4 provide an overview of "classical" error control coding, with an introduction to abstract algebra, and block and convolutional codes. Chapters 5 - 9 then proceed to systematically develop the key research results of the 1990s and early 2000s with an introduction to graph theory, followed by chapters on algorithms on graphs, turbo error control, low density parity check codes, and low density generator codes. Fundamentals of Codes, Graphs, and Iterative Decoding is intended as a synthesis of recent research results with a recognition of where these results fit into the bigger picture of error control coding. Containing hundreds of theorems, proofs, and definitions, Fundamentals of Codes, Graphs, and Iterative Decoding is suitable for a graduate-level course in communications, as well as for a professional reference.