ABSTRACT

People use computers because they need help to solve problems. What do you use a computer for? To access e-mail? To type out your history paper? To keep track of the transactions in your checking account? In each of these cases, the computer solves a problem for you: It –gures out how to connect to the Internet, determines how to communicate with your keyboard and display what you type, records deposits and checks written, and maintains your running account balance. •ese computer packages do not develop spontaneously from primordial elements. (At least, no one has witnessed such systems springing into existence from nothing and lived to report the event.) Rather, they emerge from a coordinated e¡ort between hardware engineers and so¤ware developers. Computer packages result from the building of appropriate equipment (hardware), the development of logical techniques (called algorithms) that specify how the problem can be solved, and the translation of these techniques into so¤ware. •e process of problem solving and developing so¤ware requires considerable time and e¡ort, and is the focus of this chapter.