HomeGuidesProjects
Schedule time with me

Learning Signal Processing

A three-year plan for signal processing, from the first Fourier transform to reproducing papers. I wrote it for myself and I am working through it alongside the field radio plan and the electrical engineering master's: the radio supplies the signals, the degree supplies the proofs, and this is the practice in between.

The checklist and the gate log are mine. Signed out, the page is read-only.

Blocks are scored on gates, not hours. A gate is a thing built or a problem set finished, with a tolerance or a clock on it, and the block is done when the gate passes.

Each block lists practice that scores you as well as reading: problem sets with answers, graded courses, plots that are right or wrong. Those cannot report back here, so I write their results in the gate log: a problem set score, a time, a measured error in decibels.

The ideas

Eight ideas carry the whole subject; everything after is one of them applied. Each stage returns to all eight at more depth, and the second column is what owning one looks like.

IdeaYou own it when

Two views of every signal

Time and frequency are the same information in different coordinates, and the Fourier transform is the change of basis. Every operation has a meaning in both.

You say what a time-domain operation does to the spectrum, and the reverse, before running it, and the plot agrees.

Linear time-invariant systems

A linear time-invariant system is its impulse response. Convolution in time is multiplication in frequency, which is filtering, echo, blur and a radio channel in one sentence.

Given an impulse response you sketch the frequency response by hand; given a spectrum you say what the system does to a step.

Sampling and aliasing

Sampling below twice the bandwidth folds high frequencies onto low ones, and no later processing can undo it. This is why anti-alias filters exist and why sampling faster is rarely the first fix.

You choose a sample rate and an anti-alias filter for a new sensor from its bandwidth, and you can show an alias on a plot and name where it came from.

The time-frequency tradeoff

Resolution in time and in frequency trade off; a short window locates an event and smears its frequency. Spectrograms, wavelets and filter banks are different bargains with the same limit.

You pick a window and its length for a given signal, say what the choice costs, and read leakage off a spectrum without being told it is there.

Poles and zeros

A discrete filter is a rational function of z. Zeros carve notches, poles make resonances, the pole radius decides stability, and the phase response is a design choice, not an accident.

You place poles and zeros by hand to meet a rough specification, and say whether the result is stable and what its group delay does to a pulse.

Noise is a signal too

Real work is estimating something from a noisy measurement. Signal-to-noise ratio, power spectral density, correlation, the matched filter and the Cramér-Rao bound are the vocabulary.

You say how much averaging a measurement needs for a target signal-to-noise ratio, and why the matched filter is the best you can do against white noise.

Finite precision

Quantization adds noise, coefficient rounding moves poles, and fixed-point arithmetic overflows and wraps. Textbook filters fail in hardware for these reasons and no others.

You take a floating-point filter to fixed point, predict its noise floor before running it, and show on a pole-zero plot where the rounding moved the poles.

It is all linear algebra

Every transform is a change of basis. Fourier, cosine and wavelet bases are chosen; principal components are learned from the data. Seeing transforms as projections is what lets you invent one.

You write the discrete Fourier transform as a matrix, say when it is orthogonal, and derive a new transform from a property you want it to have.

Rules

  • Look at it in both domains. Before and after every operation, plot the signal in time and in frequency. Most mistakes are visible in a plot nobody made.
  • Never read past an exercise. A chapter whose problems are not done is a chapter not read.
  • Build it before you trust it. Every transform, filter and estimator in the plan is written once by hand, from the definition, before a library version is allowed.
  • Real signals, not synthetic ones, wherever the block allows. The radio, a microphone and a sensor are the sources; the noise, drift and clipping they bring are the lesson.
  • Write the derivation down. A result you cannot rederive on paper in ten minutes is a result you are borrowing.
  • Keep the log. A block is done when its gate passes, and the gate is scored from the log, not from how it felt.

Every week

