The need to be able to measure the complexity of a problem, algorithm or structure, and
to obtain bounds and quantitive relations for complexity arises in more and more sciences:
besides computer science, the traditional branches of mathematics, statistical physics, biology,
medicine, social sciences and engineering are also confronted more and more frequently with this
problem. In the approach taken by computer science, complexity is measured by the quantity
of computational resources (time, storage, program, communication) used up by a particualr
task. These notes deal with the foundations of this theory.