In this paper, we review research on computational mechanisms for
complex reasoning. We start by defining the reasoning task in broad
terms and discussing elements that arise when addressing it. Next
we consider different types of multi-step reasoning problems and
alternative paradigms that vary in their underlying assumptions.
Finally, we discuss some complicating factors that make reasoning
difficult, along with ways that controlled experiments can reveal
strengths and limitations of alternative approaches. Our aim is
to provide readers with a balanced, accessible introduction to the
important area of artificial reasoning.