A method and apparatus for constructing long error-correcting codes from one or more shorter error-correcting codes, referred to as subcodes, and a bipartite graph. The graph specifies carefully chosen subsets of the digits of the new codes that must be codewords in one of the shorter subcodes. Lower bounds on the rate and the minimum distance of the new code are derived in terms of the parameters of the graph and the subcodes. Both the encoders and decoders employed take advantage of the code's explicit decomposition into subcodes to decompose and simplify the associated computational processes. Bounds on the performance of two specific decoding algorithms are established, and the asymptotic growth of the complexity of decoding for two types of codes and decoders is analyzed. The decoders are able to make effective use of probabilistic information supplied by the channel receiver, such as reliability information, without greatly increasing the number of computations required. By a chosen transmission order for the digits that is appropriate for the graph and the subcodes, the code has excellent burst-error correction abilities.