StudyFive hours a week from the block's reading, in sittings of at least an hour, with the problems done as they come rather than saved for later.
CodeThree hours a week in Python with NumPy and SciPy, or MATLAB. Every idea from the week's reading is run against a signal the same week.
DeriveTwenty minutes a day rederiving one result from memory on paper: a transform pair, a filter's response, an estimator's variance. Timed, checked against the book, kept.
Real signalsOne recording a week from the radio, a microphone or a sensor, processed end to end and plotted in both domains.
ReviewSunday evening: read the week's log, score the derivations, write the next week's three priorities.

Beginner

Months 1 to 6

The goal is intuition, not proofs: to read a spectrum and predict what a filter will do before running it. Everything is done in code against real signals, and the mathematics is only what the code needs.

You leave when aliasing, leakage and phase distortion are things you have caused on purpose, fixed, and can explain with a plot.

1. The mathematics the field assumes

Months 1 to 2

Signal processing is complex numbers, linear algebra and a little probability worn smooth. The block is short because the point is fluency, not coverage; the proofs come in the journeyman stage.

  • Complex numbers until they are boring: rectangular and polar forms, Euler's formula both ways, multiplication as rotation, roots of unity. Smith's chapter 30 and 3Blue1Brown's Euler video.
  • Watch the Essence of Linear Algebra series, then work MIT 18.06 through eigenvalues and orthogonal projections, with the problem sets. Vectors as signals and matrices as systems is the reading you are doing it for.
  • Stat 110 through expectation, variance and the normal distribution, with its strategic practice problems. Independence and the variance of a sum are what every later noise calculation rests on.
  • Set up Python with NumPy, SciPy, Matplotlib and Jupyter. Generate a sine, a square wave, white noise and a chirp; plot each; save the notebook. Everything after runs in it.
  • Start an Anki deck for the formulas, and add to it in every block from here on: transform pairs, filter relations, bounds.

Practice

  • MIT 18.06 problem sets and exams

    Solutions are posted. Do the problem set before the solution, score it, log the fraction right.

  • Stat 110 strategic practice

    Problems grouped by theme with solutions. Log each set as a fraction right.

  • Anki

    Spaced repetition for the formulas. The daily review count and the retention rate are the score.

Gate

Twenty problems in ten minutes with no errors: complex multiplication and division in both forms, Euler's formula in both directions, a two by two inverse and its eigenvalues, and the mean and variance of a sum of independent variables.

Reading


2. Signals in two domains

Months 2 to 4

The Fourier transform is the field's one trick, and it is learned by computing it, plotting it and being surprised. Smith's book is the text because every chapter ends in something you can run.

  • Read Smith chapters 1 to 13: statistics and noise, the ADC, linear systems, convolution and its properties, the discrete Fourier transform and its applications. Do every example in code.
  • Write the discrete Fourier transform from its definition, as a double loop and then as a matrix. Check it against the FFT to one part in a million. Then time both at a thousand points and at a million.
  • Write convolution by hand, then prove to yourself in code that it is multiplication in frequency: convolve two signals both ways and plot the difference.
  • Build a spectrogram from scratch: frame, window, transform, stack. Try a rectangular, a Hann and a Blackman window on the same recording and keep the three plots side by side.
  • Alias a chirp on purpose. Sample it too slowly, plot what comes back, and explain on the plot where each folded frequency came from. Then put an anti-alias filter in front and do it again.
  • Record a minute from a microphone and a minute of IQ from the radio. Find the tones, the hum, the noise floor and the carrier in each, in both domains, and label them.
  • Work Think DSP chapters 1 to 7 in its notebooks. It is the same material a second way, in code first, and the exercises are the point.

Practice

Gate

From a bare Python session: write the DFT from its definition, check it against the FFT to within one part in a million, then build a spectrogram of a recording you made and point to the leakage, the aliasing you introduced deliberately, and the window's main lobe, all inside sixty minutes.

Reading


3. Filters

Months 4 to 6

