The Way of the Program
======================

The goal of this book is to teach you to think like a computer
scientist. I like the way computer scientists think because they combine
some of the best features of Mathematics, Engineering, and Natural
Science. Like mathematicians, computer scientists use formal languages
to denote ideas (specifically computations). Like engineers, they design
things, assembling components into systems and evaluating tradeoffs
among alternatives. Like scientists, they observe the behavior of
complex systems, form hypotheses, and test predictions.

.. index::
   single: problem-solving

The single most important skill for a computer scientist is
**problem-solving**. By that I mean the ability to formulate problems,
think creatively about solutions, and express a solution clearly and
accurately. As it turns out, the process of learning to program is an
excellent opportunity to practice problem-solving skills. That’s why
this chapter is called “The way of the program.”
