A method of generating low density parity check codes for encoding data includes
constructing a parity check matrix H from balanced incomplete block design (BIBD)
in which a plurality B-sets which define the matrix have no more than one intersection
point. The parity bits are then generated as a function of the constructed parity
check matrix H.