A filter is the first thing anyone is paid to build, and the first place the two domains have to be held in mind at once. Finite and infinite impulse response, windows, poles and zeros, and the phase you did not think about.

  • Read Smith chapters 14 to 21: filter basics, moving average, windowed sinc, custom filters, FFT convolution, recursive filters, Chebyshev filters, and comparing the two families.
  • Design a windowed-sinc lowpass by hand: sinc, window, truncate, normalise. Compare its response to SciPy's firwin with the same specification and explain every difference.
  • Remove mains hum from a real recording with a second-order notch you designed from its pole-zero plot. Show the before and after spectra and the hum's harmonics you missed.
  • Pass a square wave through a linear-phase FIR and a Butterworth IIR with the same magnitude response. Plot both outputs and the group delay of each; the ringing is the lesson.
  • Implement a biquad in direct form II transposed and run it on a live audio stream in real time. Add a control that moves the pole radius and listen to what stability sounds like.
  • Resample a recording between 44.1 and 48 kilohertz with your own polyphase interpolator, then back, and measure the error against the original in decibels.
  • Read Julius Smith's Introduction to Digital Filters through the chapters on transfer functions, poles and zeros, and frequency response. It is the same ground as Smith with the mathematics put back.

Practice

  • Digital Signal Processing 2: Filtering

    The second EPFL course, on filters. Graded; log every quiz and assignment score.

  • fiiir: FIR filter design tool

    Design a filter there, then reproduce its coefficients yourself from the same specification. Log the largest coefficient difference and the response difference in decibels.

  • Filter design drill

    Pick a random specification, design by hand, check against the library. Five in an hour, each within one decibel of specification, is the standard.

Gate

Given a specification with a passband edge, a stopband edge, a ripple and an attenuation: design one FIR and one IIR filter that meet it, implement both without a filter design library, and show the measured response meets every number within half a decibel, inside two hours.

Reading


Journeyman

Months 7 to 18

The goal is rigor, and the ability to design rather than apply. This is where most people stall, because the mathematics gets real and the problem sets are long. The two Oppenheim books are the spine, with their problems done, and the master's courses land here.

You leave when you can take a vague requirement, choose the transform and the filter structure, justify the choice on paper, and predict the failure modes before testing.

4. Signals and systems, rigorously

Months 7 to 10

The beginner stage was pictures and code. This is the same material with proofs, done through the problem sets of the course everyone else took. It is where the intuition gets checked against the mathematics and found to be mostly right.

  • Oppenheim and Willsky chapters 1 to 7 and 9 to 10: signals, linear time-invariant systems, Fourier series, the continuous and discrete-time Fourier transforms, time and frequency characterisation, sampling, the Laplace and z-transforms. Every basic problem, half the advanced ones.
  • Follow MIT 6.003 on OpenCourseWare alongside the book: the lectures, the recitations and every problem set, done before the posted solution.
  • Prove the sampling theorem on paper from the Fourier transform of an impulse train, then write the reconstruction and show where it fails for a signal that is not bandlimited.
  • For one analog circuit, a second-order RLC: derive the transfer function, the poles, the step response and the frequency response, then measure them on the bench or in a simulator.
  • Work Schaum's Outline as the drill book: fifty solved problems a week across the chapters already covered, timed, and the mistakes logged by kind.

Practice

  • MIT 6.003 problem sets

    Eleven sets with solutions. Score each before reading the solution; log the fraction right.

  • MIT 6.003 exams

    Two quizzes and a final, with solutions. These are the gate; take them under the clock and log the percentage.

Gate

MIT 6.003's two quizzes and the final, taken closed book under their own time limits from the archive, each scored at eighty percent or better.

Reading


5. Discrete-time signal processing

Months 10 to 14

