A method implemented in a computing apparatus, the method comprising: partitioning , by the computing apparatus, a data segment into a number of original data packets ; predicting, by the computing apparatus, a quality for each of a plurality of network paths to be used to transmit communication packets to a receiver, wherein the communication packets include first systematic packets, and the communication packets further include first coded packets to be generated from the original data packets using a coding technique; determining, by the computing apparatus, a total number of communication packets to transmit for each respective path based on the quality predicted for the respective path; generating, by the computing apparatus, a plurality of first communication packets using the coding technique, the first communication packets to be transmitted via the plurality of network paths; and transmitting, by the computing apparatus, the first communication packets to the receiver, wherein the first communication packets are distributed among the plurality of network paths based on the total number determined for each respective path, wherein the total number of communication packets K(n) to transmit for each respective path n is determined by: assuming N' paths having a shortest single-trip-time STT(n), defining a download time for path n as T(n) = STT(n) + K(n)/BWP(n), where BWP(n) is the bandwidth of path n in terms of packets per second, solving equation T =T =...T(N') under the constraint that the sum of all K(n) allow decoding of the data segment, finding N' and the corresponding set of K(n) which minimizes the download time T(n). partitioning , by the computing apparatus, a data segment into a number of original data packets ; predicting, by the computing apparatus, a quality for each of a plurality of network paths to be used to transmit communication packets to a receiver, wherein the communication packets include first systematic packets, and the communication packets further include first coded packets to be generated from the original data packets using a coding technique; determining, by the computing apparatus, a total number of communication packets to transmit for each respective path based on the quality predicted for the respective path; generating, by the computing apparatus, a plurality of first communication packets using the coding technique, the first communication packets to be transmitted via the plurality of network paths; and transmitting, by the computing apparatus, the first communication packets to the receiver, wherein the first communication packets are distributed among the plurality of network paths based on the total number determined for each respective path, wherein the total number of communication packets K(n) to transmit for each respective path n is determined by: assuming N' paths having a shortest single-trip-time STT(n), defining a download time for path n as T(n) = STT(n) + K(n)/BWP(n), where BWP(n) is the bandwidth of path n in terms of packets per second, solving equation T =T =...T(N') under the constraint that the sum of all K(n) allow decoding of the data segment, finding N' and the corresponding set of K(n) which minimizes the download time T(n). assuming N' paths having a shortest single-trip-time STT(n), defining a download time for path n as T(n) = STT(n) + K(n)/BWP(n), where BWP(n) is the bandwidth of path n in terms of packets per second, solving equation T =T =...T(N') under the constraint that the sum of all K(n) allow decoding of the data segment, finding N' and the corresponding set of K(n) which minimizes the download time T(n). <EOS>