In a data decoder for decoding data from received symbols received over a channel from an
encoder, wherein the received data can include erasures and include source symbols and repair symbols and wherein the decoder uses in decoding a
generator matrix, any square submatrix of which is invertible, such that the decoder can perform decoding operations concurrently with the arrival of the source symbols and repair symbols, a method of decoding comprising representing in decoder memory a
system of equations derived, at least in part, from the
generator matrix, substituting received source symbols into the
system of equations as the source symbols are received before receiving all source symbols, identifying, using decoder logic, repair equations to be used for solving the
system of equations as repair symbols arrive, calculating, using decoder logic, vector values for equations as source symbols arrive, and converting the system of equations into an upper
triangular form as repair symbols arrive at the decoder. Novel methods can be used for
interleaving and specifying encoding structure for a large class of FEC codes, scheduling the sending of packets and the like.