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.