The goal of the course is to develop a complete working set of digital signal processing notions from the ground up. DSP is arguably at the heart of the “digital revolution” that, in the space of just a few decades, has enabled unprecedented levels of interpersonal communication and of information availability.

In the class, starting from the basic definitions of a discrete-time signal, we will work our way through Fourier analysis, filter design, sampling, interpolation and quantization to build a DSP toolset complete enough to analyze a practical communication system in detail. Hands-on examples and demonstration will be routinely used to close the gap between theory and practice.

Broad outline of the topics covered in the class:

- Introduction: What is signal processing, history of the topic, application examples.
- Discrete-time (DT) signals: the discrete-time complex exponential, and a computer music synthesis example.
- Euclid and Hilbert: Signal processing as geometry, vectors spaces, bases, approximations.
- Fourier Analysis: The discrete Fourier transform (DFT) and series (DFS). The discrete-time Fourier transform (DTFT). Examples. The fast Fourier transform algorithm (FFT).
- Linear Filters: Linear time-invariant systems, convolution, ideal and realizable filters. Filter design and implementation, examples.
- Interpolation and Sampling: Continuous-time (CT) signals, interpolation, sampling. The sampling theorem as orthonormal basis expansion. Processing of CT signals in DT.
- Stochastic Signal Processing and Quantization: Stochastic signals, quantization, analog-to-digital (ADC) and digital-to-analog (DAC) conversion.
- Image Processing: Introduction to image processing and two-dimensional (2D) Fourier analysis. Filtering and compression. The JPEG compression standard.
- Digital Communication Systems: Analog channels and bandwidth/power constraints. Modulation and demodulation. Transmitter and receiver design. ADSL.

Fundamentals of linear algebra and calculus are a must. Familiarity with probability theory and system theory are highly recommended. Familiarity with Matlab (or equivalent) and/or scientific programming are a plus.

A companion textbook is available both in printed format and electronically on the web (free of charge). Please refer to www.sp4comm.org for details. Many more bibliographical references can be found in the textbook.

The class will consist of video lectures, each approximately 45 minutes in length; videos will contain some interactive quiz questions. Students are encouraged to implement many of the course topics in the programming language of their choice; worked out examples in Python will be provided on a weekly basis. The final grade will be based on the students' performance in weekly homework sets, which will include applied coding problems.

**Will I get a certificate after completing this class?**Yes. Students who successfully complete the class will receive a certificate signed by the instructor.

**What resources will I need for this class?**The basic material (textbook, slides, videos) will available on the web. Programming exercises are mostly language-independent; numerical problems can be solved using Python.

**What is so cool about digital signal processing?**In the old days, i.e. the days of discrete electronics, if you wanted to build a circuit as a practical application of the theory you had studied, you had to shop for components, solder them together, and then repeat the process when a mistake led to a burn out -- a very common occurrence. With DSP, as long as you have a PC, you have a portable and indestructible lab in which you can quickly assemble prototypes of your favorite circuits, from guitar effects to data communication systems. In this class, you will learn how to do all that!

**Is this class about DSP chips?**In short, no. DSP chips are specialized microprocessors designed to perform very efficiently the set of operations that are most common in digital signal processing. Many DSP chips exist and there is a rich body of literature on DSP chip programming. However, in this class we will deal with the fundamentals of signal processing in more abstract terms, and focus less on the specifics of a particular implementation strategy. The reward will be a very flexible toolset that is very easy to apply to your preferred architecture, be it a DSP chip or a standard PC.