In my class, I was asked to write a short essay (and get "expert opions from the internet) about whether programming is an art or a science. Do you have an opinion on this? Or, do you happen to know where I can look to get an expert opinion? Thanks!
I can give you an opinion, which may help you a little in your essay, but you will need other opinions and some ideas of your own to make a complete essay.
Is programming an art or a science? It would be too simplistic to say that it is exclusively one or the other. Programming itself is based on science, specifically computer science and mathematics. Here are some examples. The analysis of the performance of algorithms is a major part of computer science using theorems and mathematics to determine how algorithms perform as the amount of data on which they operate grows. The workings of relational databases are based on a branch of mathematics called set theory and methods to make efficient databases have been developed from set theory. As programmers, we keep computer science in mind when writing programs.
Programming is also a craft which uses knowledge from computer science. I hesitate to use the word art, but you can substitute art for craft if you like. Like all crafts, the quality of your program depends on the time and attention to detail that you put into it. Two programs may solve the same problem, but the one written by the more attentive programmer may perform faster, may continue to operate reliably when given invalid input, and may have a user interface which is pleasant to use. A badly crafted program may crash when given bad input and may be tedious to use.
Organizing a program is also a craft. There are well established principles to follow but those principle have been learned by programmers through trial and error and are not really scientific principles. For example, when to use design patterns, which design patterns to use, how to use inheritance, and how to create good functions, are all skills obtained through experience and generally not though the scientific method.
Finally, there is inspiration. Developing a new algorithm is often a work of requiring intuition, or genius, much like proving a theorem, or deducing a law of nature. Maybe the few people operating at that level could be called artists.
I hope that helps you out