The discipline of computer science is often misunderstood by those outside of it. Many believe that computer scientists are simply programmers. Others believe that the main business of computer scientists is to design and build computers. Still others believe that computer scientists repair and maintain computer systems. While it is true that there are computer scientists who are involved in these pursuits, none of them are the main focus of computer science. These misconceptions are not new. In fact, some time ago, to address misconceptions about computer science, a famous computer scientist, Edsger Dijkstra, once said, "“Computer science is no more about computers than astronomy is about telescopes.”
So just what IS computer science? At the core of computer science is the development of optimal algorithms and then instantiating them as computer programs that instruct computers how to go about solving problems that are either too complex, too large in scope, too difficult to solve, or simply too repetitive to solve by other means.
The process of solving a problem begins with developing a clear specification of the problem. Once the problem is well-understood, the next step is to develop a generally applicable solution, an algorithm, that details logically how to solve the problem. Next, one implements the proposed solution in the context of some particular computer system by writing a program that instructs the computer how to carry out the algorithm, given the data for a particular instance of the problem. Finally, one attempts to improve the algorithm and the program that instantiates it, until the solution is the best that it can be.