Thursday, September 26, 2013

What is computer science?

“Computer science is no more about computers than astronomy is about telescopes.” 

Edsger Dijkstra, Turing Award (1972), the highest award in computer science. 

Because computer science is such a new scientific field, as compared to sciences such as physics, chemistry, biology and mathematics, many people wonder what computer science is about. Here I have tried to describe briefly what computer science is all about:

Computer science is the science of information processes

Whether it’s about administrative, organizational, social, or even physical or biological processes, computer scientists can model them as information processes. Computer science is a unique interplay between science and engineering, between scientific discoveries and the instruments that the field develops.

We can see computer science as a science that consists of three steps. The first step is the development of the scientific theory. At this level computer scientists try to find answers to fundamental questions such as: What is information? What is computable? What is intelligence? Are there general information laws? Are there general frameworks to describe and measure the impact of programs? Can we find ways to solve problems that even the fastest computers still can not handle?

Modeling is the second step in the methodology of computer science. Algorithms, the computational recipes for the computer, play a crucial role in this second step. Developing efficient algorithms is one of the biggest challenges for computer scientists. An efficient algorithm solves a computational problem in a realistic time period, with realistic memory use, processing speed and power consumption.

In everyday applications algorithms can only be successful if they are embedded in a user-friendly design. Design is therefore the third step in computer science. This third step leads immediately to new questions for the theory of computer science: How can we build complex systems simply? How can we ensure that they work correctly and securely? How can we maintain them over time?