I attended the last session of Digital Signal Processing course offered by the Polytechnic of Lausanne (EPFL: École Polytechnique Fédérale de Lausanne) through Coursera.org. The course is presented by Professors Paolo Prandoni and Martin Vetterli. I already knew some of the topics from University, but it was ten years ago and I wanted to refresh my memory and view the same topics from a different perspective.
Note: attending the course was one of the main reasons why I did not post anything recently.
The course has a nice blend of mathematical principles, real-world examples and implementation through MATLAB/Python programming.
The theory is mostly about discrete signals, frequency analysis (the many incarnations of the Fourier transforms are used extensively throughout all the course), sampling, interpolation, and linear filters.
The real-world examples are taken from many different fields of science: the course makes compelling examples on audio processing, image representation and manipulation, and the modems that everybody uses to connect to the Internet. It really shows the power of signal processing and can spark many ideas for the future.
About the programming part, it’s an effective way to empower the students by applying first-hand the things they understand. I like this approach, because generally when you write a program that does the math, there is an immediate feedback that tells you if you have understood well the subject; you also learn to program while learning the subject. The course offers MATLAB or Python as the languages of choice. I chose to do everything in Python because I already knew how MATLAB deals with DSP and I wanted to see how Python can compare to it. The course uses mainly Spyder and IPython notebooks, with numpy, scipy, pylab and matplotlib as the modules of choice. I have to say that you really need a good base of Python before programming DSP in it, because many of the APIs are not as intuitive as MATLAB functions. That said, for basic DSP Python environment is a valid substitute for MATLAB.
In conclusion I would recommend this class to programmers working in the fields of audio-video processing, telecommunications and many other fields where computers interact with the analog world, because it gives a formal approach together with the programming tools to implement it and it offers ideas about interesting applications.