The goal of this book is to teach you to think like a computer scientist. This way of thinking combines some of the best features of mathematics, engineering, and natural science. Like mathematicians, computer scientists use formal languages to denote ideas (specically computations). Likeengineers, they design things, assembling components into systems and evaluating tradeoffs amongalternatives. Like scientists, they observe the behavior of complex systems, form hypotheses, andtest predictions.The single most important skill for a computer scientist is problem solving. Problem solving meansthe ability to formulate problems, think creatively about solutions, and express a solution clearly andaccurately. As it turns out, the process of learning to program is an excellent opportunity to practiceproblem-solving skills. That's why this chapter is called, "The way of the program."On one level, you will be learning to program, a useful skill by itself. On another level, you will useprogramming as a means to an end. As we go along, that end will become clearer.