The professional core of the subject, from the book every practitioner has on the shelf and the lectures its author gave. Multirate, filter design done properly, spectral analysis, and what finite precision does to all of it.

  • Oppenheim and Schafer chapters 2 to 10: discrete-time signals and systems, the z-transform, sampling, transform analysis of systems, structures, filter design, the DFT, the FFT, and Fourier analysis with the DFT. The problems are long; do them anyway.
  • Watch Oppenheim's own lecture series alongside the book, one lecture per chapter section, and the MIT 6.341 problem sets with them.
  • Write a radix-2 decimation-in-time FFT from the butterfly up, then a mixed-radix one. Match NumPy to one part in a billion and profile where the time goes.
  • Implement the Parks-McClellan algorithm from the Remez exchange, not from a library, and reproduce the equiripple filter in the book's example to the last coefficient.
  • Build a rational sample-rate converter from polyphase decimation and interpolation, then a cascade of half-band stages, and show the aliasing budget of each in a plot.
  • Take a fourth-order IIR to sixteen-bit fixed point on a microcontroller with CMSIS-DSP: choose the structure, scale each section, predict the noise floor and the pole movement on paper, then measure both.
  • Estimate a power spectrum three ways, periodogram, Bartlett and Welch, on the same noise recording, and show the bias and variance of each against what the book predicts.
  • Read Lyons in full now. Every chapter you found obvious is one Oppenheim taught you; every one you did not is a gap to log.

Practice

Gate

A fixed-point IIR filter running on a microcontroller in real time, with the measured noise floor and passband within one decibel of what you predicted on paper before flashing it, and the prediction in the log before the measurement.

Reading


6. Noise, estimation and detection

Months 14 to 18

Everything so far assumed you knew the signal. Real work is pulling one out of noise, and saying how well that can be done at all. Statistical signal processing is the half of the subject the deterministic books leave out, and it is where most industrial work lives.

  • Random processes properly: stationarity, autocorrelation, power spectral density and the Wiener-Khinchin theorem, and what a linear system does to each. Kay's probability book, then MIT 6.011's notes.
  • Derive the matched filter, implement it, and measure its signal-to-noise gain on a pulse in white noise against the theory. Then colour the noise and show it stop being optimal.
  • Derive the Cramér-Rao bound for the frequency of a sinusoid in white noise. Implement the maximum likelihood estimator and plot its variance against the bound across signal-to-noise ratio; find the threshold.
  • Build a Wiener filter for a noisy recording from measured spectra, and compare it to the best fixed filter you can design by hand for the same recording.
  • Work through Kalman and Bayesian Filters in Python, then write a Kalman filter for a tone whose frequency drifts, and for a position track from noisy range measurements, and tune each from the innovation sequence.
  • Neyman-Pearson detection: an energy detector and a matched detector for a known signal in noise, with measured receiver operating characteristic curves against the theoretical ones.
  • Kay's Estimation Theory chapters 1 to 8 and 10 to 13, and Detection Theory chapters 1 to 7. Both books' problems are the reading.

Practice

Gate

A frequency estimator for a tone in noise whose measured variance sits within one decibel of the Cramér-Rao bound above the threshold, with the bound derived by hand in the log and the threshold effect shown on the plot.

Reading


7. A domain: radio

Months 12 to 18, alongside the two blocks above

Depth in one application is what makes the theory stick, and radio is the one whose signals are already in the pack. Every idea in the plan appears in a receiver, and a receiver you wrote every line of is the proof you understood them.

  • Work PySDR end to end with the receiver from the radio plan: IQ sampling, the frequency domain, filtering, digital modulation, pulse shaping, synchronisation, channel coding. Every exercise, against live signals.
  • Write a broadcast FM demodulator in NumPy from raw IQ: channel filter, decimate, discriminate, de-emphasise, resample to audio. No signal processing library beyond the FFT.
  • Write a phase-shift-keyed demodulator with your own matched filter, timing recovery and carrier recovery, and decode a real over-the-air digital signal end to end.
  • In loopback with additive white noise, measure bit error rate against energy per bit over noise density for your demodulator and plot it on the theoretical curve. Every decibel of gap is a bug or a lesson.
  • Build an orthogonal frequency-division multiplexing transmitter and receiver in loopback: cyclic prefix, pilots, channel estimation, equalisation. Then put a multipath channel between them and watch the equaliser earn its keep.
  • Rebuild the FM and the digital receivers in GNU Radio from stock blocks, compare their output to yours sample for sample, and write one custom block in Python.
  • Read Rice's Digital Communications: A Discrete-Time Approach for the synchronisation chapters. It is the book that treats a receiver as a signal processing problem rather than a communications one.

