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=u G, 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.