A comprehensive, curriculum-aligned collection of Python-based simulations for core topics in Electronics and Communication Engineering (ECE). Designed for academic learning, lab assignments, and concept visualization.
This repository is structured sequentially to follow a standard Communication Engineering syllabus, from foundational probability and signals to digital transmission, wireless channels, network protocols, and emerging 5G/Radar technologies.
| # | Folder | Focus & Included Simulations |
|---|---|---|
| 01 | 01_Probability_Random_Variables_and_Noise |
Gaussian PDF/CDF, random processes (autocorrelation, PSD), noise types, Central Limit Theorem (CLT), probability distributions |
| 02 | 02_Signals_and_Systems |
Basic signal generation, convolution, Fourier series, FFT analysis, sampling & aliasing |
| 03 | 03_Analog_Modulation |
AM, FM, PM, SSB/DSB modulation & demodulation |
| 04 | 04_Digital_Modulation |
ASK, FSK, PSK (BPSK/QPSK), QAM, constellations, QPSK/QAM text transmission over noisy channel |
| 05 | 05_Pulse_Modulation |
PAM, PWM/PPM, PCM encoding/decoding, delta modulation, adaptive delta modulation |
| 06 | 06_Information_Theory_and_Coding |
Entropy, Shannon-Fano, Huffman coding, channel capacity, mutual information, rate-distortion, Lempel-Ziv (LZ78) coding |
| 07 | 07_Error_Control_Coding |
Linear block codes, Hamming codes, CRC, convolutional coding, Viterbi decoding, Reed-Solomon (15,11) coding, BCH codes, Turbo coding |
| 08 | 08_Data_Transmission_and_Line_Coding |
Line codes (NRZ, Manchester, AMI, B8ZS), eye diagram, ISI, raised cosine pulse shaping, baseband transmission, scrambler/descrambler |
| 09 | 09_AWGN_and_Channel_Modeling |
AWGN channels, Rayleigh & Rician fading, BER vs. SNR analysis, Shannon capacity limits, multipath delay spread, LS vs. MMSE channel estimation |
| 10 | 10_Multiplexing_and_Multiple_Access |
TDM, FDM, CDMA, OFDM, Wavelength Division Multiplexing (WDM), Pure & Slotted ALOHA |
| 11 | 11_Transmitter_and_Receiver_Design |
Superheterodyne receiver, Phase-Locked Loop (PLL), Automatic Gain Control (AGC), direct conversion receiver, transmitter architecture |
| 12 | 12_Spread_Spectrum_Communication |
DSSS, FHSS, PN sequence generation (LFSR), processing gain |
| 13 | 13_DSP_for_Communication |
Correlation receiver, FIR/IIR digital filters, equalization, matched filtering |
| 14 | 14_Antenna_and_Wave_Propagation |
Radiation patterns, Friis transmission equation, ground wave propagation, link budget calculator |
| 15 | 15_Optical_Communication |
Fiber attenuation, numerical aperture, optical BER, chromatic dispersion analysis, optical link budget |
| 16 | 16_Satellite_Communication |
Orbital parameters, Doppler shift, satellite link budget |
| 17 | 17_Wireless_and_Mobile_Communication |
Cellular frequency reuse, handoff, MIMO capacity, path loss models, OFDM wireless, receiver diversity combining (SC, EGC, MRC) |
| 18 | 18_Network_Protocols_and_Data_Link |
ARQ protocols (Stop-and-Wait, Go-Back-N, Selective Repeat), sliding window flow control, frame-level error detection |
| 19 | 19_Radar_Communication |
Radar range equation, chirp pulse compression, Doppler radar velocity estimation |
| 20 | 20_Emerging_Technologies |
5G NR numerology & slot structure, mmWave propagation with atmospheric loss, Massive MIMO beamforming, Cognitive Radio spectrum sensing |
| 21 | 21_Mini_Projects |
Socket chat app, SDR basics, spectrum analyzer GUI, speech signal compression |
| 22 | 22_Advanced_Modulation_Visualizations |
16-QAM noise dashboard, QAM order comparison, QPSK BER dashboard |
Below is the complete curriculum index of all simulation scripts, including direct links to their source code, saved console logs, and visual plots.
Folder path: 01_Probability_Random_Variables_and_Noise
| Simulation Script | Output Plot(s) | Description |
|---|---|---|
central_limit_theorem.py |
![]() |
Central Limit Theorem demonstration. |
gaussian_pdf_cdf.py |
![]() |
Gaussian PDF and CDF visualization. |
noise_types.py |
![]() |
Noise types in communication systems. |
probability_distributions.py |
![]() |
Probability distributions used in communication engineering. |
random_processes.py |
![]() |
Random processes: autocorrelation and power spectral density. |
Folder path: 02_Signals_and_Systems
| Simulation Script | Output Plot(s) | Description |
|---|---|---|
basic_signals_generation.py |
![]() |
Simulation script. |
convolution.py |
![]() |
Simulation script. |
fft_analysis.py |
![]() |
Simulation script. |
fourier_series.py |
![]() |
Simulation script. |
sampling_aliasing.py |
![]() |
Simulation script. |
Folder path: 03_Analog_Modulation
| Simulation Script | Output Plot(s) | Description |
|---|---|---|
am_modulation_demodulation.py |
![]() |
Simulation script. |
fm_modulation.py |
![]() |
Simulation script. |
pm_modulation.py |
![]() |
Simulation script. |
ssb_dsb_modulation.py |
![]() |
Simulation script. |
Folder path: 04_Digital_Modulation
| Simulation Script | Output Plot(s) | Description |
|---|---|---|
ask_modulation.py |
![]() |
Simulation script. |
constellation_diagrams.py |
![]() |
Simulation script. |
fsk_modulation.py |
![]() |
Simulation script. |
psk_bpsk_qpsk.py |
![]() |
Simulation script. |
qam16_modulation_demodulation.py |
![]() |
Simulation script. |
qam_modulation.py |
![]() |
Simulation script. |
qpsk_modulation_demodulation.py |
![]() |
Simulation script. |
Folder path: 05_Pulse_Modulation
| Simulation Script | Output Plot(s) | Description |
|---|---|---|
adaptive_delta_modulation.py |
![]() |
Simulation script. |
delta_modulation.py |
![]() |
Simulation script. |
pam.py |
![]() |
Simulation script. |
pcm_encoding_decoding.py |
![]() |
Simulation script. |
pwm_ppm.py |
![]() |
Simulation script. |
Folder path: 06_Information_Theory_and_Coding
| Simulation Script | Output Plot(s) | Description |
|---|---|---|
channel_capacity.py |
![]() |
Simulation script. |
entropy_calculation.py |
- | Simulation script. |
huffman_coding.py |
- | Simulation script. |
lempel_ziv_coding.py |
![]() |
Lempel-Ziv (LZ78) Compression Algorithm Demonstration. |
mutual_information.py |
![]() |
Mutual Information and BSC Channel Capacity. |
rate_distortion.py |
![]() |
Rate-Distortion Functions for Gaussian and Binary Sources. |
shannon_fano_coding.py |
- | Simulation script. |
source_coding_efficiency.py |
- | Simulation script. |
Folder path: 07_Error_Control_Coding
| Simulation Script | Output Plot(s) | Description |
|---|---|---|
bch_code.py |
![]() |
Bose-Chaudhuri-Hocquenghem (BCH) Cyclic Code. |
convolutional_coding.py |
- | Simulation script. |
cyclic_redundancy_check.py |
- | Simulation script. |
hamming_code.py |
- | Simulation script. |
linear_block_codes.py |
- | Simulation script. |
reed_solomon_coding.py |
![]() |
Reed-Solomon Error Control Coding. |
turbo_code_basics.py |
![]() |
Turbo Code Encoder and Iterative Decoder. |
viterbi_decoder.py |
- | Simulation script. |
Folder path: 08_Data_Transmission_and_Line_Coding
| Simulation Script | Output Plot(s) | Description |
|---|---|---|
baseband_transmission.py |
![]() |
Complete baseband digital transmission system. |
eye_diagram.py |
![]() |
Eye diagram generation for baseband digital transmission. |
intersymbol_interference.py |
![]() |
Inter-Symbol Interference (ISI) and pulse shaping. |
line_coding_schemes.py |
![]() |
Line coding schemes used in digital data transmission. |
scrambler_descrambler.py |
![]() |
Scrambler and descrambler for digital data transmission. |
Folder path: 09_AWGN_and_Channel_Modeling
| Simulation Script | Output Plot(s) | Description |
|---|---|---|
awgn_capacity.py |
![]() |
Shannon Channel Capacity of AWGN Channel. |
awgn_channel.py |
![]() |
Simulation script. |
ber_vs_snr_bpsk.py |
![]() |
Simulation script. |
ber_vs_snr_qpsk.py |
![]() |
Simulation script. |
channel_estimation.py |
![]() |
Pilot-based Channel Estimation (LS vs. MMSE). |
multipath_channel.py |
![]() |
Multipath Channel Simulation and Frequency Selective Fading. |
rayleigh_fading.py |
![]() |
Simulation script. |
rician_fading.py |
![]() |
Simulation script. |
Folder path: 10_Multiplexing_and_Multiple_Access
| Simulation Script | Output Plot(s) | Description |
|---|---|---|
aloha_simulation.py |
![]() |
Pure and Slotted ALOHA Multiple Access Throughput. |
cdma_simulation.py |
- | Simulation script. |
fdm_simulation.py |
![]() |
Simulation script. |
ofdm_simulation.py |
![]() |
Simulation script. |
tdm_simulation.py |
![]() |
Simulation script. |
wdm_simulation.py |
![]() |
Wavelength Division Multiplexing (WDM) Simulation. |
Folder path: 11_Transmitter_and_Receiver_Design
| Simulation Script | Output Plot(s) | Description |
|---|---|---|
agc_automatic_gain_control.py |
![]() |
Automatic Gain Control (AGC) simulation. |
direct_conversion_receiver.py |
![]() |
Direct-conversion (zero-IF) receiver simulation. |
pll_phase_locked_loop.py |
![]() |
Phase-Locked Loop (PLL) simulation. |
superheterodyne_receiver.py |
![]() |
Simulation script. |
transmitter_architecture.py |
![]() |
Transmitter architecture simulation. |
Folder path: 12_Spread_Spectrum_Communication
| Simulation Script | Output Plot(s) | Description |
|---|---|---|
dsss_direct_sequence.py |
![]() |
Direct Sequence Spread Spectrum (DSSS) simulation. |
fhss_frequency_hopping.py |
![]() |
Frequency-Hopping Spread Spectrum (FHSS) simulation. |
pn_sequence_generator.py |
![]() |
PN (Pseudo-Noise) sequence generator using LFSR. |
processing_gain.py |
![]() |
Processing gain and jamming margin in spread spectrum systems. |
Folder path: 13_DSP_for_Communication
| Simulation Script | Output Plot(s) | Description |
|---|---|---|
correlation_receiver.py |
![]() |
Simulation script. |
digital_filters_fir_iir.py |
![]() |
Simulation script. |
equalization.py |
![]() |
Simulation script. |
matched_filter.py |
![]() |
Simulation script. |
Folder path: 14_Antenna_and_Wave_Propagation
| Simulation Script | Output Plot(s) | Description |
|---|---|---|
friis_transmission_equation.py |
![]() |
Simulation script. |
ground_wave_propagation.py |
![]() |
Simulation script. |
link_budget_calculator.py |
- | Simulation script. |
radiation_pattern.py |
![]() |
Simulation script. |
Folder path: 15_Optical_Communication
| Simulation Script | Output Plot(s) | Description |
|---|---|---|
ber_optical_link.py |
![]() |
Simulation script. |
dispersion_analysis.py |
![]() |
Optical Fiber Dispersion Analysis. |
fiber_attenuation.py |
![]() |
Simulation script. |
numerical_aperture.py |
- | Simulation script. |
optical_link_budget.py |
![]() |
Optical Link Power Budget Design. |
Folder path: 16_Satellite_Communication
| Simulation Script | Output Plot(s) | Description |
|---|---|---|
doppler_shift_satellite.py |
![]() |
Simulation script. |
link_budget_satellite.py |
- | Simulation script. |
orbital_parameters.py |
- | Simulation script. |
Folder path: 17_Wireless_and_Mobile_Communication
| Simulation Script | Output Plot(s) | Description |
|---|---|---|
cellular_frequency_reuse.py |
![]() |
Simulation script. |
diversity_techniques.py |
![]() |
Wireless Receiver Diversity Combining Techniques. |
handoff_simulation.py |
![]() |
Simulation script. |
mimo_simulation.py |
- | Simulation script. |
ofdm_wireless.py |
![]() |
OFDM Wireless Transmission with Cyclic Prefix. |
path_loss_models.py |
![]() |
Simulation script. |
Folder path: 18_Network_Protocols_and_Data_Link
| Simulation Script | Output Plot(s) | Description |
|---|---|---|
arq_protocols.py |
![]() |
ARQ (Automatic Repeat reQuest) protocol simulation. |
error_detection_protocols.py |
![]() |
Error detection at the data-link layer. |
flow_control.py |
![]() |
Sliding window flow control simulation. |
Folder path: 19_Radar_Communication
| Simulation Script | Output Plot(s) | Description |
|---|---|---|
doppler_radar.py |
![]() |
Doppler radar simulation for moving-target velocity estimation. |
pulse_compression.py |
![]() |
Linear FM (chirp) pulse compression simulation. |
radar_range_equation.py |
![]() |
Radar range equation calculation and detection analysis. |
Folder path: 20_Emerging_Technologies
| Simulation Script | Output Plot(s) | Description |
|---|---|---|
5g_nr_basics.py |
![]() |
5G NR (New Radio) Numerology and Slot Structure. |
cognitive_radio.py |
![]() |
Cognitive Radio Spectrum Sensing Simulation. |
massive_mimo.py |
![]() |
Massive MIMO Beamforming and Precoding Simulation. |
mmwave_propagation.py |
![]() |
Millimeter Wave (mmWave) Propagation Characteristics. |
Folder path: 21_Mini_Projects
| Simulation Script | Output Plot(s) | Description |
|---|---|---|
chat_application_socket.py |
- | Simulation script. |
digital_filter_designer.py |
![]() |
Simulation script. |
dtmf_dialpad_simulator.py |
![]() |
Simulation script. |
software_defined_radio_basics.py |
![]() |
Simulation script. |
spectrum_analyzer_gui.py |
![]() |
Simulation script. |
speech_signal_compression.py |
![]() |
Simulation script. |
Folder path: 22_Advanced_Modulation_Visualizations
| Simulation Script | Output Plot(s) | Description |
|---|---|---|
qam16_noise_dashboard.py |
![]() |
Simulation script. |
qam_order_comparison.py |
![]() |
Simulation script. |
qpsk_ber_constellation_dashboard.py |
![]() |
Simulation script. |
Run any simulation from the repository root:
# General run command
python <folder_name>/<script_name>.py
# Example: Run 5G NR Numerology Simulation
python 20_Emerging_Technologies/5g_nr_basics.py
# Example: Run Massive MIMO Precoding & Beamforming
python 20_Emerging_Technologies/massive_mimo.py
# Example: Run Sliding Window Flow Control
python 18_Network_Protocols_and_Data_Link/flow_control.pyMost scripts display an interactive Matplotlib plot and print quantitative performance results to the console.
- Massive MIMO Beamforming (
20_Emerging_Technologies/massive_mimo.py): Models a Uniform Linear Array (ULA) at a Base Station and simulates Zero Forcing (ZF), Minimum Mean Squared Error (MMSE), and Maximum Ratio Transmission (MRT) precoders, plotting sum-rate scaling and beam radiation patterns. - Turbo Codes (
07_Error_Control_Coding/turbo_code_basics.py): Simulates a parallel concatenated systematic convolutional code with iterative soft-decision feedback decoding, showing how BER improves iteration by iteration. - OFDM Wireless System (
17_Wireless_and_Mobile_Communication/ofdm_wireless.py): Contains a full transceiver chain: IFFT modulation, Cyclic Prefix (CP) insertion, multipath channel convolution, FFT demodulation, and 1-tap frequency domain equalization (FEQ).
This project is licensed under the MIT License - see the LICENSE file for details
































































































