Diverse forms of opposition are already existent virtually everywhere around us but the nature and significance of oppositeness is well understood only in specific contexts within the fields of philosophy, linguistics, psychology, logic and physics. The interplay between entities and opposite entities is apparently fundamental for maintaining universal balance. However, it seems that there is a gap regarding oppositional thinking in engineering, mathematics and computer science. Although many opposition-based techniques exist in these fields, the oppositional properties they employ are not usually directly studied. A better understanding of opposition could potentially establish new search, reasoning, optimization and learning schemes with a wide range of applications. For instance, improving convergence rate for hyperdimensional problems could be improved through the use of oppositional strategies. A large number of problems in engineering and science cannot be approached with conventional schemes and are generally handled with intelligent techniques such as evolutionary, neural, reinforcing and swarm-based techniques. These methodologies, however, suffer from high computational costs. In this work, the outlines of opposition-based computing, a proposed framework for computational intelligence, will be introduced. The underlying idea is simultaneous consideration of guess and opposite guess, estimate and opposite estimate, viewpoint and opposite viewpoint and so on in order to make better decisions in a shorter time, something that all aforementioned techniques could benefit from. The goal is to better understand the role of opposition within a computational intelligence context with the intention of improving existing or developing more powerful and robust approaches to handle complex problems. Due to its diversity, it is difficult, if not impossible, to uniquely and universally define the nature and the scope of what we call opposition. However, there is no doubt that we need a mathematical formalism if we are going to, at least to some degree, exploit the oppositional relationships in real-world systems. Hence, we attempt to establish a generic framework for computing with opposites in this chapter, a framework which may not mathematically capture the very essence of oppositeness in all systems accurately but it will be, as we hope, a point of departure for moving toward opposition-based computing. The ideas put forward in this chapter may not be shared by all those who work on some aspect of opposition (and usually without labeling it opposition), nevertheless, we believe that this framework can be useful for understanding and employing opposition.