  Quantum computers require quantum logic, something fundamentally different to
classical Boolean logic. This difference leads to a greater efficiency of
quantum computation over its classical counter-part. In this review we explain
the basic principles of quantum computation, including the construction of
basic gates, and networks. We illustrate the power of quantum algorithms using
the simple problem of Deutsch, and explain, again in very simple terms, the
well known algorithm of Shor for factorisation of large numbers into primes. We
then describe physical implementations of quantum computers, focusing on one in
particular, the linear ion-trap realization. We explain that the main obstacle
to building an actual quantum computer is the problem of decoherence, which we
show may be circumvented using the methods of quantum error correction.
