Writing generic code that works with any data type. The Compiler generates specific versions of the code (instantiation) for each type used.