Exercises

ex-sp-ch19-01

Easy

Create a Pandas DataFrame from a dictionary of BER results for 3 modulations at 5 SNR values. Display head(), describe(), and dtypes.

ex-sp-ch19-02

Easy

Use groupby to compute the mean and standard deviation of BER grouped by modulation type.

ex-sp-ch19-03

Easy

Create a pivot table showing BER as a function of modulation (rows) and SNR (columns).

ex-sp-ch19-04

Easy

Use %timeit to compare the speed of vectorized operations vs. apply vs. iterrows on a 10000-row DataFrame.

ex-sp-ch19-05

Easy

Create an ipywidgets slider that controls the frequency of a plotted sinusoid and updates the plot interactively.

ex-sp-ch19-06

Medium

Load a CSV of simulation results, clean the data (handle NaN, convert types), filter to SNR > 5 dB, and create a summary table grouped by modulation and channel.

ex-sp-ch19-07

Medium

Merge a results DataFrame with a configuration DataFrame on a shared config_id column. Group by antenna count and modulation to find the best BER configuration.

ex-sp-ch19-08

Medium

Set up jupytext pairing for a notebook. Demonstrate that editing the .py file updates the .ipynb and vice versa.

ex-sp-ch19-09

Medium

Use papermill to run a BER analysis notebook with 5 different SNR values, collecting results from each execution.

ex-sp-ch19-10

Medium

Create a well-structured analysis notebook following the analysis notebook pattern: title, imports, config, data loading, 3 analysis sections, and conclusions.

ex-sp-ch19-11

Hard

Build an interactive dashboard in a notebook using ipywidgets that lets users select modulation, SNR range, and channel model, then displays BER curves, constellation diagrams, and throughput.

ex-sp-ch19-12

Hard

Create a Pandas pipeline that reads multiple CSV files from a simulation sweep (one per seed), concatenates them, computes confidence intervals, and exports a publication-ready LaTeX table.

ex-sp-ch19-13

Hard

Extract reusable functions from a messy 200-line notebook into a proper Python module. Refactor the notebook to import from the module and test that it runs cleanly with "Restart & Run All."

ex-sp-ch19-14

Challenge

Build a complete analysis pipeline: generate BER data for 5 modulations x 4 channels x 10 seeds using papermill, concatenate results with Pandas, generate publication figures and LaTeX tables, and produce a final HTML report with nbconvert.

ex-sp-ch19-15

Challenge

Set up a GitHub Actions CI pipeline that runs your analysis notebook with papermill, checks that all cells execute without error, and publishes the HTML output as an artifact.