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 (specically computations). Like engineers, they design things, assembling components into systems and evaluating tradeos among alternatives. Like scientists, they observe the behavior of complex systems, form hypotheses, and test predictions.
— Allen B. Downey, autor de Think Java: How to think like a Computer Scientist