This document discusses low-density parity-check (LDPC) codes and their decoding using belief propagation on factor graphs. It introduces LDPC codes and their representation by sparse parity-check matrices and Tanner graphs. It describes irregular and regular LDPC codes, degree distributions, code ensembles, and decoding using belief propagation on factor graphs and the sum-product algorithm. Examples of decoding a LDPC code over a binary-input additive white Gaussian noise channel are also presented.