Practice

  • PySDR exercises

    Every chapter ends in exercises against the receiver. Log which decode and which do not, and what the fix was.

  • GNU Radio tutorials

    Each tutorial ends in a flowgraph that works or does not. Log the time from opening the tutorial to a working graph.

  • Bit error rate against Eb/N0

    The theoretical curves for each modulation. Your loopback measurement against them is the score; log the gap in decibels at three points.

Gate

A demodulator you wrote, no GNU Radio blocks, that decodes a real over-the-air digital signal end to end, with a measured bit error rate in loopback within one decibel of the theoretical curve across the range you tested.

Reading


Expert

Months 19 to 36

The goal is inventing methods and knowing where the standard tools break. The reading turns into papers, the problems into reproductions, and the signals into ones the textbook assumptions fail on: nonstationary, nonlinear, nonuniformly sampled, on hardware with a drifting clock.

You leave when your first instinct about a new problem is usually right, you know which of your instincts are unreliable, and you can explain the tradeoff to someone at each stage below you.

8. Foundations, bases and sparsity

Months 19 to 24

The journeyman knew the transforms. The expert knows why they are the ones they are and how to make a new one: Hilbert spaces, frames, wavelets, and the discovery that a signal sparse in some basis can be recovered from far fewer samples than Nyquist asks for.

  • Foundations of Signal Processing chapters 2 to 6: Hilbert spaces, sequences and discrete-time systems, functions and continuous-time systems, sampling and interpolation, approximation and estimation. The exercises are the reading.
  • Implement the discrete wavelet transform for Haar and Daubechies-4 from the filter bank, verify perfect reconstruction to machine precision, and denoise a recording by thresholding coefficients. Compare it to the Wiener filter from the noise block on the same recording.
  • Build a two-channel filter bank, prove the perfect reconstruction conditions on paper, then break them one at a time and show each failure on a plot.
  • Implement orthogonal matching pursuit and basis pursuit, recover an undersampled sparse signal with each, and reproduce the phase transition between success and failure as a function of measurements and sparsity.
  • Construct a tight frame that is not a basis, show its redundancy buys robustness to erasures, and derive the frame bounds by hand.
  • Mallat chapters 1 to 4 and 7, and the compressed sensing chapter, as the second pass with more depth.

Practice

Gate

A sparse recovery experiment reproducing the published phase transition to within five percent of the curve, with your own matching pursuit and your own wavelet transform, and a two-page write-up someone at the journeyman stage can follow.

Reading


9. Adaptive, statistical and array processing

Months 24 to 30

The filters so far were designed once and fixed. The world is not: channels change, noise moves, and sources are somewhere. Adaptive filters, nonlinear state estimation and arrays are the three ways the subject follows a moving target.

  • Least mean squares, normalised least mean squares and recursive least squares, from the derivation to code, and their convergence measured against the theory on a channel you defined.
  • An adaptive noise canceller and an acoustic echo canceller on real audio from two microphones, with the misadjustment and convergence time logged against Haykin's predictions.
  • The extended, unscented and particle filters on one nonlinear tracking problem, bearings-only from a moving observer, with the error of each against the posterior Cramér-Rao bound.
  • Direction of arrival: a delay-and-sum beamformer, then MUSIC and ESPRIT, on synthetic data first and then on a real array, four coherent receivers or a microphone array you built.
  • Parametric spectral estimation: autoregressive models, Capon and MUSIC against the periodogram on the same data, with each method's resolution limit shown against Stoica and Moses.
  • Haykin chapters 1 to 10 and 14 to 15, Simon chapters 1 to 7 and 13 to 15, Van Trees chapters 2 to 4 and 8 to 9. Long books; the computer experiments in each are the part that counts.

