programming can also be loads of fun it is an intellectually engaging activity that allows people to express themselves through useful and sometimes remarkably beautiful creations believe it or notmany people actually write computer programs as hobby programming also develops valuable problem-solving skillsespecially the ability to analyze complex systems by reducing them to interactions of understandable subsystems as you probably knowprogrammers are in great demand more than few liberal arts majors have turned couple of computer programming classes into lucrative career option computers are so commonplace in the business world today that the ability to understand and program computers might just give you the edge over your competitionregardless of your occupation what is computer scienceyou might be surprised to learn that computer science is not the study of computers famous computer scientist named edsger dijkstra once quipped that computers are to computer science what telescopes are to astronomy the computer is an important tool in computer sciencebut it is not itself the object of study since computer can carry out any process that we can describethe real question is what processes can we describeput another waythe fundamental question of computer science is simply what can be computedcomputer scientists use numerous techniques of investigation to answer this question the three main ones are designanalysisand experimentation one way to demonstrate that particular problem can be solved is to actually design solution that iswe develop step-by-step process for achieving the desired result computer scientists call this an algorithm that' fancy word that basically means "recipe the design of algorithms is one of the most important facets of computer science in this book you will find techniques for designing and implementing algorithms one weakness of design is that it can only answer the question what is computablein the positive if can devise an algorithmthen the problem is solvable howeverfailing to find an algorithm does not mean that problem is unsolvable it may mean that ' just not smart enoughor haven' hit upon the right idea yet this is where analysis comes in analysis is the process of examining algorithms and problems mathematically computer scientists have shown that some seemingly simple problems are not solvable by any algorithm other problems are intractable the algorithms that solve these problems take too long or require too much memory to be of practical value analysis of algorithms is an important part of computer sciencethroughout this book we will touch on some of the fundamental principles has examples of unsolvable and intractable problems some problems are too complex or ill-defined to lend themselves to analysis in such casescomputer scientists rely on experimentationthey actually implement systems and then study the resulting behavior even when theoretical analysis is doneexperimentation is often needed in order to verify and refine the analysis for most problemsthe bottom line is whether workingreliable system can be built often we require empirical testing of the system to determine that this bottom-line has been met as you begin writing your own programsyou will get plenty of opportunities to observe your solutions in action have defined computer science in terms of designinganalyzingand evaluating algorithms