Christopher Strachey described the distinction between parametric polymorphism and ad-hoc polymorphism in 1967, so polymorphism must have already existed then.
Read below for more information:
http://en.wikipedia.org/wiki/Ad_hoc_polymorphism
Basics of Ad-hoc Polymorphism
Ad-hoc Polymorphism (is also known as function overloading or operator overloading) consists in creating multiple functions with the same name but that have different headers. The functions can be differentiated by their parameters', by their type and number. We say that function Foo() is different from Foo(int x) and also Foo(int x) is different from Foo(float x)