Practice

Gate

Direction of arrival on a real array you built, MUSIC against a beamformer, with the measured bearing error under two degrees on a known source and the resolution limit shown against the textbook's prediction.

Reading


10. Papers, reproduction and the learned bridge

Months 30 to 36

Past this point the reading is papers and the practice is reproducing them, which is the fastest way to find out where a method quietly cheats. The bridge to machine learning is here too: a convolutional network is a learned filter bank, and knowing that is what tells you when the classical method wins.

  • IEEE Signal Processing Magazine every issue, and the tables of contents of the Transactions every month. One paper a week read in full, with a one-paragraph summary in the log.
  • Reproduce three papers from the Transactions, one a quarter, to the authors' reported numbers or to a documented reason why not. Public code and a write-up for each.
  • On one real task, keyword spotting or modulation classification: a hand-designed front end against a learned one, a mel filter bank against a convolutional first layer. Measure both, then plot the learned filters and say what they learned.
  • Brunton and Kutz for the data-driven side: the singular value decomposition, proper orthogonal decomposition, dynamic mode decomposition and sparse regression, each applied to a signal from the earlier blocks.
  • One project where the textbook assumptions fail: nonuniform sampling, a drifting clock between transmitter and receiver, or a nonlinear amplifier. Characterise the failure, then fix it.
  • Teach one block from each stage to someone at the stage below it, with a drawing and a plot. If they cannot do the block's gate afterwards, the teaching failed.
  • Submit one reproduction to ReScience C, or one result to a signal processing workshop. Peer review is the gate nobody can grade themselves.

Practice

  • ReScience C

    A peer-reviewed journal of reproductions. A submission accepted there is the block's gate graded by someone else; log the review.

  • IEEE ICASSP

    The field's annual conference, each May. Attending is the reading; a workshop submission is the score. Log either.

Gate

Three published papers reproduced to within the authors' reported numbers, or a documented reason why they cannot be, each with public code and a write-up, in twelve months.

Reading


The bookshelf

Every book the blocks read from, in one place, with what it is for. Free ones are marked. The paid ones are worth a used copy of the edition named, and a library will have most of them.

BookStageWhy this one
The Scientist and Engineer's Guide to Digital Signal Processing

Steven W. Smith

Free
BeginnerThe first book. No proofs, every idea shown, every chapter something you can run the same evening.
Think DSP

Allen B. Downey

Free
BeginnerThe same ground as Smith in Python notebooks, code before mathematics. Read the two together.
Introduction to Digital Filters with Audio Applications

Julius O. Smith III

Free
BeginnerPoles, zeros and the z-transform explained better than anywhere else, with audio to hear the difference.
Understanding Digital Signal Processing

Richard G. Lyons, third edition

BeginnerThe practitioner's book: what the equations mean, and the tricks that are in no other textbook. The one to buy first.
Signals and Systems

Alan V. Oppenheim and Alan S. Willsky, second edition

JourneymanThe standard undergraduate text, and MIT 6.003 follows it. The problems are the reason.
Signals and Systems: Theory and Applications

Fawwaz T. Ulaby and Andrew E. Yagle, second edition

Free
JourneymanMichigan's free signals and systems text, with solutions on the site. The substitute for Oppenheim and Willsky if the paid book is out of reach.
Schaum's Outline of Signals and Systems

Hwei P. Hsu, fourth edition

JourneymanHundreds of solved problems. The drill book, not the textbook.
Discrete-Time Signal Processing

Alan V. Oppenheim and Ronald W. Schafer, third edition

Free
JourneymanThe professional reference. Every practitioner has it, the free MIT lectures are by its author, and since 2026 the book itself is free on OpenCourseWare.
Digital Signal Processing: Principles, Algorithms, and Applications

John G. Proakis and Dimitris G. Manolakis, fifth edition

