This course is an introduction to the concept of a quantum computer. It
uses quantum-mechanical principles and generalizes
classical computers. It has been demonstrated that such a computer can
solve in polynomial time problems that are considered
to be hard for a classical computer such as factoring large integers or
solving the discrete logarithm problem (this is Shor's algorithm).
The security of virtually all public-key cryptography used in practice
right now relies on the hardness of these problems
and a quantum computer would break those cryptosystems. It has also been
found that such a computer is able to search in an unstructured
set much more efficiently than a classical computer (this is Grover's
We will cover in this course the bases of quantum computation and
present the main quantum algorithms that offer a speedup over classical
We will also  cover other applications of quantum mechanics, such as
simulating physical systems or quantum cryptography. The latter exploits
the laws of quantum physics to establish the security of certain
cryptographic primitives, such as key distribution protocols.