1. A method of encoding data for transmission from a source to a destination over a communications channel, wherein the data is represented at least by a plurality, K, of source symbols, K being the number of source symbols and the source symbols being in an ordered set, the method comprising: generating one or more repair symbols from the plurality of source symbols; transmitting one or more output symbols over the communications channel, wherein the communication channel is a channel that can introduce errors in transmissions, wherein an output symbol corresponds to either a source symbol or a repair symbol; determining a desired degree of accuracy for a regeneration of source symbols; determining, for each of a plurality of source symbols, an associated symbol relation that is a function of a systematic index, J(K), where J(K) is a function of K; determining L intermediate symbol values using a function that takes as its input, at least in part, (1) values of at least some of the K source symbols and (2) the associated symbol relations of those at least some of the K source symbols, and (3) a set of L-K pre-coding relations, wherein L is at least K; and determining a value for each repair symbol using the associated symbol relation for that repair symbol and the plurality of L intermediate symbol values; wherein the encoding is such that the plurality of source symbols can be regenerated to the desired degree of accuracy from a predetermined number, N, of the transmitted output symbols.