Fuacta Univ. Ser.: Elec. Energ., vol. 21, no. 1, April 2008, 121-123

Book Reviews


Tony Gaddis
STARTING OUT WITH PROGRAMMING LOGIC & DESIGN
Soft cover, pp. 567, plus XVIII
Pearson Education, Inc., Boston, 2008
ISBN-13: 978-0-321-47127-7

In General About the Book

Computer programs are collections of ordered operations that tell a computer how to interact with the user, interact with the computer hardware and process data. Typically, the program is put into a storage area accessible to the computer. The computer gets one instruction and executes it and then gets the next instruction. The storage area or memory can also contain the data that the instruction operates on. When you create a program, you write it using some kind of computer language. Your language statements correspond to the source program. After that the user compiles the source program and the result is called an object program, i.e. object module. The object program contains the string of 0s and 1s called machine language, often referred to as a low-level language since the code directly manipulates the hardware of the computer.

This book is a language independent book that introduces students to programming concepts and logic. It is divided into fourteen chapters, four appendices, a comprehensive Index, and a CD which includes Raptor v3.8 (a flowchart-based programming environment), Alice (free software), and answers to checkpoint questions. In the following we provide an overview and analysis of each chapter of the book. A global analysis is given at the end of the review.

Chapter Content

Chapter 1, Introduction to Computers and Programming, pp. 1-27, presents fundamental concepts of computer hardware and writing programs in high-level languages.

Chapter 2, Input, Processing, and Output, pp. 29-74, concentrates on program development cycle, data types, variables, and sequence structures. In order to create efficient program students learn how to use pseudo-code, read input data, perform mathematical operations, and produce output.

Chapter 3, Modules, pp. 75-114, points to the benefits of using modularized programs and top down design approach.

Chapter 4, Decision Structures and Boolean Logic, pp. 115-161, describes relational operators and Boolean expressions, and shows how to control the flow of a program by using decision structures. More details concerning dual alternative decision structures, comparing strings, nested decision structures, the case structure, logical operators and Boolean variables are given.

Chapter 5, Repetition Structures, pp. 163-215, describes how to use loops in order to create repetition structures. The main themes considered here are with condition controlled loops, count-controlled loops, calculating a running total, and nested loops.

Chapter 6, Functions, pp. 217-256, presents an introduction to function as a module that returns a value back to the port of the program that called it. In addition, the discussion includes details related to writing own functions and using library functions.

Chapter 7, Input Validation, pp. 257-268, deals with the importance of validating input data.

Chapter 8, Arrays, pp. 269-319, shows how to use, manipulate and store a group of items, called arrays, of the same data type together in memory. The hottest topics considered here are with sequentially searching and processing the contents of an array, parallel arrays, 2D, 3D, and multi-dimensional arrays.

Chapter 9, Sorting and Searching Arrays, pp. 321-357, describes both the basics of sorting arrays and searching for data stored in them. More details related to the bubble sort-, selection sort-, insertion sort-, and binary search-algorithms are given.

Chapter 10, Files, pp. 359-409, begins with an introduction to file input and output, continues with using loops to process files, using files, processing records, and concludes the discussion with control-break processing.

Chapter 11, Menu-Driven Programs, pp. 411-457, discusses a menu as a list of operations that are displayed by a program, and explains how student can select one of the operations and the program that will perform it.

Chapter 12, Recursion, pp. 457-477, describes a recursive module as a module that calls itself. More details related to problem solving with recursion and examples of recursive algorithms are given.

Chapter 13, Object-Oriented Programming, pp. 479-524, compares procedural and object-oriented programming practices. Fundamental concepts of classes and objects are considered. In addition, details concerning how to use UML in order to design classes, finding the classes and their responsibilities, the concepts of inheritance and polymorphism are given.

Chapter 14, GUI Applications and Event-Driven Programming, pp. 525-543, show how to the graphical user interface allows the user to interact with the operating system and other programs.

Appendix A, Getting Started with Alice, introduces Alice as software that can be used to reach basic programming concepts using 3D graphics. Appendix B, ASCII/ Unicode Characters, lists the ASCII character set. Appendix C, Flowchart Symbols, presents the flowchart symbols that are used in the book, and Appendix D, Answers to Checkpoint Questions, provides answers to the checkpoint questions that appear at the end of each individual chapter (answers are located on the CD that accompanies the book).

Global Analysis

The book is organized around programming concepts. It introduces the concepts that serve as a basis for many of programming languages. It aims to provide the students with a basic understanding and appreciation of the various essential programming-language constructs, programming paradigms, presentation of all major programming concepts, techniques, and language implementation issues.

I found it surprisingly easy to read. It has a good balance of theoretical and practical descriptions of the concepts covered by it. This book is designed for first-year undergraduate course in computer programming, but is also designed for practitioners and researchers active in the field of programming.

In summary, it is a book that deserves to be on the shelf of every computer scientist.

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