Let us first look at what science, art & creativity mean.
Science is systematized knowledge derived from observation, study, and experimentation carried on in order to determine the nature or principles of what is being studied.
Art is the product of imagination and creativity, particularly in a physical form.
Creativity is the ability to come up with new and exciting ideas.
Computer Programming is both an art and a science.
It is an art because computer programming involves the way information is presented to the user, user friendliness of an application program or a programming language, way documentation is crafted & the way creativity is embedded into a program. It is also a science because a lot of study, analyzing, experimenting, correcting and redesigning is required.
Lets take a very familiar example of Compiz itself. You can see the gravity, elasticity, friction, effects such as fire & water simulation and other creative effects well programmed. Also as Compiz evolved, algorithm changes, experimenting, reduction of resource consumption, testing and a lot of redesigning was involved. I hope this gives a generic explanation justifying computer programming to be considered as both an art and science.
Have a look at Compiz in action :)
References: Starting out with Java by Toni Gaddis & yourdictionary.com