In mathematics, category theory deals in an abstract way with mathematical structures and relationships between them: it abstracts from sets and functions to objects liked in diagrams by morphisms or arrows. One of the simplest examples of a category (which is a very important concept in topology) is that of groupoid, defined as a category whose arrows or morphisms are all invertible. Categories now appear in most branches of mathematics, some areas of theoretical computer science where they correspond to types, and mathematical physics where they can be used to describe vector spaces. Category theory provides both with a unifying notion and terminology. Categories were first introduced by Samuel Eilenberg and Saunders Mac Lane in 1942 45, in connection with algebraic topology. Category theory has several faces known not just to specialists, but to other mathematicians. A term dating from the 1940s, "general abstract nonsense", refers to its high level of abstraction, compared tomore classical branches of mathematics. Homological algebra is category theory in its aspect of organising and suggesting manipulations in abstract algebra.