A basic object in mathematics is the set of certain functions on a space, for example continuous functions on a topological space or differentiable functions on a manifold. A presheaf is a first generalization of this notion, which is easily defined but can have unexpected properties. Sheaves are presheaves which behave nicely. This definition leads to some technical difficulties. However, it is just this difficulty which allows us to define sheaf cohomology. Finally one can show that for many spaces sheaf cohomology agrees with singular cohomology.