A command-line program that simulates Error Correcting Codes (ECC) across different transmission mediums and environmental conditions. The goal is to model how ECC algorithms behave when exposed to noise, hops, and variable error rates—letting you see which algorithms perform well, when, and why.
This project was created as part of Basic Programming, but is designed to serve as a learning tool for anyone curious about ECC behavior in imperfect real-world conditions.
This CLI application guides the user through selecting:
- An ECC method
- A transmission medium
- Several environmental variables (noise level, hops, error multipliers, etc.)
The simulation uses Python’s random library to create errors in unpredictable ways, simulating real-world randomness in mediums.
The intention is to observe how far different ECCs can be pushed before they fail, and how conditions can change reliability.
- Interactive CLI prompts
- Multiple ECC methods to choose from
- Configurable environmental conditions
- Medium selection (e.g., copper wire, fiber, satellite radio, WiFi 7)
- Randomized error simulation
- Supports large test batches (up to 100,000 trials)
The user can choose from six ECC techniques:
-
Parity Bit Basic single-bit parity detection.
-
Hamming Code Single-error correction, double-error detection.
-
Reed–Solomon Code Robust symbol-level ECC used in CDs, DVDs, and satellite comms.
-
Redundancy Code Repeats data multiple times; simple but wasteful.
-
Checksum Code Uses a sum-based integrity check.
-
No ECC Baseline: raw transmission with no protection.
Users select one of eight mediums, each representing different real-world communication channels:
- Copper Wire
- Fiber Optic Cable
- Coaxial Cable
- Cat6 Ethernet Cable
- Satellite Radio
- 5G Network
- FM Radio
- WiFi 7
These selections can later be tied to unique noise profiles.
After choosing ECC and medium, users configure:
| Prompt | Meaning |
|---|---|
| Noise Level (0–3) | None, low, medium, or high environmental noise |
| Hops (0–10) | How many relays the signal passes through |
| Error-rate Multiplier | A decimal multiplier for exaggerating or scaling error probability |
| Medium Length (1–1000 km) | The simulated distance the signal travels |
| Test Amount (1–100000) | Number of trials to run |
Clone and run:
git clone https://github.com/<your-username>/ECC_Simulation
cd ECC_Simulation
python main.pyYou will be guided through all selections interactively.