Optical Code Division Multiple Access (Fundamentals and Applications)