- Publication date:
Read an Excerpt
This textbook is intended for a first course in problem solving and program design using Pascal. It assumes no prior knowledge of computers or programming, and for most of its material, high school algebra is sufficient mathematics background. A limited knowledge of discrete mathematics, however, is desirable for certain sections.
This edition, like its predecessors, closely follows the recommendations of the ACM Computing Curricular Task Force for CS1 and CS2 and the ACM/IEEE-CS Joint Curriculum Task Force. We emphasize problem solving, abstraction, and software engineering throughout the text.
In preparing the revision, we have made every effort to simplify the presentation wherever possible, striving for shorter, more focused chapters. For example, we have reorganized the coverage of arrays and records into a three-chapter sequence: one-dimensional arrays (Chapter 10), multidimensional arrays (Chapter 11), and records (Chapter 12).
The connection between good problem solving skills and effective software development is established early in Chapter 1 (Overview of Computers and Programming). The software development method, introduced in Chapter 2 (Problem Solving and Pascal), is used to solve the first case study and is applied consistently to all the case studies of the text.
Chapter 3 (Functions and Procedures) continues the emphasis on problem solving by discussing top-down design, divide-and-conquer, solution by analogy, and generalization of a solution. An important section of this chapter demonstrates how a Pascal program can be derived by editing the documentation that resultsfrom systematically following the software development method.
The text covers many aspects of software engineering. Discussions of program style issues appear throughout in special displays. The concept of a program as a sequency of control structures is introduced early in Chapter 4 (Selection Control Structures:
caseStatements). Several chapters include sections that discuss algorithm tracing, debugging, and testing. Chapter 9 (Software Engineering) is a complete unit on software engineering. This chapter discusses the system/software life cycle (SLC), prototyping, and programming teams. The in-depth coverage of all phases of the SLC includes more discussion of informal techniques for program testing (e.g., glass box versus black box testing, integration testing, structured walk-throughs) and formal methods for program verification as well as a discussion of loop invariants. This chapter also reviews procedural abstraction and introduces data abstraction. Chapter 9 concludes with a discussion of professional ethics.
Although there is no universal agreement on when to introduce procedures and procedure parameters, most educators do agree on the following points: Procedures should be introduced as early as feasible, procedures should never process global variables (side effects), and procedure parameters are a difficult concept for students to understand. The approach taken in the text is to discuss the importance of program modularization and reusability in Chapter 3 by introducing the standard functions, structure charts, and procedures without parameters. The chapter motivates the use of procedures as program building blocks by showing some applications of procedures without parameters (for example, by displaying long lists of user instructions and drawing diagrams). Chapter 3 then discusses, in Section 3.5, the need for parameters and the limitations of procedures without parameters, thereby providing a foundation for the later study of parameters.
Chapter 6 (Modular Programming) completes the study of procedures and functions, covering all aspects of parameter lists. The chapter begins by discussing procedures with only value parameters, then value and variable parameters, and finally functions. An optional section at the end of the chapter introduces recursive functions.
Some instructors prefer to cover procedures with and without parameters together. To this end, you can easily rearrange the sequence of topic coverage. If you want to wait until Chapter 6 to cover procedures with and without parameters, defer Sections 3.4 and 3.5 until then. Conversely, if you want to cover procedure parameters earlier, cover Section 6.1 and 6.3 (variable parameter lists) right after Chapter 3 and cover Sections 6.2 and 6.3 (variable parameters, syntax of parameter lists) after completing the first three sections of Chapter 4 (control structures, Boolean expressions, and the
Data Abstraction and ADTs
The software engineering chapter (Chapter 9) introduces data abstraction, providing the first example of an abstract data type (ADT). Data abstraction and ADTs are used in the advanced topics portion of the textbook, starting in Chapter 12. We show how to implement ADTs as VAX Pascal modules in Appendix D and as Turbo Pascal units in Appendix E.
Interviews with Computer Scientists
A popular feature of the last edition was a collection of interviews with notable computer scientists (Adele Goldberg, David Patterson, and Patrick Winston, among others), which were placed throughout the text. These interviews alert beginning students to the breadth of the subject area, providing them with a description of issues of concern in several fields of computer science (for example, artificial intelligence, operating systems, databases, user interfaces) and some idea of the background preparation needed for success in these fields. We have updated these interviews and provided several new ones.
Coverage of Theoretical Concepts
This edition covers theoretical topics recommended by the curriculum committee report. An optional section in Chapter 7 introduces numerical computation and iterative approximations. Chapter 9 provides a discussion of program verification, focusing on assertions and loop invariants. Chapter 10 introduces searching and sorting of an array followed by a discussion of algorithm analysis and Big-O notation.
We employ several pedagogical features to enhance the usefulness of this book as a teaching tool. Discussion of some of these features follows. Approximately one-third of all exercises, review questions, and programming projects are new to this edition.
End-of-Section Exercises: Most sections end with a number of self-check exercises, including exercises that require analysis of program fragments as well as short programming exercises. Answers to odd-numbered self-check exercises appear at the back of the book; answers to the rest of the exercises are provided in the Instructor's Manual.
End-of-Chapter Exercises: Each chapter ends with a set of quick-check exercises and answers. Immediately following are chapter review questions, whose solutions appear in the Instructor's Manual.
End-of-Chapter Projects: Most end-of-chapter projects include one or two special programming project pairs in which the second of the pair requires a modification to the solution of the first project. Solutions to the first project in each pair are available from Addison-Wesley. All project solutions appear in the Instructor's Manual.
Examples and Case Studies: The text contains a large number and variety of programming examples. Whenever possible, examples contain complete programs or procedures rather than incomplete program fragments. Each chapter contains one or more substantial case studies that are solved following the software development method.
Syntax Displays: The syntax displays describe the syntax and semantics of each new Pascal feature and then provide examples. Several syntax diagrams appear in the body of the text; an appendix contains a complete collection of syntax diagrams.
Program Style Displays: The program style displays discuss issues of good programming style.
Error Discussions and Chapter Review: Each chapter ends with a section that discusses common programming errors. Chapter reviews include a table of new Pascal constructs.
Coverage of Advanced Topics
The material in Chapters 1 through 12 normally will be covered in the first semester of a course in programming methods. The book contains five additional chapters that cover advanced topics normally studied in the second semester or in the first semester of an accelerated course. This material may be used as a reference for students continuing their study of computer science and, in some cases, may be used as the primary text for a second-semester course. There is certainly sufficient material for a two-quarter sequence. Advanced topics covered include:
- Recursion (Chapter 13)
- Sets (Chapter 14)
- External data structures: files (Chapter 15)
- Pointers and linked lists (Chapter 16)
- Dynamic data structures (Chapter 17)
Appendixes and Supplements
Appendixes and Pascal Compilers: The text concludes with separate appendixes covering Pascal language elements, syntax diagrams, and character codes. The appendixes describe how to use VAX Pascal modules and Turbo Pascal units to implement abstract data types, and how to use three Pascal compilers for personal computers (Dr. Pascal (tm), PcPix (tm)- available free to users of this book - and Turbo Pascal(tm)). There is also an appendix containing a program that incorporates most Pascal language constructs.
Program Files: For case studies, all procedures and functions are incorporated in a single program file. Also available are files containing solutions to selected programming projects. These solutions serve as the starting point for follow-on projects. These files can be accessed via ftp from Addison-Wesley and loaded into the Turbo Pascal environment. An icon like the one in the margin appears alongside each program module or project indicating the name of the disk directory (e.g., CHAP2) and file (e.g., METRIC.PAS) containing the program.
To access these files, log in (using anonymous as your log-in id) to ftp aw.com. The files are located two subdirectories down from the main directory. Change directories following the path ftp.aw.com/cseng/authors/koffman/Pascal5e. Those unfamiliar with ftp procedures can refer to the explicit instructions included in the Instructor's Manual.
Instructor's Manual: An Instructor's Manual is available through your Addison-Wesley sales representative. Use reference number 0-201-93389-6 when ordering. All material in the Instructor's Manual, plus test questions, solutions to programming projects, and transparency masters are available on-line. For more information, send mail to firstname.lastname@example.org.
The principal reviewers were most essential in suggesting improvements and finding errors. They include:
University of Texas- Dallas
University of Southern Alabama
Texas A&M University
Mississippi State University
Mary Lou Hines
University of Missouri - Kansas City
University of Kansas
Colorado State University
In addition to reviewing the manuscript, Charles Owen, Dartmouth College, contributed many exercises and projects new to this edition. Also, I would like to acknowledge the contributions of James C. Pleasant, Tennessee State University, to the section on program verification.
We are also grateful to the many teachers who participated in telephone interviews or completed course surveys for Addison-Wesley's market research department. The information this research provided helped to shape the book's organization and pedagogy. They include:
Utah State Unversity
Riverside Community College
Georgia State University
Lawrence J. Henschen
Winston-Salem State University
SUNY - Oneonta
Tartleton State University
University of Michigan - Flint
Winston-Salem State University
Maria C. Kolatis
Country College of Morris
Southern College of Tech
Onendaga Community College
Tarrant County Junior College
Stephen G. Landry
Seton Hall University
Wright State University
Phillip La Plante
Miami-Dade Community College
Northeast Louisiana University
Camden County College
Chestnut Hill College
Barbara Bernal Thomas
Southern College of Tech
Mary Allice Muraski
University of Wisconsin - River Falls
Texas A&M University - Corpus Christi
Rockland Community College
Mountain View College
McNeese State University
Cedar Crest College
Francis Marion University
Charleston Southern University
I would like to thank three Temple University students for their valuable contributions. Christian J. Polizzi tested and made corrections to all the programs, proofread and indexed the text, and also prepared solutions to exercises. Donna Chrupcala prepared solutions to exercises and made many improvements to exercises. Bill Jones provided several suggestions for graphics examples. Also, I would like to thank my daughter, Robin Koffman, computer science teacher at Haverford School, Haverford, Pennsylvania, for carefully proofreading the page proofs.
The personnel at Addison-Wesley responsible for the production of this book worked diligently to meet a very demanding schedule. My editor, Lynne Doran Cote, was closely involved in all phases of this project. She was ably assisted by Maite Suarez-Rivas, who did an excellent job of coordinating the writing and reviewing process and trying to keep me on a very tight schedule. The development editors, Elizabeth Zayatz and Marjorie Singer-Anderson, provided valuable suggestions for improving the textbook. John Walker supervised the production of the book, while Anita Wagner coordinated the conversion of the manuscript to a finished book. I am grateful to all of them for their fine work.
Most Helpful Customer Reviews
See all customer reviews