What can be automated?

We want to know when a computer will be a useful tool, how to solve problems using a computer, how to evaluate the quality of our solutions, and how to establish confidence in the correctness of solutions. Computer science begins with efforts to answer these four questions:

  • For what kinds of questions can I write a program that will produce
    the answers?
  • Given a question for which I can write programs that will produce the answer, how do I write the program?
  • If we ask several people to write programs that solve a given problem and let them work independently, we should expect our
    programmers to deliver non-identical software. Given several programs that produce the answer for the same question, how do I select the best program?
  • If I am given a program, how can I be sure that the program solves exactly the problem we set out to solve.