Exercises
Practice problems for each chapter
How to use these exercises
Each exercise set corresponds to a chapter in Basics. The exercises are graded by difficulty:
| Level | What it means |
|---|---|
| Basic | Direct application of definitions and formulas. If you read the chapter, you can do these. |
| Intermediate | Requires combining concepts or writing short Python code. |
| Challenge | Deeper analysis, design problems, or open-ended exploration. |
All solutions are hidden behind collapsible panels. Try the exercise before peeking.
Exercises that involve Python code are self-contained: you can copy them into a notebook or script and run them directly.
Exercise sets
- Signals and Sampling: signal classification, sampling parameters, Nyquist theorem, aliasing, quantization
- Discrete-Time Systems: difference equations, impulse response, convolution, FIR vs IIR, stability
- Noise and SNR: decibels, SNR estimation, quantization, averaging, noise colour, ENOB
- The Z-Domain: z-transform, transfer functions, poles and zeros, stability analysis
- The Frequency Domain: frequency response, DFT, FFT, windowing, spectral estimation
- Filter Design: FIR/IIR design, window method, Parks-McClellan, Butterworth, Chebyshev, elliptic, biquads
Spot the Bug
Think you can catch DSP bugs? Spot the Bug is a quiz with 10 broken code snippets of increasing difficulty. Each has exactly one bug. Find it before you peek at the answer.
Projects
When you’ve worked through all six chapters, try these end-to-end projects:
- Capstone: End-to-End Signal Processing: a mini-project that ties together sampling, noise analysis, z-domain pole placement, spectral estimation, and filter design into a complete signal recovery pipeline.
- Build a Guitar Tuner: a guided build that combines bandpass filtering, autocorrelation pitch detection, and musical note matching into a working tuner.