Optical computing is an inherently multidisciplinary subject whose study routinely involves a spectrum of expertise that threads optical physics, materials science, optical engineering, electrical engineering, computer architecture, computer programming, and computer theory. Applying ideas from theoretical computer science, such as analysis of algorithms and computational complexity, enables us to place optical computing in a framework where we can try to answer a number of important questions. For example,which problems are optical computers suitable for solving? Also, how does the resource usage on optical computers compare with more standard (e.g. digital electronic) architectures? The physical principles behind some efficiencies in optical computing are outlined here... more