According to the shape of their impulse response, we can already label a filter as belonging to one of the following categories. You have Finite Impulse Response Filters or FIRs for short, Infinite Impulse Response or IIR, causal filters and noncausal filters. FIR filters have an impulse response with a finite support. Because of that and because of how the convolution sum is computed, only a finite number of samples are involved in the computation of each output sample. A typical example of FIR filter is the moving average filter that we've seen before where only capital M samples are non zero. IIR filters on the other hand have an infinite support for their impulse response. So potentially an infinite number of samples are involved in the computation of each output sample. However, perhaps surprisingly, in many cases we can still compute each output sample in a finite amount of time. One notable exception is the class of ideal filter which we will study shortly. For instance, the leaky integrator has an implement supporting pulse response, but due to its algorithmic nature. We can compute each output sample with only three operations. A filter is said to be causal if its impulse response is zero, for n less than zero. Now, if you remember how the convolution sample is computed, convolution involves a time reversal of the impulse response before multiplication with the input. That means that only past values of the input are involved in the computation of the output. So for instance, if your input response is like this and zero, when you compute the convolution sum you time reverse it. And so you will only affect values in the past. Causal filter, because of their dependency only on the past, can work online, they can work in real time. A noncausal filter, on the other hand, is a filter whose impulse response is now zero for at least some negative values of the index. In other words, noncausal filters will need samples from the future in order to be able to compute their current output value. As such they can, of course, not work in real time. But there are applications in which the future is indeed available to a process system. And particular when you do what is called batch processing, namely processing for which all the data is available in advance. A typical case in point is image processing in which the whole picture is available for processing before you start. The moving average filter is again a causal filter. We have developed it in a causal fashion and indeed its impulse response is now zero only for positive or null values of the index. We could develop a known causal moving average if we center the impulse response is 0. And, indeed, if we do so, we would eliminate the delay that you've seen when computing longer and longer averages, because we would compensate the delay by looking at future samples. We could apply this to a set of data that we've already stored in computer memory, for instance.