Computer Science is a science. As many have said before, Programming is not Computer Science.
The main components of our work also do not involve experiments. I can't think of the last time I had a "Control" and a "Test A", "Test B", etc.
So, it's not a theoretical science. It's not an experimental science. It's not science.
Programming is an art form. We take specifications (usually) and create what are basically literary works. We even have copyright, as authors and musicians do.
Sure... we have methodologies, frameworks, skills, algorithms, a vast set of things you've got to know to be any good. That just makes it a technically challenging art. In the end it comes down to creating a literary work.
Let's take a painter as an example, one that we all should be able to agree very much fits in the artist camp.
A painter does not usually have the same requirements that a programmer has. If you told a painter he needed to do a painting of your wife on a bench in a specific Rembrandt style, with her favorite horse in the background and little blue jays on a pine tree branch overhead... you've just created a specification. I can't see the difference between that and a standard app or web site spec.
A good painter will have acquired many specific skills (a sponge for tree leaves, certain types of brush swirls for this or that) that map to our toolkit skills like SQL for data queries, Gimp for icon or splash screen art, debugging, etc, etc.
Many probably even have grand (in their own head) frameworks or methodologies for how a proper painting should be contructed. (Best canvas, paint types and brands, angle and height from the floor, how to mix the paints and possibly additives to add gloss, longevity...)
Some for this sort of contrived grunt work may even have patterned stencils, stamps, etc for common contructs (code generators, anyone?)
They certainly have Design Patterns and Anti-Patterns. They're just usually not followed with the self-important posturing BS the way they sometimes are in our field.
Now, there's a lot of O(n), O(log n) stuff we're supposed to be thinking about. It's not much different than a sculptor who needs to know a^2 + b^2 = c^2, or how to construct a geodesic dome, etc etc to make whatever neat things he's trying to make this month.
If you actually expand a computer science theory, or try to understand it, etc... You've just taken a break from programming to work on computer science. It's no longer programming.
You can think that "any programmer who considers himself an artist is a disaster waiting to happen" if you want, and hide behind the intense technical mass of stuff you're supposed to know and apply... calling it all science.
It's not. At best, you're applying bits of a science. Most days, you're probably not even doing that.
I can see why you would say this... there are quite frightening "programmers" out there. I empathize. Believe me... I really do.
At the low end, a "code monkey" is not much different than a painter who's told EXACTLY how to do EVERYTHING. An authorized stamp for trees. One True Vendor he should get all supplies from. How to sit properly on the stool. In the morning, he should paint landscapes. Afternoons are for portraits. He's a "paint monkey", but still an artist. A very sad, pathetic excuse for an artist... but an artist just the same.