Optical Signal Processing: Fundamentals