Oscillating Analog Readings
Without seeing circuit and construction details and oscilloscope traces, it's difficult or impossible to say what the problem is.  It may be due to op amp instability due to a large capacitive load.  It may reflect a beat frequency between some sensor and MCU signals, or aliasing between 60-Hz noise and your data-conversion rate.

Regarding op amp instability, see for example the article Op Amps Driving Capacitive Loads, by Grayson King.  Here is a quote from that article:


  Q. How does capacitive loading affect op amp performance?
  A. To put it simply, it can turn your amplifier into an oscillator. Here's how: [...]


Rather than just connecting that big 3300 μF capacitor to the output pin, perhaps instead try attaching an Active Low Pass Filter to the output, or a unity-gain op amp followed by a Passive Low Pass Filter; etc.  Put big capacitors across power into the UV source and power into the sensor, instead of on the sensor output.

Regarding beat frequencies and aliasing, low-frequency oscillation like that seen in the trace may occur as a difference of two higher-frequency signals, or as a sampling artifact.  To check this out, attach an oscilloscope to the UV source and see if its power consumption oscillates; and/or try a more-rational sampling scheme than that shown in your code.

For example, instead of taking 8 readings within one millisecond in averageAnalogRead() and then waiting 100 ms, perhaps add a delay(1) inside the loop so that readings are spread out slightly more.  Remove the delay(100) from within averageAnalogRead().  Compensate by changing the other delay(100) in loop() to, for example, delay(191) or delay(193).  Try various delay amounts to see if they have an effect on the waveform.