1Introduction

While looking around and marveling at the technological advancements of this world – both within and without, one cannot help but perceive the intense and intrinsic association of the disciplines of science and engineering and their allied and hybrid counterparts, with the ubiquitous machines called computers. In fact, it is difficult to spot a discipline that has distanced itself from the discipline of computer science. To quote a few, be it a medical surgery or diagnosis performed by robots or doctors on patients halfway across the globe, or the launching of space crafts and satellites into outer space, or forecasting tornadoes and cyclones, or the more mundane needs of the online reservation of tickets or billing at supermarkets, or the control of washing machines, etc., one cannot help but deem computers to be omnipresent, omnipotent, why even omniscient! (Figure 1.1).

In short, any discipline that calls for problem solving using computers looks up to the discipline of computer science for efficient and effective methods of solving the problems in their respective fields. From the view point of problem solving, the discipline of computer science could be naively categorized into the following four sub areas, notwithstanding the overlaps, extensions and gray areas within themselves:

  • Machines: What machines are appropriate or available for the solution of the problem? What is the machine configuration – its processing power, memory capacity, etc. – that would ...

Get A Textbook of Data Structures and Algorithms, Volume 1 now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.