We use digital filters  on many occasions without our knowledge. The main reason for this is that any sequence of numbers if multiplied1 and added constitutes a simple linear filter. The temperature of a bulb follows a similar law but with some more modifications. Computing compound interest has a similar structure.
Such filters are nothing but a difference equation with or without feedback. For a software engineer it is a piece of code; for a hardware engineer it is an assembly of shift registers, adders, multipliers and control logic.
Converting a difference equation to a program is fairly simple and routine. The key step is to choose the coefficients of the difference equation so they suit your purpose. There are many methods available in the published literature [1, 2] for obtaining the coefficients in these difference equations. There are also many powerful software packages2 available to assist the designer in the implementation.
There is another class of design approach required in many practical situations, where we need to obtain the filter coefficients given the measured impulse response of the filter (hk), or given an input (uk) and an output sequence (yk), or given the amplitude and phase response of the filter. Problems of this type are known as inverse problems. For a difference equation, obtaining the output corresponding to a given input is relatively easy and is known as the forward problem.
3.1 How to Specify a Filter
Conventionally filters ...