1. A method for providing forward error-correction coding for data that is transmitted from a source to a destination over a communication medium, comprising: encoding message blocks, u, of said data to codewords, v, as follows: v=uG, where G is a generator matrix; and using a parity check matrix H to implement a Quasi-Cyclic Low Density Parity Check Code, such that every vector in the row space of the generator matrix G is orthogonal to the rows of parity check matrix H, and parity check matrix H is given as an array of sparse circulant matrices of the same size, comprising: selecting the parity check matrix H to have constant row and column weights, the number of “1s” in common between any two columns is no greater than one, and the parity check matrix H has a small density of “1s.”