general info and regulations

I know it's long, but please read all of the following attentively:

course material

  • textbook: Signal processing for Communications, EPFL Press, 2008, by P. Prandoni and M. Vetterli. The textbook is available for sale online but you can also get a pdf copy online for free using the "resources" link in the menu above
  • homework sets, available online on this website
  • occasional handouts, available online on this website
  • iPython notebooks available via GitHub (see below)

recommended additional textbooks:
  • Discrete-Time Signal Processing, by A. V. Oppenheim and R. W. Schafer (Prentice-Hall, 1989); this is the "bible" of signal processing and a must-have textbook if you are serious about DSP
  • Foundations of Signal Processing, by M. Vetterli, J. Kovacevic and V. Goyal; extremely comprehensive and rigorous reference; a must-read for the more mathematically inclined. The textbook is available for sale but you can also get a pdf copy online for free using the "resources" link in the menu above


Although the course is mostly self-contained, I will assume that you're coming here with a solid working knowledge of calculus and linear algebra. We will spend a little time reviewing the most important concepts but please make sure you brush up on your math and your vector spaces. Similarly, do not let your notions of system theory and probability theory fade out since they will make your life much easier once we start studying filters and random signals. On the first day of class, I will hand out a questionnaire that should allow you to self-diagnose any problem areas you may have.


Every week, there will be four hours of lectures and two hours of exercise sessions, according to the syllabus available on this website. Classes will be in English although I do speak French (and Italian) so feel free to ask questions in your preferred language if you feel more comfortable. You are strongly encouraged to ask questions of any kind during the lectures; lectures should be an exchange of information between the teacher and the students and it's up to you to make sure this exchange goes both ways! If you really are too shy to ask questions in class, you can always come see me or the assistants during office hours; lastly, if you really don't want to have any human contact at all, you can always email any member of the teaching staff.

exercise sessions

Every week you will be able to participate in a two-hour exercise session given by the teaching assistants; in these sessions, selected homework problems will be analyzed, explained and solved in full. It is in your interest to try and solve the assigned problems beforehand in order to gain the most from the sessions, since homework is not graded. Also, I like to create exam quizzes that are not about "pattern matching" but about reasoning in a signal-processing-oriented way; attending the exercise sessions is your best bet to pass the exam with flying colors.


Homework sets will be made available on a weekly basis during the semester. Homework is not collected and it does not contribute to your final grade. However, it is essential that you do your homework and that you try to do it by yourself. Only by thinking hard and by solving the homework problems you can gain a true understanding of the course material and prepare yourself for the exam.

As stated before, every week there will be a homework session in which selected problems will be solved in full. If you have a signal processing problem that you would like to see explained in class (whether it belongs to the assigned homework or not), don't hesitate to contact me or the teaching staff and let us know. Don't hesitate to come see us during office hours if you need extra help with the homework.

programming exercise and examples in python

One of the nicest things about digital signal processing is that everything we study in class can be instantaneously translated into working algorithms; now, since everyone owns a PC these days, everyone automatically owns a fully-functional DSP laboratory ready to go! (Compare this to an electronics class, where you need to go out and buy resistors, transistors and capacitors, plus all the other hardware...) To emphasize this fact, I will share with you multiple examples of DSP applications in the form of Jupyter Notebooks using Python leveraging the power of numpy and matplotlib.

Please make sure to have a working Python3 environment on your PC. If you don't already have Python installed, I recommend using Anaconda. Creating a virtualenv for the notebooks will be very easy otherwise.

The notebooks are distributed via GitHub; the easiest way to obtain them in one go is to simply clone this repository. I will alert you in case of updates. Although the notebooks can be enjoyed "passively", I recommend you download them and play with the code by changing the parameters, modifying the algorithms and, finally, by writing your own.

embedded DSP labs

This year, once again, we are offering motivated students the possibility of attending a series of five hands-on labs where you will learn how to program an embedded device to implement DSP algorithms. The platform we chose is an ST Nucleo and the toy application is a real-time voice transformer with increasing level of complexity. You can take a look at the material we prepared for the labs here.

You are encouraged to attend the first two labs, which take the place of the exercise sessions for the first two weeks; if you are interested, we will lend you the hardware so you can play with the board at home. You can choose to follow the labs on your own or as a group of 2 or three students.

online class on Coursera

all the lectures for this class are available in video form on Coursera here. You should enroll in the online class in order to gain access to the videos and to several sets of auto-graded exercises.

Furthermore, the online platform provides students with a forum where you can ask questions discuss class topics. Forums (or fora for the classically oriented) are a fabulous tool in online classes (MOOCs) since they end up being a good repository of shared knowledge that students can go back to at any time.

You can access the Coursera MOOC using the "class resources" menu above.


The date and place for the final exam will be announced towards the end of the semester. Online students, please find out with your local officials how the exam will be administered.

The final grade for the class will be based entirely on your performance during the written final exam.

There will be no midterm exam but I will hand out a "mock" midterm just before spring break that you can use as a checkpoint to see if you're up to speed with the class.

The final exam is closed-book. However, you will be allowed to bring with you two A4 sheets of \emph{handwritten} notes, front and back: no photocopies please. Calculators and all other electronic devices are not allowed (yes, just like during takeoff and landing).


The final exam is graded on a scale of 100 points, which are mapped as such:

Points 0 - 9 10 - 14 15 - 19 20 - 24 25 - 29 30 - 34 35 - 39 40 - 44 45 - 49
Grade 1 2 2.25 2.5 2.75 3 3.25 3.5 3.75
Points 50 - 54 55 - 59 60 - 64 65 - 69 70 - 74 75 - 79 80 - 84 85 - 89 90+
Grade 4 4.25 4.5 4.75 5 5.25 5.5 5.75 6

usual warnings

Apologies for stating the obvious, but no exceptions to the present guidelines will be made, regardless of your personal situation. For all events which you think may grant special consideration, the one and only address is the Service Academique, not me nor the assistants. Also:

  • attendance per se does not impact the final grade; in other words, there is no obligation to come to class. However, if you do choose to come to class, please be warned that I have an extremely low tolerance for distracting noises so please do not chat with your friends or otherwise disrupt the lectures.
  • do NOT wait until the last week of class to come to office hours with an impossibly long list of questions. Doubts about the material are best addressed in an incremental manner; there is no "magic" session that I can have with you at the last minute to fill in the gaps.
  • do not let me catch you cheating during the exam.

and finally...

I really hope you will enjoy the class and I am looking forward to comments and suggestions in order to improve the material and to make it more and more interesting. All constructive criticism is more than welcome. Don't hesitate to actively participate during the lectures with questions and remarks. If something isn't clear, please say so. Write code as much as you can in order to get a feeling for the practical side of signal processing. If you are passionate about the subject and want to develop a project, contact me. If you are already engaged in a project which involves signal processing, let me know about it. Above all, I think signal processing is a lot of fun and I hope that, at the end of the semester, you will agree with that.