The lab assignments in this course are implemented in the Python programming language. This sentence contains two words that may cause trouble for you: “Programming” and “Python.” If you have never written code before, some of the labs will be a slog. You can do them and you will learn interesting things. But you may feel that the effort is not worth the return. On the other hand, this is as good a chance as any to learn a little bit of programming. Being a good programmer is difficult. But being able to write a few hundred lines of code is something that anyone can learn in a couple of weeks.
If you have programmed before but have never used Python, no big deal. You can learn the peculiarities of Python’s syntax as you go along. Just be cognizant that there may be functions you don’t know about. Make sure you ask your teaching assistants for help. As opposed to spending countless hours searching the Internet.
If you have not use Python before, you need to install it. If you use Mac OS, you already have Python installed. If you use Linux, chances are you already have Python installed as well. If you use Windows, chances are you do not have a Python installation. In such case:
Several of you are excellent programmers. This course is popular with computer science majors, for instance. If you are in this category, please remember that this is not a programing course. Yes, we are writing code to solve problems. But the goal is not to write code. The goal is to use numerical computations to learn. The code we will write is always very easy. Never more than a few dozen lines of code. The goal of writing the code is to learn from the results we obtain. Keep that in mind.
Lab 1: Discrete Complex Exponentials
Where shall we begin? From the very beginning. And in the beginning there was nothing. But then there was time. Our exploration of information processing starts from an exploration of the notion of time. More precisely, from the notion of rate of change. This is because different rates of change are often associated with different types of information. In a picture of a face, no change means you are looking at hair, foreheads, or cheeks. Rapid change means you are looking at a hairline, a pair of eyes, or a pair of lips. Different vowels are associated to different frequencies. So are musical tones. The lull of the ocean spreads across all frequencies. Weather changes occur over days. Season changes over months. Climate changes over years.
The Fourier transform is the mathematical tool that uncovers the relationship between different rates of change and different types of information. In order to define Fourier transforms, which we will do in Lab 2, we first have to study discrete complex exponentials and some of their properties. This is the objective of this Lab.
Lab 2: Discrete Fourier transform (DFT)