JourneymanThe other standard text. More problems than Oppenheim and Schafer, and Radke's free lectures follow it.
Mathematics of the Discrete Fourier Transform

Julius O. Smith III

Free
JourneymanThe DFT with every proof, from complex numbers up. The rigorous companion to the beginner stage.
Fundamentals of Statistical Signal Processing, Volume I: Estimation Theory

Steven M. Kay

JourneymanEstimation done once and properly: bounds, maximum likelihood, least squares, Bayesian. Every later block cites it.
Fundamentals of Statistical Signal Processing, Volume II: Detection Theory

Steven M. Kay

JourneymanDetection with the same care as the first volume. Read after it.
Intuitive Probability and Random Processes using MATLAB

Steven M. Kay

JourneymanThe probability the two volumes assume, taught by the same hand. Skip it if Stat 110 and a random processes course are already done.
Kalman and Bayesian Filters in Python

Roger R. Labbe Jr.

Free
JourneymanThe Kalman filter built up in notebooks from the one-dimensional case. The best free thing on the subject.
PySDR: A Guide to SDR and DSP using Python

Marc Lichtman

Free
JourneymanApplied signal processing against a real receiver, every idea with code. The radio block's text.
Signal Processing for Communications

Paolo Prandoni and Martin Vetterli

Free
JourneymanThe EPFL courses' textbook, ending in a modem built from the theory. The bridge between the two Oppenheim books and radio.
Digital Communications: A Discrete-Time Approach

Michael Rice

JourneymanSynchronisation as signal processing. The book to read before writing a receiver's timing and carrier recovery.
Foundations of Signal Processing

Martin Vetterli, Jelena Kovačević and Vivek K Goyal

Free
ExpertThe subject rebuilt from Hilbert spaces and approximation. The book that turns a journeyman's toolbox into a theory.
A Wavelet Tour of Signal Processing: The Sparse Way

Stéphane Mallat, third edition

ExpertWavelets, time-frequency and sparsity from the person who did much of it.
A Mathematical Introduction to Compressive Sensing

Simon Foucart and Holger Rauhut

ExpertCompressed sensing with the proofs. Read after the survey, when the phase transition experiment raises the question of why.
Linear Algebra and Learning from Data

Gilbert Strang

ExpertThe linear algebra of the expert stage: the singular value decomposition, low rank, and the bases you learn from data.
Adaptive Filter Theory

Simon Haykin, fifth edition

ExpertThe adaptive filtering reference, with computer experiments to reproduce.
Optimal State Estimation

Dan Simon

ExpertKalman, H-infinity and nonlinear filters with the derivations in full and the code online. The Kalman book after Labbe.
Estimation with Applications to Tracking and Navigation

Yaakov Bar-Shalom, X. Rong Li and Thiagalingam Kirubarajan

ExpertThe tracking reference: nonlinear filtering and data association, for when the Kalman filter meets a real target.
Optimum Array Processing

Harry L. Van Trees

ExpertThe array processing reference. Fourteen hundred pages; the block reads four chapters of it.
Spectral Analysis of Signals

Petre Stoica and Randolph Moses

Free
ExpertSpectral estimation, parametric and not, by the authors of most of it. Free from the authors.
Data-Driven Science and Engineering

Steven L. Brunton and J. Nathan Kutz, second edition

ExpertThe bridge to machine learning, with every chapter's lectures free on the site.
Machine Learning: A Bayesian and Optimization Perspective

Sergios Theodoridis, second edition

ExpertMachine learning from the signal processing side: adaptive filters, sparsity and Bayesian estimation before anything is called a network.
Deep Learning

Ian Goodfellow, Yoshua Bengio and Aaron Courville

Free
ExpertChapter 9 on convolutional networks, read as a signal processing text: a learned filter bank, and when a designed one still wins.

Neb Abera

Senior Computer Scientist at MITRE, specializing in secure embedded systems.

© 2026 Neb Abera · Privacy · Text message terms