From 7b0115aac133e5b0d6f32461c4ea2cc958f1989d Mon Sep 17 00:00:00 2001 From: Vaibhav Vasudevan <82894668+vaibhav-vasudevan@users.noreply.github.com> Date: Mon, 29 Dec 2025 15:13:45 -0500 Subject: [PATCH 01/12] Add checksum error-detection method entry Added a YAML entry for the checksum error-detection method, detailing its functionality, protection capabilities, realizations, and relations. --- .../classical/bits/easy/checksum/checksum.yml | 40 +++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 codes/classical/bits/easy/checksum/checksum.yml diff --git a/codes/classical/bits/easy/checksum/checksum.yml b/codes/classical/bits/easy/checksum/checksum.yml new file mode 100644 index 000000000..029de0351 --- /dev/null +++ b/codes/classical/bits/easy/checksum/checksum.yml @@ -0,0 +1,40 @@ +####################################################### +## This is a code entry in the error correction zoo. ## +## https://github.com/errorcorrectionzoo ## +####################################################### + +code_id: checksum +physical: bits +logical: bits + +name: 'Checksum code' +short_name: 'Checksum' +introduced: '\cite{doi:10.17487/RFC1071}' + +description: | + A classical error-detection method that treats data as a sequence of numerical values and computes their sum. In most network protocols, the data is divided into equal-sized segments (typically 16-bit words) and added together using 1's complement arithmetic. The final sum is then bitwise complemented to generate the checksum value. + At the receiver's end, the same 1's complement addition is performed on all received data segments plus the transmitted checksum. If the result of this addition is a word consisting of all ones (which corresponds to zero in 1's complement arithmetic), the data is considered error-free. + +protection: | + Detects all single-bit errors and any burst error up to the length of the checksum. However, it is unable to detect errors that do not change the arithmetic sum, such as the reordering of data segments (transpositions) or the addition of zero-valued blocks. + +realizations: + - 'Used extensively in the internet protocol suite (TCP/IP) for headers and data integrity as defined in RFC 1071 \cite{doi:10.17487/RFC1071}.' + - 'Advanced variants like the Fletcher checksum \cite{doi:10.1109/TCOMM.1982.1095369} and Adler-32 include positional information to detect transposition errors.' + +notes: + - 'For a detailed explanation of the 1s complement arithmetic used in the Internet Checksum, see the University of Washington lecture notes \cite{manual:{Wetherall, David. "Error Detection & Correction," CSEP 561, University of Washington, 2010.}}.' + +relations: + parents: + - code_id: bits + cousins: + - code_id: crc + detail: 'Checksums are computationally simpler and often implemented in software, whereas CRCs provide stronger protection against burst errors and are typically implemented in hardware.' + +# Begin Entry Meta Information +_meta: + # Change log - most recent first + changelog: + - user_id: vaibhav-vasudevan + date: '2025-10-07' From 2bfe6a99507cb493a7e562b289ea5ea9f77ebef1 Mon Sep 17 00:00:00 2001 From: Vaibhav Vasudevan <82894668+vaibhav-vasudevan@users.noreply.github.com> Date: Mon, 29 Dec 2025 15:22:42 -0500 Subject: [PATCH 02/12] Rename checksum code to internet_checksum and update details --- codes/classical/bits/easy/checksum/checksum.yml | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/codes/classical/bits/easy/checksum/checksum.yml b/codes/classical/bits/easy/checksum/checksum.yml index 029de0351..bf59ba105 100644 --- a/codes/classical/bits/easy/checksum/checksum.yml +++ b/codes/classical/bits/easy/checksum/checksum.yml @@ -3,34 +3,35 @@ ## https://github.com/errorcorrectionzoo ## ####################################################### -code_id: checksum +code_id: internet_checksum physical: bits logical: bits -name: 'Checksum code' +name: 'Internet Checksum code' short_name: 'Checksum' introduced: '\cite{doi:10.17487/RFC1071}' description: | A classical error-detection method that treats data as a sequence of numerical values and computes their sum. In most network protocols, the data is divided into equal-sized segments (typically 16-bit words) and added together using 1's complement arithmetic. The final sum is then bitwise complemented to generate the checksum value. + At the receiver's end, the same 1's complement addition is performed on all received data segments plus the transmitted checksum. If the result of this addition is a word consisting of all ones (which corresponds to zero in 1's complement arithmetic), the data is considered error-free. protection: | - Detects all single-bit errors and any burst error up to the length of the checksum. However, it is unable to detect errors that do not change the arithmetic sum, such as the reordering of data segments (transpositions) or the addition of zero-valued blocks. + Detects all single-bit errors and any burst error up to the length of the checksum (e.g., 16 bits). However, it is unable to detect errors that do not change the arithmetic sum, such as the reordering of data segments (transpositions) or the addition of zero-valued blocks. realizations: - 'Used extensively in the internet protocol suite (TCP/IP) for headers and data integrity as defined in RFC 1071 \cite{doi:10.17487/RFC1071}.' - 'Advanced variants like the Fletcher checksum \cite{doi:10.1109/TCOMM.1982.1095369} and Adler-32 include positional information to detect transposition errors.' notes: - - 'For a detailed explanation of the 1s complement arithmetic used in the Internet Checksum, see the University of Washington lecture notes \cite{manual:{Wetherall, David. "Error Detection & Correction," CSEP 561, University of Washington, 2010.}}.' + - 'For a detailed explanation of the arithmetic involved, see the University of Washington lecture notes \cite{manual:{Wetherall, David. "Error Detection & Correction," CSEP 561, University of Washington, 2010.}} and GeeksforGeeks \cite{url:{https://www.geeksforgeeks.org/error-detection-code-checksum/}}.' relations: parents: - code_id: bits cousins: - code_id: crc - detail: 'Checksums are computationally simpler and often implemented in software, whereas CRCs provide stronger protection against burst errors and are typically implemented in hardware.' + detail: 'Checksums are computationally simpler and often implemented in software, whereas CRCs provide stronger protection against burst errors.' # Begin Entry Meta Information _meta: From bde2337e83e8413f7bfb93bc706190a306c84395 Mon Sep 17 00:00:00 2001 From: Vaibhav Vasudevan <82894668+vaibhav-vasudevan@users.noreply.github.com> Date: Mon, 29 Dec 2025 15:29:09 -0500 Subject: [PATCH 03/12] Add internet_checksum.yml for checksum implementation --- .../bits/easy/checksum/{checksum.yml => internet_checksum.yml} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename codes/classical/bits/easy/checksum/{checksum.yml => internet_checksum.yml} (100%) diff --git a/codes/classical/bits/easy/checksum/checksum.yml b/codes/classical/bits/easy/checksum/internet_checksum.yml similarity index 100% rename from codes/classical/bits/easy/checksum/checksum.yml rename to codes/classical/bits/easy/checksum/internet_checksum.yml From 00dee3e352eedfe1501b1c6d26121c1b9ec6080d Mon Sep 17 00:00:00 2001 From: Vaibhav Vasudevan <82894668+vaibhav-vasudevan@users.noreply.github.com> Date: Mon, 29 Dec 2025 15:39:51 -0500 Subject: [PATCH 04/12] Update parent code_id from 'bits' to 'linear_code' --- codes/classical/bits/easy/checksum/internet_checksum.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/codes/classical/bits/easy/checksum/internet_checksum.yml b/codes/classical/bits/easy/checksum/internet_checksum.yml index bf59ba105..deeceed01 100644 --- a/codes/classical/bits/easy/checksum/internet_checksum.yml +++ b/codes/classical/bits/easy/checksum/internet_checksum.yml @@ -28,7 +28,7 @@ notes: relations: parents: - - code_id: bits + - code_id: linear_code cousins: - code_id: crc detail: 'Checksums are computationally simpler and often implemented in software, whereas CRCs provide stronger protection against burst errors.' From 3b75e14f0334636b9ef6a990f23302e70fc961b2 Mon Sep 17 00:00:00 2001 From: Vaibhav Vasudevan <82894668+vaibhav-vasudevan@users.noreply.github.com> Date: Mon, 29 Dec 2025 15:45:23 -0500 Subject: [PATCH 05/12] Remove parents relation from internet_checksum.yml Removed the 'parents' relation from the internet_checksum.yml file. --- codes/classical/bits/easy/checksum/internet_checksum.yml | 2 -- 1 file changed, 2 deletions(-) diff --git a/codes/classical/bits/easy/checksum/internet_checksum.yml b/codes/classical/bits/easy/checksum/internet_checksum.yml index deeceed01..ff1ac2424 100644 --- a/codes/classical/bits/easy/checksum/internet_checksum.yml +++ b/codes/classical/bits/easy/checksum/internet_checksum.yml @@ -27,8 +27,6 @@ notes: - 'For a detailed explanation of the arithmetic involved, see the University of Washington lecture notes \cite{manual:{Wetherall, David. "Error Detection & Correction," CSEP 561, University of Washington, 2010.}} and GeeksforGeeks \cite{url:{https://www.geeksforgeeks.org/error-detection-code-checksum/}}.' relations: - parents: - - code_id: linear_code cousins: - code_id: crc detail: 'Checksums are computationally simpler and often implemented in software, whereas CRCs provide stronger protection against burst errors.' From 7ed2cf468cd84bd4a019055651c0e21ef687590f Mon Sep 17 00:00:00 2001 From: Vaibhav Vasudevan <82894668+vaibhav-vasudevan@users.noreply.github.com> Date: Mon, 29 Dec 2025 15:52:32 -0500 Subject: [PATCH 06/12] changed name to get access to pull --- codes/classical/bits/easy/checksum/internet_checksum.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/codes/classical/bits/easy/checksum/internet_checksum.yml b/codes/classical/bits/easy/checksum/internet_checksum.yml index ff1ac2424..db0688036 100644 --- a/codes/classical/bits/easy/checksum/internet_checksum.yml +++ b/codes/classical/bits/easy/checksum/internet_checksum.yml @@ -34,6 +34,6 @@ relations: # Begin Entry Meta Information _meta: # Change log - most recent first - changelog: - - user_id: vaibhav-vasudevan - date: '2025-10-07' +changelog: + - user_id: VictorVAlbert + date: '2025-10-07 From ba764b63889ae3e35908c365a86f2eef2ae43fff Mon Sep 17 00:00:00 2001 From: Vaibhav Vasudevan <82894668+vaibhav-vasudevan@users.noreply.github.com> Date: Mon, 29 Dec 2025 15:54:36 -0500 Subject: [PATCH 07/12] Update internet_checksum.yml --- codes/classical/bits/easy/checksum/internet_checksum.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/codes/classical/bits/easy/checksum/internet_checksum.yml b/codes/classical/bits/easy/checksum/internet_checksum.yml index db0688036..ea1b37336 100644 --- a/codes/classical/bits/easy/checksum/internet_checksum.yml +++ b/codes/classical/bits/easy/checksum/internet_checksum.yml @@ -36,4 +36,4 @@ _meta: # Change log - most recent first changelog: - user_id: VictorVAlbert - date: '2025-10-07 + date: '2025-10-07' From 88205f2d61832df51a2b9860e4b06019a2e41ece Mon Sep 17 00:00:00 2001 From: Vaibhav Vasudevan <82894668+vaibhav-vasudevan@users.noreply.github.com> Date: Mon, 29 Dec 2025 15:57:32 -0500 Subject: [PATCH 08/12] Clean up internet_checksum.yml by removing metadata Removed meta information and changelog from internet_checksum.yml --- codes/classical/bits/easy/checksum/internet_checksum.yml | 7 ------- 1 file changed, 7 deletions(-) diff --git a/codes/classical/bits/easy/checksum/internet_checksum.yml b/codes/classical/bits/easy/checksum/internet_checksum.yml index ea1b37336..abd0e21ab 100644 --- a/codes/classical/bits/easy/checksum/internet_checksum.yml +++ b/codes/classical/bits/easy/checksum/internet_checksum.yml @@ -30,10 +30,3 @@ relations: cousins: - code_id: crc detail: 'Checksums are computationally simpler and often implemented in software, whereas CRCs provide stronger protection against burst errors.' - -# Begin Entry Meta Information -_meta: - # Change log - most recent first -changelog: - - user_id: VictorVAlbert - date: '2025-10-07' From 400f2e29bea874ce39922550defa9b33b72ff6ab Mon Sep 17 00:00:00 2001 From: Vaibhav Vasudevan <82894668+vaibhav-vasudevan@users.noreply.github.com> Date: Mon, 29 Dec 2025 15:59:41 -0500 Subject: [PATCH 09/12] Update internet_checksum.yml with metadata Added contributor and metadata information. --- codes/classical/bits/easy/checksum/internet_checksum.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/codes/classical/bits/easy/checksum/internet_checksum.yml b/codes/classical/bits/easy/checksum/internet_checksum.yml index abd0e21ab..733c3b07e 100644 --- a/codes/classical/bits/easy/checksum/internet_checksum.yml +++ b/codes/classical/bits/easy/checksum/internet_checksum.yml @@ -30,3 +30,9 @@ relations: cousins: - code_id: crc detail: 'Checksums are computationally simpler and often implemented in software, whereas CRCs provide stronger protection against burst errors.' + +_meta: + contributors: + - vaibhav-vasudevan + source: manual + last_edit: 2025-12-29 From c9626c1455ca31adda3acd0fdf3f5db7407cb0e5 Mon Sep 17 00:00:00 2001 From: Vaibhav Vasudevan <82894668+vaibhav-vasudevan@users.noreply.github.com> Date: Mon, 29 Dec 2025 16:39:16 -0500 Subject: [PATCH 10/12] Clean up metadata in internet_checksum.yml Removed contributor and source metadata from internet_checksum.yml. --- codes/classical/bits/easy/checksum/internet_checksum.yml | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/codes/classical/bits/easy/checksum/internet_checksum.yml b/codes/classical/bits/easy/checksum/internet_checksum.yml index 733c3b07e..438e087c5 100644 --- a/codes/classical/bits/easy/checksum/internet_checksum.yml +++ b/codes/classical/bits/easy/checksum/internet_checksum.yml @@ -31,8 +31,4 @@ relations: - code_id: crc detail: 'Checksums are computationally simpler and often implemented in software, whereas CRCs provide stronger protection against burst errors.' -_meta: - contributors: - - vaibhav-vasudevan - source: manual - last_edit: 2025-12-29 +_meta: {} From 009899cf47bae51fb8b597e087a9629f58d0d6f0 Mon Sep 17 00:00:00 2001 From: Vaibhav Vasudevan <82894668+vaibhav-vasudevan@users.noreply.github.com> Date: Mon, 29 Dec 2025 21:17:25 -0500 Subject: [PATCH 11/12] Refactor internet_checksum.yml for consistency --- .../bits/easy/checksum/internet_checksum.yml | 34 +++++++------------ 1 file changed, 13 insertions(+), 21 deletions(-) diff --git a/codes/classical/bits/easy/checksum/internet_checksum.yml b/codes/classical/bits/easy/checksum/internet_checksum.yml index 438e087c5..7e9b69754 100644 --- a/codes/classical/bits/easy/checksum/internet_checksum.yml +++ b/codes/classical/bits/easy/checksum/internet_checksum.yml @@ -3,32 +3,24 @@ ## https://github.com/errorcorrectionzoo ## ####################################################### -code_id: internet_checksum -physical: bits -logical: bits + + +code_id: 'internet_checksum' name: 'Internet Checksum code' -short_name: 'Checksum' -introduced: '\cite{doi:10.17487/RFC1071}' -description: | - A classical error-detection method that treats data as a sequence of numerical values and computes their sum. In most network protocols, the data is divided into equal-sized segments (typically 16-bit words) and added together using 1's complement arithmetic. The final sum is then bitwise complemented to generate the checksum value. +description: 'A classical error-detection method that treats data as a sequence of numerical values and computes their sum. In most network protocols, the data is divided into equal-sized segments (typically 16-bit words) and added together using 1''s complement arithmetic. The final sum is then bitwise complemented to generate the checksum value.' - At the receiver's end, the same 1's complement addition is performed on all received data segments plus the transmitted checksum. If the result of this addition is a word consisting of all ones (which corresponds to zero in 1's complement arithmetic), the data is considered error-free. +introduced: '\cite{doi:10.17487/RFC1071}''' -protection: | - Detects all single-bit errors and any burst error up to the length of the checksum (e.g., 16 bits). However, it is unable to detect errors that do not change the arithmetic sum, such as the reordering of data segments (transpositions) or the addition of zero-valued blocks. +protection: 'Detects all single-bit errors and any burst error up to the length of the checksum (e.g., 16 bits). However, it is unable to detect errors that do not change the arithmetic sum, such as the reordering of data segments (transpositions) or the addition of zero-valued blocks.' -realizations: - - 'Used extensively in the internet protocol suite (TCP/IP) for headers and data integrity as defined in RFC 1071 \cite{doi:10.17487/RFC1071}.' - - 'Advanced variants like the Fletcher checksum \cite{doi:10.1109/TCOMM.1982.1095369} and Adler-32 include positional information to detect transposition errors.' +features: + + rate: 'Used extensively in the internet protocol suite (TCP/IP) for headers and data integrity as defined in RFC 1071 \cite{doi:10.17487/RFC1071}.' -notes: - - 'For a detailed explanation of the arithmetic involved, see the University of Washington lecture notes \cite{manual:{Wetherall, David. "Error Detection & Correction," CSEP 561, University of Washington, 2010.}} and GeeksforGeeks \cite{url:{https://www.geeksforgeeks.org/error-detection-code-checksum/}}.' + magic_scaling_exponent: 'Advanced variants like the Fletcher checksum \cite{doi:10.1109/TCOMM.1982.1095369} and Adler-32 include positional information to detect transposition errors.' -relations: - cousins: - - code_id: crc - detail: 'Checksums are computationally simpler and often implemented in software, whereas CRCs provide stronger protection against burst errors.' - -_meta: {} +_meta: + + stub: false From da681da1cd48b2a57efc322190c4882679052153 Mon Sep 17 00:00:00 2001 From: Vaibhav Vasudevan <82894668+vaibhav-vasudevan@users.noreply.github.com> Date: Mon, 29 Dec 2025 21:33:49 -0500 Subject: [PATCH 12/12] Refactor internet_checksum.yml structure and citations Updated the internet_checksum.yml file to correct citation and restructure features into realizations. --- .../classical/bits/easy/checksum/internet_checksum.yml | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/codes/classical/bits/easy/checksum/internet_checksum.yml b/codes/classical/bits/easy/checksum/internet_checksum.yml index 7e9b69754..aa9f55c5d 100644 --- a/codes/classical/bits/easy/checksum/internet_checksum.yml +++ b/codes/classical/bits/easy/checksum/internet_checksum.yml @@ -11,15 +11,13 @@ name: 'Internet Checksum code' description: 'A classical error-detection method that treats data as a sequence of numerical values and computes their sum. In most network protocols, the data is divided into equal-sized segments (typically 16-bit words) and added together using 1''s complement arithmetic. The final sum is then bitwise complemented to generate the checksum value.' -introduced: '\cite{doi:10.17487/RFC1071}''' +introduced: '\cite{doi:10.17487/RFC1071}' protection: 'Detects all single-bit errors and any burst error up to the length of the checksum (e.g., 16 bits). However, it is unable to detect errors that do not change the arithmetic sum, such as the reordering of data segments (transpositions) or the addition of zero-valued blocks.' -features: - - rate: 'Used extensively in the internet protocol suite (TCP/IP) for headers and data integrity as defined in RFC 1071 \cite{doi:10.17487/RFC1071}.' - - magic_scaling_exponent: 'Advanced variants like the Fletcher checksum \cite{doi:10.1109/TCOMM.1982.1095369} and Adler-32 include positional information to detect transposition errors.' +realizations: + - 'Used extensively in the internet protocol suite (TCP/IP) for headers and data integrity as defined in RFC 1071 \cite{doi:10.17487/RFC1071}.' + - 'Advanced variants like the Fletcher checksum \cite{manual:{J. G. Fletcher, "An Arithmetic Checksum for Serial Transmissions," 1982.}} and Adler-32 include positional information to detect transposition errors.' _meta: