{
 "id": "eptrwfh408",
 "slug": "error-correction-code",
 "title": "Error correction code",
 "updated": "2026-09-30",
 "topic_path": [
  {
   "id": "technology",
   "label": "Technology and the built world",
   "api_url": "https://www.edgepedia.org/api/v1/topics/technology"
  },
  {
   "id": "technology.computing",
   "label": "Computing and digital systems",
   "api_url": "https://www.edgepedia.org/api/v1/topics/technology.computing"
  },
  {
   "id": "technology.computing.ai",
   "label": "Artificial intelligence and data",
   "api_url": "https://www.edgepedia.org/api/v1/topics/technology.computing.ai"
  },
  {
   "id": "technology.computing.ai.algorithms",
   "label": "Algorithms and computational methods",
   "api_url": "https://www.edgepedia.org/api/v1/topics/technology.computing.ai.algorithms"
  }
 ],
 "geo": [
  {
   "id": "geo.nongeo.t1946.technology.computing.ai.algorithms",
   "label": "Non-geographic · 1946 to 2000: Algorithms and computational methods",
   "api_url": "https://www.edgepedia.org/api/v1/geo/geo.nongeo.t1946.technology.computing.ai.algorithms",
   "path": [
    {
     "id": "geo.nongeo",
     "label": "Non-geographic",
     "api_url": "https://www.edgepedia.org/api/v1/geo/geo.nongeo"
    },
    {
     "id": "geo.nongeo.t1946",
     "label": "Non-geographic · 1946 to 2000",
     "api_url": "https://www.edgepedia.org/api/v1/geo/geo.nongeo.t1946"
    },
    {
     "id": "geo.nongeo.t1946.technology",
     "label": "Technology and the built world",
     "api_url": "https://www.edgepedia.org/api/v1/geo/geo.nongeo.t1946.technology"
    },
    {
     "id": "geo.nongeo.t1946.technology.computing",
     "label": "Computing and digital systems",
     "api_url": "https://www.edgepedia.org/api/v1/geo/geo.nongeo.t1946.technology.computing"
    },
    {
     "id": "geo.nongeo.t1946.technology.computing.ai",
     "label": "Artificial intelligence and data",
     "api_url": "https://www.edgepedia.org/api/v1/geo/geo.nongeo.t1946.technology.computing.ai"
    },
    {
     "id": "geo.nongeo.t1946.technology.computing.ai.algorithms",
     "label": "Algorithms and computational methods",
     "api_url": "https://www.edgepedia.org/api/v1/geo/geo.nongeo.t1946.technology.computing.ai.algorithms"
    }
   ]
  }
 ],
 "excerpt": "An error correction code (ECC) is a method that adds redundancy to data so errors from storage or transmission are detected and corrected without retransmission.",
 "snippet": "An error correction code (ECC) is a method that adds redundancy to data so errors from storage or transmission are detected and corrected without retransmission.",
 "node": "technology.computing.ai.algorithms",
 "markdown": "# Error correction code\n\nAn error correction code (ECC) is a method that adds structured redundancy to data so that errors introduced during storage or transmission can be detected and, within limits, corrected automatically. An encoder converts a k-bit message into a longer n-bit codeword; a decoder at the receiving end produces its best estimate of the original message, reducing the bit error rate delivered to the user.<sup>[1](https://web.mit.edu/6.02/www/s2012/handouts/5.pdf)</sup> Error *detection* only flags that something is wrong, typically with a separate code such as a CRC; error *correction* reconstructs the data without retransmission.<sup>[2](https://web.mit.edu/6.02/www/s2012/handouts/6.pdf)</sup> ECCs operate at the physical layer of communication systems and inside storage devices, from DRAM and optical discs to 5G radios and quantum processors.<sup>[3](https://www.cs.princeton.edu/courses/archive/spring18/cos461/lectures/L08-error-control.pdf)</sup>\n\n| Key fact | Value |\n|---|---|\n| Code rate | \\( R = k/n \\), message bits over transmitted bits; high rate means less overhead but weaker correction<sup>[3](https://www.cs.princeton.edu/courses/archive/spring18/cos461/lectures/L08-error-control.pdf)</sup> |\n| Guaranteed correction | A code with minimum distance \\( d \\) detects up to \\( d-1 \\) errors and corrects up to \\( \\lfloor (d-1)/2 \\rfloor \\)<sup>[4](https://web.mat.upc.edu/sebastia.xambo/CC/cc.pdf)</sup> |\n| Parity-bit growth | Single-error correction of an \\( n \\)-bit codeword carrying \\( k \\) message bits needs \\( n+1 \\le 2^{n-k} \\), so parity grows at least logarithmically<sup>[1](https://web.mit.edu/6.02/www/s2012/handouts/5.pdf)</sup> |\n| Soft-decision gain | Soft-decision decoding improves performance by 2 to 3 dB over hard decision; modern forward error correction systems use both hard-decision and soft-decision decoding<sup>[5](https://arxiv.org/pdf/2502.11053)</sup><sup> • </sup><sup>[32](https://www.gnuradio.org/doc/doxygen/page_fec.html)</sup> |\n| Shannon limit (BSC) | \\( C = 1 + p\\log_{2}(p) + (1-p)\\log_{2}(1-p) \\) for bit-error rate \\( p \\)<sup>[4](https://web.mat.upc.edu/sebastia.xambo/CC/cc.pdf)</sup> |\n| 5G assignment | LDPC codes on data channels (PDSCH, PUSCH), polar codes on control channels<sup>[6](https://arxiv.org/html/2405.07547v1)</sup> |\n| Nearness to capacity | Turbo codes, proposed in 1993, were the first schemes practically demonstrated to approach the Shannon limit with moderate decoding complexity<sup>[7](https://ar5iv.labs.arxiv.org/html/1504.03916)</sup> |\n\n## How it works\n\nTwo ideas underlie every error-correcting code. The first is geometric embedding: valid codewords are placed far apart in the space of possible received words, so a corrupted word sits closest to the codeword it came from. The [Hamming distance](https://www.edgepedia.org/hamming-distance) \\( d_{H}(x,y) \\) counts the positions in which two words differ; if the minimum distance between codewords is at least 3, any single error leaves the received word nearer the correct codeword than any other, so the error is correctable.<sup>[8](http://vtda.org/pubs/BSTJ/vol29-1950/articles/bstj29-2-147.pdf)</sup> The second idea is the parity calculation, which embeds information about the data into check bits cheaply.<sup>[1](https://web.mit.edu/6.02/www/s2012/handouts/5.pdf)</sup>\n\nThe guarantees follow from distance. A code with minimum distance \\( d \\) detects any error pattern of \\( d-1 \\) or fewer errors, and some pattern of \\( d \\) errors will go undetected; it corrects all patterns of up to \\( \\lfloor (d-1)/2 \\rfloor \\) errors, because the Hamming balls of that radius around codewords do not intersect.<sup>[1](https://web.mit.edu/6.02/www/s2012/handouts/5.pdf)</sup><sup> • </sup><sup>[9](http://www.math.clemson.edu/~keyj/Key/applicN.pdf)</sup><sup> • </sup><sup>[10](https://faculty.coe.drexel.edu/jwalsh/eces421/ecc1.pdf)</sup> The code rate \\( R = k/n \\) sets the trade-off: high-rate codes correct fewer errors with less overhead, low-rate codes the reverse.<sup>[3](https://www.cs.princeton.edu/courses/archive/spring18/cos461/lectures/L08-error-control.pdf)</sup>\n\nThe ceiling on what any code can achieve is Shannon's capacity. For a binary symmetric channel with bit-error rate \\( p \\), capacity is \\( C = 1 + p\\log_{2}(p) + (1-p)\\log_{2}(1-p) \\), which falls from 1 at \\( p=0 \\) to 0 at \\( p=1/2 \\).<sup>[4](https://web.mat.upc.edu/sebastia.xambo/CC/cc.pdf)</sup> Shannon's 1948 noisy-channel theorem proves that for any rate \\( R < C \\) and any \\( \\varepsilon > 0 \\) codes exist with error probability below \\( \\varepsilon \\), though his argument shows existence without giving explicit codes or decoders.<sup>[11](https://academicweb.nd.edu/~powers/ame.20231/shannon1948a.pdf)</sup><sup> • </sup><sup>[4](https://web.mat.upc.edu/sebastia.xambo/CC/cc.pdf)</sup>\n\n## How it is done\n\nA linear block code is a vector subspace of \\( \\mathbb{F}_q^{\\,n} \\) of dimension \\( k \\). Encoding is a matrix product: the message \\( D \\) (\\( k \\times 1 \\)) times the generator matrix \\( G \\) (\\( k \\times n \\)) gives the codeword \\( C \\), costing \\( O(nk) \\) operations in systematic form.<sup>[2](https://web.mit.edu/6.02/www/s2012/handouts/6.pdf)</sup> The same code can be described by a parity-check matrix \\( H \\) whose right kernel is the code; the syndrome of a received word y is \\( S(y) = H \\cdot y^{T} \\). Because a codeword \\( c \\) satisfies \\( H \\cdot c^{T} = 0 \\), a received word \\( y = c + e \\) has syndrome \\( S(y) = S(e) \\), depending only on the error.<sup>[12](https://www.lix.polytechnique.fr/~alain.couvreur/doc_ens/lecture_notes.pdf)</sup>\n\nSyndrome decoding then proceeds in two stages: precompute a table mapping syndromes to error patterns of weight at most \\( (d-1)/2 \\), then for each received word compute \\( H \\cdot y^{T} \\), look up the error pattern, and subtract it.<sup>[12](https://www.lix.polytechnique.fr/~alain.couvreur/doc_ens/lecture_notes.pdf)</sup><sup> • </sup><sup>[2](https://web.mit.edu/6.02/www/s2012/handouts/6.pdf)</sup> For the (7,4) [Hamming code](https://www.edgepedia.org/hamming-code) the three syndrome equations are \\( E_{1} = (d_{1} + d_{2} + d_{4} + p_{1}) \\bmod 2 \\), \\( E_{2} = (d_{1} + d_{3} + d_{4} + p_{2}) \\bmod 2 \\), and \\( E_{3} = (d_{2} + d_{3} + d_{4} + p_{3}) \\bmod 2 \\); reading \\( E_{3}E_{2}E_{1} \\) as a binary number gives the index of the bit to flip.<sup>[1](https://web.mit.edu/6.02/www/s2012/handouts/5.pdf)</sup>\n\nDecoders divide into hard-decision and soft-decision types. Hard-decision decoders work from received bits alone (Hamming, cyclic, Reed–Solomon codes); soft-decision decoders use channel likelihoods (convolutional, turbo, LDPC codes) and gain 2 to 3 dB.<sup>[10](https://faculty.coe.drexel.edu/jwalsh/eces421/ecc1.pdf)</sup><sup> • </sup><sup>[5](https://arxiv.org/pdf/2502.11053)</sup> Maximum-likelihood decoding is prohibitive in cost for long codes; LDPC codes instead use iterative message-passing decoders such as the sum-product (belief propagation) algorithm, with complexity \\( O(n) \\) per iteration, far below ML or MAP decoding.<sup>[13](https://www.jstage.jst.go.jp/article/transcom/E105.B/8/E105.B_2021EBI0001/_pdf/-char/ja)</sup>\n\n## Origin\n\nThe field rests on two Bell System Technical Journal papers. The paper also contains an efficient single-error-correcting code for a block-of-seven channel, the (7,4) code.<sup>[14](https://doi.org/10.1002/j.1538-7305.1948.tb01338.x)</sup> The systematic treatment defined redundancy and constructed single-error-correcting and SEC-DED codes.<sup>[15](https://doi.org/10.1002/j.1538-7305.1950.tb00463.x)</sup>\n\nThe modern near-capacity codes came later. Reed and Solomon introduced their polynomial-evaluation codes over finite fields in 1960.<sup>[16](https://doi.org/10.1137/0108018)</sup> Gallager's monograph *Low-Density Parity-Check Codes* ([MIT Press](https://www.edgepedia.org/mit-press), 1963), an expanded version of his 1960 MIT doctoral dissertation, introduced LDPC codes with sparse parity-check matrices,<sup>[17](https://doi.org/10.7551/mitpress/4347.001.0001)</sup> and Tanner's 1981 recursive approach to low-complexity codes introduced the Tanner graph.<sup>[18](https://doi.org/10.1109/tit.1981.1056404)</sup> Hsiao's 1970 IBM Journal paper defined the optimal minimum odd-weight-column SEC-DED codes used in semiconductor memory.<sup>[19](https://doi.org/10.1147/rd.144.0395)</sup> In 1993 Claude Berrou and co-authors presented turbo codes, a leap in performance over general channels. MacKay and Neal's 1997 Electronics Letters paper showed LDPC codes also perform near the Shannon limit, giving the field a second birth.<sup>[20](https://doi.org/10.1049/el:19970362)</sup> Arikan's 2009 IEEE Transactions on Information Theory paper introduced polar codes, the first provably capacity-achieving construction for symmetric binary-input memoryless channels,<sup>[21](https://doi.org/10.1109/tit.2009.2021379)</sup> and Tal and Vardy's 2012 list-decoding paper made them practical.<sup>[22](https://doi.org/10.48550/arxiv.1206.0050)</sup>\n\n## Variants\n\n**Block codes** encode fixed-length messages independently. The single-parity code has parameters \\( [n, n-1, 2] \\): it detects one error and corrects none.<sup>[12](https://www.lix.polytechnique.fr/~alain.couvreur/doc_ens/lecture_notes.pdf)</sup> Hamming codes are defined by an \\( \\ell \\times (2^{\\ell}-1) \\) parity-check matrix whose columns are all nonzero words of \\( \\mathbb{F}_2^{\\ell} \\); they have minimum distance exactly 3, are perfect, and correct one error, with rate \\( k/n = (2^{r}-1-r)/(2^{r}-1) \\) approaching 1 as length grows.<sup>[12](https://www.lix.polytechnique.fr/~alain.couvreur/doc_ens/lecture_notes.pdf)</sup><sup> • </sup><sup>[23](https://johnkerl.org/doc/kerl-ecc-intro.pdf)</sup> Reed–Solomon codes are \\( [n, k, n-k+1] \\) codes over \\( \\mathbb{F}_q \\) built from polynomial evaluation; their distance saturates the [Singleton bound](https://www.edgepedia.org/singleton-bound), making them maximum distance separable, and efficient algebraic decoders such as Berlekamp–Massey run in \\( O(n^{2}) \\).<sup>[24](https://errorcorrectionzoo.org/c/reed_solomon)</sup><sup> • </sup><sup>[10](https://faculty.coe.drexel.edu/jwalsh/eces421/ecc1.pdf)</sup>\n\n**Iterative codes.** Turbo codes are parallel concatenations of two convolutional encoders decoded iteratively; LDPC codes are built from repetition and single-parity-check components, with sparse parity-check matrices whose minimum distance grows linearly with block length.<sup>[13](https://www.jstage.jst.go.jp/article/transcom/E105.B/8/E105.B_2021EBI0001/_pdf/-char/ja)</sup><sup> • </sup><sup>[7](https://ar5iv.labs.arxiv.org/html/1504.03916)</sup> [Polar codes](https://www.edgepedia.org/polar-codes) achieve capacity with \\( O(N \\log N) \\) encoding and decoding, with frame error probability falling roughly as \\( e^{-\\sqrt{N}} \\) for fixed rate below capacity.<sup>[7](https://ar5iv.labs.arxiv.org/html/1504.03916)</sup>\n\n**Quantum codes** protect qubits. The 9-qubit code and the 7-qubit construction were early quantum error-correcting codes; CSS codes build quantum codes from pairs of classical codes, and the simplest CSS code is the \\( [[7,1,3]] \\) code based on the \\( [7,4,3] \\) Hamming code.<sup>[25](https://users.physics.ox.ac.uk/~Steane/pubs/Steane_2006.pdf)</sup>\n\n## Applications\n\n**Memory and storage.** Hamming codes are widely used where single-error correction must be fast, such as correcting memory errors when fetching data from DRAM.<sup>[1](https://web.mit.edu/6.02/www/s2012/handouts/5.pdf)</sup> Semiconductor memory designs use SEC-DED codes, including Hsiao's optimal minimum odd-weight-column codes, with check-bit requirements tabulated for common data lengths.<sup>[26](https://dl.acm.org/doi/10.1147/rd.282.0124)</sup><sup> • </sup><sup>[19](https://doi.org/10.1147/rd.144.0395)</sup> Reed–Solomon codes appear in DVDs, DSL, RAID 6 over \\( q = 2^{m} \\), QR codes, and DNA storage.<sup>[24](https://errorcorrectionzoo.org/c/reed_solomon)</sup>\n\n**Communications.** LDPC codes have been adopted in IEEE 802.11n Wi-Fi, DVB-S2/T2/C2 broadcasting, 10GBase-T Ethernet, WiMAX, CCSDS, and 5G New Radio.<sup>[13](https://www.jstage.jst.go.jp/article/transcom/E105.B/8/E105.B_2021EBI0001/_pdf/-char/ja)</sup> In 5G NR, LDPC codes on shared data channels replace 4G turbo codes and polar codes on control channels replace tail-biting convolutional codes.<sup>[6](https://arxiv.org/html/2405.07547v1)</sup> Reed–Solomon codes concatenated with convolutional codes served as outer codes in the Voyager and Galileo space programs under CCSDS telemetry standards.<sup>[24](https://errorcorrectionzoo.org/c/reed_solomon)</sup> [Quantum error correction](https://www.edgepedia.org/quantum-error-correction), from the Shor and Steane codes onward, underpins fault-tolerant quantum computing.<sup>[25](https://users.physics.ox.ac.uk/~Steane/pubs/Steane_2006.pdf)</sup>\n\n## Limitations and alternatives\n\nA code's guarantees end at its minimum distance. Hamming codes work properly only if at most one error occurs per block; heavier patterns are miscorrected or missed.<sup>[27](https://www2.math.upenn.edu/~kazdan/312F12/JJ/ECC.pdf)</sup> For a linear block code, the only undetectable error patterns are those that are themselves codewords, so an undetected error occurs whenever a corrupted word remains valid.<sup>[10](https://faculty.coe.drexel.edu/jwalsh/eces421/ecc1.pdf)</sup><sup> • </sup><sup>[28](https://www.faa.gov/sites/faa.gov/files/air_cert/design_approvals/air_software/TC-14-49.pdf)</sup> A single parity bit detects only odd numbers of errors: for a 100,000-bit message at bit error probability \\( 10^{-6} \\), 0.50% of messages carry undetected even errors falsely reported as correct.<sup>[29](https://pages.cs.wisc.edu/~remzi/OSTEP/Citations/checksums-03.pdf)</sup> Iterative decoders show a waterfall region where error probability drops sharply and an error floor where it decreases slowly; 5G NR LDPC codes have an error floor around or below \\( 10^{-5} \\) BLER.<sup>[13](https://www.jstage.jst.go.jp/article/transcom/E105.B/8/E105.B_2021EBI0001/_pdf/-char/ja)</sup> FEC also delivers a decoded word even when it is wrong, and because decoding error is far more likely than undetected error, high reliability with FEC alone demands long, expensive-to-decode codes.<sup>[30](https://people.computing.clemson.edu/~jmarty/papers/july2024/996-2-Automatic-repeat-request_error-control_schemes.pdf)</sup>\n\n**Detection-only alternatives** cost far less: a CRC uses typically 16 to 32 bits on a 1,500-byte frame, detects all burst errors of length up to \\( g-1 \\) under conditions on its generator polynomial, and is implemented in hardware in Ethernet, Wi-Fi, and many other link layers. CRCs are cryptographically weak and should not be used for authentication.<sup>[3](https://www.cs.princeton.edu/courses/archive/spring18/cos461/lectures/L08-error-control.pdf)</sup><sup> • </sup><sup>[29](https://pages.cs.wisc.edu/~remzi/OSTEP/Citations/checksums-03.pdf)</sup> Checksums are weaker still: a longitudinal redundancy check has Hamming distance 2 with a 3.125% undetected error fraction for 32-bit chunks, and the Fletcher checksum reaches distance 3.<sup>[28](https://www.faa.gov/sites/faa.gov/files/air_cert/design_approvals/air_software/TC-14-49.pdf)</sup>\n\n**Retransmission** trades latency for reliability. ARQ is often preferred in packet networks, but its throughput deteriorates rapidly as channel error rate rises, a problem worsened by long round-trip delay on satellite channels; FEC is the only choice where no feedback channel exists.<sup>[30](https://people.computing.clemson.edu/~jmarty/papers/july2024/996-2-Automatic-repeat-request_error-control_schemes.pdf)</sup> Hybrid ARQ combines the two: the FEC subsystem corrects frequent error patterns while detected uncorrectable patterns trigger retransmission, and type-II hybrid ARQ is more energy efficient than both ARQ and FEC alone.<sup>[30](https://people.computing.clemson.edu/~jmarty/papers/july2024/996-2-Automatic-repeat-request_error-control_schemes.pdf)</sup><sup> • </sup><sup>[31](https://digitalcommons.unl.edu/cgi/viewcontent.cgi?article=1097&context=csearticles)</sup>\n\n## References\n\n1. [Coping with Bit Errors using Error Correction Codes (MIT 6.02 course notes; same chapter as MIT OCW 6.02F12 chap05)](https://web.mit.edu/6.02/www/s2012/handouts/5.pdf)\n2. [6 Linear Block Codes: Encoding and Syndrome Decoding (MIT 6.02 Notes)](https://web.mit.edu/6.02/www/s2012/handouts/6.pdf)\n3. [Detecting and Correcting Bit Errors (Princeton COS461 lecture)](https://www.cs.princeton.edu/courses/archive/spring18/cos461/lectures/L08-error-control.pdf)\n4. [A computational primer on block error-correcting codes (Xambó-Descamps)](https://web.mat.upc.edu/sebastia.xambo/CC/cc.pdf)\n5. [Understanding 5G NR channel coding: LDPC and polar codes](https://arxiv.org/pdf/2502.11053)\n6. [Channel Coding Toward 6G: Technical Overview and Outlook](https://arxiv.org/html/2405.07547v1)\n7. [Challenges and some new directions in channel coding](https://ar5iv.labs.arxiv.org/html/1504.03916)\n8. [Error Detecting and Error Correcting Codes (R. W. Hamming, Bell System Technical Journal, 1950)](http://vtda.org/pubs/BSTJ/vol29-1950/articles/bstj29-2-147.pdf)\n9. [Applications of error-correcting codes (computer memories, spacecraft photographs, compact discs)](http://www.math.clemson.edu/~keyj/Key/applicN.pdf)\n10. [Forward Error Correction, Error Detection, & H-ARQ (Drexel ECES-421 lecture notes)](https://faculty.coe.drexel.edu/jwalsh/eces421/ecc1.pdf)\n11. [A Mathematical Theory of Communication (C. E. Shannon, Bell System Technical Journal, 1948)](https://academicweb.nd.edu/~powers/ame.20231/shannon1948a.pdf)\n12. [Introduction to Coding Theory (A. Couvreur, lecture notes)](https://www.lix.polytechnique.fr/~alain.couvreur/doc_ens/lecture_notes.pdf)\n13. [LDPC Codes for Communication Systems: Coding Theoretic Perspective](https://www.jstage.jst.go.jp/article/transcom/E105.B/8/E105.B_2021EBI0001/_pdf/-char/ja)\n14. [C. E. Shannon (1948). A Mathematical Theory of Communication. Bell System Technical Journal.](https://doi.org/10.1002/j.1538-7305.1948.tb01338.x)\n15. [R. W. Hamming (1950). Error Detecting and Error Correcting Codes. Bell System Technical Journal.](https://doi.org/10.1002/j.1538-7305.1950.tb00463.x)\n16. [I. S. Reed, G. Solomon (1960). Polynomial Codes Over Certain Finite Fields. Journal of the Society for Industrial and Applied Mathematics.](https://doi.org/10.1137/0108018)\n17. [Robert G. Gallager (1963). Low-Density Parity-Check Codes. The MIT Press eBooks.](https://doi.org/10.7551/mitpress/4347.001.0001)\n18. [R. Tanner (1981). A recursive approach to low complexity codes. IEEE Transactions on Information Theory.](https://doi.org/10.1109/tit.1981.1056404)\n19. [M. Y. Hsiao (1970). A Class of Optimal Minimum Odd-weight-column SEC-DED Codes. IBM Journal of Research and Development.](https://doi.org/10.1147/rd.144.0395)\n20. [D.J.C. MacKay, R.M. Neal (1997). Near Shannon limit performance of low density paritycheck codes. Electronics Letters.](https://doi.org/10.1049/el:19970362)\n21. [Erdal Arikan (2009). Channel Polarization: A Method for Constructing Capacity-Achieving Codes for Symmetric Binary-Input Memoryless Channels. IEEE Transactions on Information Theory.](https://doi.org/10.1109/tit.2009.2021379)\n22. [Tal, Ido, Vardy, Alexander (2012). List Decoding of Polar Codes. arXiv (Cornell University).](https://doi.org/10.48550/arxiv.1206.0050)\n23. [An introduction to coding theory for mathematics students (J. Kerl)](https://johnkerl.org/doc/kerl-ecc-intro.pdf)\n24. [Reed-Solomon (RS) code, Error Correction Zoo](https://errorcorrectionzoo.org/c/reed_solomon)\n25. [A Tutorial on Quantum Error Correction (A. M. Steane)](https://users.physics.ox.ac.uk/~Steane/pubs/Steane_2006.pdf)\n26. [Error-correcting codes for semiconductor memory applications: a state-of-the-art review (IBM Journal of Research and Development, Vol 28, No 2, 1984)](https://dl.acm.org/doi/10.1147/rd.282.0124)\n27. [Error–correcting codes with linear algebra (UPenn)](https://www2.math.upenn.edu/~kazdan/312F12/JJ/ECC.pdf)\n28. [Selection of Cyclic Redundancy Code and Checksum Algorithms to Ensure Critical Data Integrity (FAA)](https://www.faa.gov/sites/faa.gov/files/air_cert/design_approvals/air_software/TC-14-49.pdf)\n29. [Checksums and error control (engineering book chapter)](https://pages.cs.wisc.edu/~remzi/OSTEP/Citations/checksums-03.pdf)\n30. [Automatic-repeat-request error-control schemes (IEEE survey)](https://people.computing.clemson.edu/~jmarty/papers/july2024/996-2-Automatic-repeat-request_error-control_schemes.pdf)\n31. [Error Control in Wireless Sensor Networks: A Cross Layer Analysis](https://digitalcommons.unl.edu/cgi/viewcontent.cgi?article=1097&context=csearticles)\n32. [gnuradio.org](https://www.gnuradio.org/doc/doxygen/page_fec.html)\n\n---\n*Topic: Encyclopedia › Technology and the built world › Computing and digital systems › Artificial intelligence and data › Algorithms and computational methods*\n\n*Initially written Sep 29, 2026 · Reviewed: Sep 30, 2026 · Edited: Sep 30, 2026 · Last review: Sep 30, 2026*\n\n*Copyright 2026 EdgeChat AI, a subsidiary of Biostate AI.*\n\nLicense: Edgepedia Community License 1.0, https://www.edgepedia.org/edgepedia/license\n",
 "same_as": [
  "http://www.math.clemson.edu/~keyj/Key/applicN.pdf",
  "https://academicweb.nd.edu/~powers/ame.20231/shannon1948a.pdf",
  "https://www2.math.upenn.edu/~kazdan/312F12/JJ/ECC.pdf",
  "https://pages.cs.wisc.edu/~remzi/OSTEP/Citations/checksums-03.pdf",
  "https://people.computing.clemson.edu/~jmarty/papers/july2024/996-2-Automatic-repeat-request_error-control_schemes.pdf"
 ],
 "url": "https://www.edgepedia.org/error-correction-code",
 "markdown_url": "https://www.edgepedia.org/error-correction-code.md",
 "license": {
  "name": "Edgepedia Community License 1.0",
  "url": "https://www.edgepedia.org/edgepedia/license",
  "summary": "Free with credit, commercial use included. AI training is open to everyone. For other uses, organizations over USD 100M in revenue or 100M monthly users license separately.",
  "spdx": "LicenseRef-Edgepedia-Community-1.0"
 },
 "credit": "\"Error correction code\", Edgepedia (EdgeChat), https://www.edgepedia.org/error-correction-code. Edgepedia Community License 1.0.",
 "credit_md": "\"[Error correction code](https://www.edgepedia.org/error-correction-code)\", Edgepedia (EdgeChat), [https://www.edgepedia.org/error-correction-code](https://www.edgepedia.org/error-correction-code). [Edgepedia Community License 1.0](https://www.edgepedia.org/edgepedia/license).",
 "credit_html": "\"<a href=\"https://www.edgepedia.org/error-correction-code\">Error correction code</a>\", Edgepedia (EdgeChat), <a href=\"https://www.edgepedia.org/error-correction-code\">https://www.edgepedia.org/error-correction-code</a>. <a href=\"https://www.edgepedia.org/edgepedia/license\">Edgepedia Community License 1.0</a>.",
 "speakable": "An error correction code is a method that adds redundancy to data so errors from storage or transmission are detected and corrected without retransmission."
}
