Sensor to ADC Filter Design Tutorial Suggestions
Okay, first step is anti-aliasing. That's a big deal right there if you don't get that right. To take your example of a photosensor, let's imagine what happens in adverse conditions without an anti-alias filter.

For example, you have designed a battery powered device with a transflective LCD display because it can be seen with a backlight in the dark, and by ambient light in the day. You have a photosensor to switch the backlight off when the ambient light is bright enough, so you save battery charge. To save processor power, (this is not a high bandwidth requirement), you have some spare CPU time every 10ms and sample the photosensor then with the ADC. So far, so good.

Now your product is being used by a nurse, on a night shift, in low ambient light levels, but has a desk lamp to work by. She recently replaced the tungsten bulb, but could only find an eco-CCFL bulb. This fluorescent light flickers at 100Hz, (she's in Europe), which is too fast for her to see. But plays havoc with your product.

When the product is turned on, it samples the photosensor every 10ms and happens to match the peak of the light flicker waveform every sample. It records several consecutive samples of high light level and turns the LCD backlight off. But because the 10ms sampling interval is not synchronised to the a.c. cycle frequency, the sampling wanders in phase and a second or two later, the photosensor is sampling at the bottom of the flicker waveform. After several consecutive samples of low light level, your software turns the LCD backlight on.

The result is that the LCD backlight flashes on and off erratically, at a frequency of precisely the difference between the flicker frequency and your sample frequency. The product is considered faulty and is sent back to you for repair. You test at your bench, by the window, covering and uncovering the sensor and find it works as you expected. But the product IS faulty, it's faulty by design because you didn't listen to Uncle Nyquist.

The Nyquist Sampling Theorem states that you must sample at a frequency of at least twice the highest frequency in the input signal. Put the other way around, you must be sure to filter the input signal to reject any frequencies of half the sample rate or higher, and you must do this BEFORE sampling. Adding a software filter after sampling doesn't save you if you already have a low frequency alias present. By all means use digital filtering to process the sampled data as required by your application, but if you want to know where to start with filter design for sensor sampling, you must begin with correct anti-alias filtering before sampling.

As an extension, I was once caught out writing code for pressure control of a suction device using a small electric pump and a digital pressure sensor. The pressure sensor made a measurement every 10ms or so, but the pump was providing significant pressure fluctuations at awkward frequencies that the sensor was aliasing. There was nothing I could do in the electronics or software, the aliasing was happening inside the sensor itself. In the end, the solution was a pneumatic Nyquist filter at the input to the sensor.

I learned a valuable lesson that day.