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 Quasi-Cyclic Low Density Parity Check Code to implement a parity check matrix H, 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: defining said selected Quasi-Cyclic Low Density Parity Check Code C qc as the null space of a parity check matrix H qc , which is a c×t array of b×b circulants over the binary Galois field GF(2) of the form given by: H qc = [ A 1 , 1 A 1 , 2 … A 1 , t A 2 , 1 A 2 , 2 … A 2 , t ⋮ ⋮ ⋱ ⋮ A c , 1 A c , 2 … A c , t ] ; choosing any sequence of m distinct pairs of positive integers, (c i , t i ), with 1≦i≦m, such that 1≦c 1 ≦c 2 ≦. .. ≦c m ≦c, and 1≦t 1 ≦t 2 ≦. .. ≦t m ≦t; let H qc (c i , t i ) be the c i ×t i subarray of the array H qc of circulants of said selected Quasi-Cyclic Low Density Parity Check Code obtained by deleting the last t−t i columns and the last c−c i rows of b×b circulant matrices; and let C(c i , t i ) be the null space of the matrix H qc (c i , t i ) for each of said sequence of m distinct pairs of positive integers, forming a member of said structurally compatible family C qc , C(c i , t i ),. .. , C(c m , t m ) of codes for each of said sequence of m distinct pairs of positive integers.