Digital Signal Processing Coursera
Professors Martin Vetterli & Paolo Prandoni give an in-depth introduction to digital signals, filtering, etc. A caveat: I only went through the first 10 (out of 18) days of lectures, and did only some of the homework assignments.
Initially spurred on by a broad interest in music, audio, and sensor processing, this course served as a very solid theoretical foundation. The course starts off with a very dry, theoretical exploration into Hilbert spaces, which served as an excellent reminder that I can still sort of understand and enjoy mathematics. However my somewhat pathetic mathematical abilities were stretched to their absolute limit by Vetterli's systematic barrage of theory, and I would have surely given up on day 2 if not for some of those upper year linear algebra classes (thanks UBC!).
The lecture's first focus is on how to understand signals. Still shaky on some of the theory, the lecture delves deep into the theory of fourier analysis and the formal definition of the discrete fourier analysis and various related methods like the DTFT. The treatment of the subject is so dry, it's hard to breathe. Until as if in a sudden rainstorm, the theoretical desert can breathe again when finally they bring up examples of the STFT, which I have been using for a while for various audio-related applications at work, without knowing what it was called.
The next big subject is transforming signals, or signal processing. Here, the professors introduce LTIs formally, and derive the idea that an impulse response fully characterizes an LTI. Next they dive into simple filters, FIRs and IIRs, covering various types of averages, discussing filter stability and other formal properties. They try to build some intuition about filters from a frequency-domain perspective, which is very useful to me. Lastly, the subject of ideal filters is explored, as well as why such filters cannot be implemented in real life.
Finally, they discuss how to actually design filters using the z-transform, whose derivation remains somewhat mysterious to me, which is unfortunately normal for an engineering course. Prandoni gives a good interpretation for the pole-zero plot, which is a really elegant way of looking at filters. The lecture turns practical for a brief moment, when they reveal that implementations already exist for non-ideal versions of many of these filters and explore a few differences between Butterworth, Chebyshev and Elliptic low pass filters. They also talk about FIRs, and I finally understand the jargon of 'taps', which I just heard about at a lecture held at Noisebridge.
I still struggle to convert block diagrams into equations, but feel like I have a much better sense of second order IIRs that ship with the Web Audio API. Overall a mathematically challenging, but interesting class. I really wish there was a better way to build intuition for a lot of the theory, though.