This document discusses the design and implementation of low density parity check (LDPC) codes. It begins with an introduction to LDPC codes, including their representation using parity check matrices and Tanner graphs. It then describes encoding and decoding algorithms for LDPC codes, focusing on belief propagation and message passing algorithms for decoding. Specifically, it covers hard decision decoding, soft decision decoding, and how LDPC codes can detect and correct errors. The document also discusses the construction of LDPC codes, mentioning methods proposed by Gallager, McKay and Neal, and for repeat accumulation codes.