Facta Univ. Ser.: Elec. Energ., vol. 19, no. 3, December 2006, pp. 475-478

J. Glenn Brookshear
COMPUTER SCIENCE: An Overview
Softcover, pp. 615
Pearson Addison Wesley, Boston, 2007
ISBN 0-321-43445-5

In general about the book

Surfing on the Web I found several interesting definitions related to the term Computer Science (CS). I should point to three of them.

The first one is the following: "The systematic study of computing systems and computation. The body of knowledge resulting from this discipline contains theories for understanding computing systems and methods; design methodology, algorithms, and tools; methods for the testing of concepts; methods of analysis and verification; and knowledge representation and implementation. www.nitrd.gov/ pubs/bluebooks/1995/section.5.html.

The second one is from Edsger Dijsktra, a pioneering computer scientist, who aptly put it, "Computer science is no more about computers than astronomy is about telescopes." http://www.bellevuelinux.org/computer_science.html.

The third, the more appropriate one, which, in my opinion, covers the subject of this book in the best way is the following: "Computer science is the study of computers--namely, their design (architecture) and their uses for computations, data processing, and systems control. Computer science includes engineering activities such as the design of computers and of the hardware and software that make up computer systems. The field also encompasses theoretical, mathematical activities, such as the design and analysis of algorithms, performance studies of systems and their components by means of techniques like queuing theory, and the estimation of the reliability and availability of systems by probabilistic techniques." http://www.truhlar.org/definition.html.

Recognizing these trends and needs, in COMPUTER SCIENCE: An Overview, the author has an ambitious task to put together almost all topics of modern CS in a comprehensive manner. Areas covered include the major sub-disciplines of CS, such as: (1) architecture (including all levels of hardware design, as well as the integration of hardware and software components to form computer systems), (2) software (the programs, or sets of instructions, that tell a computer how to carry out tasks), here subdivided into software engineering, programming languages, operating systems, information systems and databases, artificial intelligence, and computer graphics, and (3) theory, which includes computational methods and numerical analysis on one hand and data structures and algorithms on the other.

Chapter Content

The material in this book is divided into twelve chapters, six appendices, and an Index. The book is organized as follows:

Chapter 0 ( Introduction, pp. 17- 23) briefly involves the reader with the scope of CS. The discussion begins with the most fundamental concept of CSXthat of an algorithm, continues with the origins of computing machines, and concludes with discussion related to repercussions that CS has on social progress and decisions.

Chapter 1 ( Data Storage, pp. 35- 93) is devoted to data representation and storage of information within a computer. Details related to organization of memory and mass storage, representation of information as bit patterns, storing integers and floating point numbers, techniques for accomplishing data compression and encoding techniques for detection and correction of errors that appear during data recording and data transfer, are presented.

Chapter 2 ( Data Manipulation, pp. 95- 134) covers concepts of data manipulations and communications with peripheral devices. The basic principles of machine language, program execution, arithmetic and logic instructions, communication with peripheral devices, and advanced processing techniques (pipelining and multiprocessing) are given.

Chapter 3 ( Operating System, pp. 135- 162) concentrates on operating systems (OSs) as software packages that coordinate computer's internal activities and its communication with the external world. The discussion begins with the history of OSs. After that, the OS architecture is analyzed and its components are identified. Next, details related to processes creation and administration, and handling competition among processes are presented. The discussion concludes with explanation of the basic concepts of computer system security.

Chapter 4 ( Networking and the Internet, pp. 163- 210) looks at networking and explanations how computers can be linked together in order to share information and resources. The main topics considered here are with networks fundamentals, the Internet and its applications, Internet protocols, and security aspects of computer networks.

Chapter 5 ( Algorithms, pp. 211- 266), in general, deals with the design of efficient algorithms. Its main intent is to involve the reader with the basic concepts of an algorithm, algorithm representation, algorithm discovery, iterative and recursive structures, and efficiency and correctness of algorithms.

Chapter 6 ( Programming Languages, pp. 267- 326) studies programming languages, and during this mainly focuses on commonality as well as the diversity among programming languages and their associated methodologies. The presented discussion explains in greater details the traditional programming concepts, creation of procedural units, language implementation, object-oriented programming, programming concurrent activities, and declarative programming.

Chapter 7 ( Software Engineering, pp. 327- 363) concentrates on techniques and methodologies used in development of large, complex software systems. The discussion begins with identification of the software engineering discipline. After this the concepts of software life cycle and software engineering methodologies are explained. Next, principles of modularity and modeling techniques and notational systems used during the analysis and design stage of software development are presented. In addition, details about software testing (validation testing and defect testing), and development of documentation are given.

Chapter 8 ( Data Abstraction, pp. 356- 406) covers data structures. It begins the study by introducing some basic data structures. The discussion continues with implementation of data structures, the task of storing a list of names in alphabetical orders, manipulation with units called objects that interact with each other in order to accomplish tasks, and using pointers in machine language.

Chapter 9 ( Database Systems, pp. 407- 450) is concerned with database system intended to convert a large collection of data into an abstract tool, which allows the users to search for and extract pertinent items of information in a manner that is convenient to the user. Interesting discussion related to database fundamentals, the relation database model, object-oriented databases, maintaining database integrity, traditional file structures, data mining, and social impact of database technology is given.

Chapter 10 ( Artificial Intelligence, pp. 451- 500) points to the fact that artificial intelligence (AI) represents the study of mental faculties through the use of computational models. The main topics considered here are with intelligence of machines, perception, reasoning, additional areas of research (representing and manipulating knowledge and learning), artificial neural networks, robotics, and the consequences of involving AI.

Chapter 11 ( Theory of Computation, pp. 501- 539) is devoted to the theoretical foundations of CS. The capabilities of computers are investigated. The main themes discussed here are with functions and their computation, Turing machines, universal programming languages, a non-computable function, complexity of problems, and public-key cryptography.

The book contains six appendices. Appendix A gives partial listing of ASCII codes. Appendix B presents the structure of logic circuits used for manipulation with two's complement number representation. Appendix C explains a simple but representative machine language. Appendix D gives a listing of several programs written in Ada, C, C++, C#, Fortran, and Java. Appendix E points to the equivalence of iterative and recursive structures. Appendix F deals with answers to questions and exercises posed in each chapter of this book.

Useful Book for Students

COMPUTER SCIENCE: An Overview is useful book. In general, it provides a comprehensive, systematic, and clear coverage of the basic foundations of computer science.

The main intent of this book is to provide a reader with better understanding of: a) computing systems and methods; b) design methodology, algorithms, and tools; c) methods for testing concepts; d) methods for analysis and verification; and e) knowledge representation and implementation.

The book is a well-written source for fundamental concepts and methods in the area of computer science, and prepares the reader for further reading in the literature associated with this suject. It is a good resource for both undergraduate students in CS, and wider audience of engineers and researchers who in any way use computers and make some kind of applications.

Having in mind the previously mentioned, I highly recommend this book.

Professor Mile Stojčev
Faculty of Electronic Engineering Niš
Aleksandra Mervedeva 14, P.O. Box 73
18000 Niš, Serbia