Problem Solving, Abstraction, and Design Using C++ presents and reinforces basic principles of software engineering design and object-oriented programming concepts while introducing the C++ programming language. The hallmark feature of this book is the Software Development Method that is introduced in the first chapter and carried throughout in the case studies presented.
chapter 0: Computer Science as a Career Path 1
chapter 1: Introduction to Computers, Problem Solving, and Programming 15
chapter 2: Overview of C++ 53
chapter 3: Top-Down Design with Functions and Classes 117
chapter 4: Selection Structures: if and switch Statements 197
chapter 5: Repetition and Loop Statements 259
chapter 6: Modular Programming 333
chapter 7: Simple Data Types 387
chapter 8: Streams and Files 443
chapter 9: Data Structures:Arrays and Structs 487
chapter 10: User-Defined Classes 565
chapter 11: Data Abstraction and Object-Oriented Design 627
chapter 12: Recursion 691
chapter 13: Pointers and Dynamic Data Structures 729
chapter 14: Multiprocessing Using Processes and Threads 795
The following are available online:
Appendix A ASCII Character Set
Appendix B Reserved Words and Special Characters
Appendix C Selected C++ Library Facilities
Appendix D Operators
Appendix E A Brief Introduction to Inheritance and Polymorphism
Answers to Odd-Numbered Questions
New to the Sixth Edition
Students will benefit from a variety of new content, including:
- Graphics coverage implemented throughout the book. Many Computer Science faculty have recommended the use of graphics to help motivate the study of introductory programming and as a vehicle to help students understand how to use libraries and to call functions. The authors agree with this viewpoint and have included several optional sections with graphics examples in this edition. The new graphics sections include:
- Section 3.8: Introduction to Computer Graphics
- Section 5.10: Loops in Graphics Programs
- Section 7.6: Using Type char Data to Control a Graphics Program
- Section 9.12: Graphics Programs with Arrays
To reduce the overhead required to introduce graphics, they decided to use WinBGIm (Windows BGI with mouse), which is a package based on the Turbo Pascal BGI (Borland Graphics Interface) library. WinBGIm was created to run on top of the Win32 library by Michael Main and his students at the University of Colorado. Several development platforms appropriate for CS 1 courses have incorporated WinBGIm. Quincy (developed by Al Stevens) is an open-source student-oriented C++ IDE that includes WinBGIm as well as more advanced libraries (http://www.codecutter.net/tools/quincy). A command-line platform based on the open-source GNU g++ compiler and the emacs program editor is distributed by the University of Colorado (http://www.codecutter.net/tools/winbgim). WinBGIm is also available for Bloodshed Software’s Dev-C++ and Microsoft’s Visual Studio C++.
- New Chapter 0 is designed to elucidate the opportunities and structures of the field of computing to introductory students. The authors hope this chapter encourages students to consider a major or minor in computing by illustrating a world in which they can envision themselves.
- Reorganization of coverage of multidimensional arrays and arrays of structs. These topics were moved from Chapter 11 (Data Abstraction and Object-Oriented Design) to Chapter 9 (Arrays and Structs) to keep all coverage of arrays and structs in one chapter and to enable students to complete their study of procedural programming topics before learning how to write classes.
- New Section 7.6 on iterative approximations including a case study on finding roots of an equation.
- New case study in Chapter 11 (An Address Book for an email Provider) that uses the C++ vector class as its underlying data structure.
- New end-of-section exercises and updated case studies.
- New end-of-chapter quick-check and review exercises and new programming project assignments including graphics programming assignments.
Elliot Koffman is a professor of computer and information science at Temple University. He is one of the country's foremost CS educators, a former chairman of the ACM Task Force for introductory programming methods courses, and the co-author of Problem Solving, Abstraction, and Design, Problem Solving and Program Design in C, (both with Pearson) Objects, Abstraction, Data Structures and Design Using C++, and Objects, Abstraction, Data Structures and Design Using Java Version 5.0 (both with John Wiley & Sons).
Dr. Frank L. Friedman is Professor and Chairman of Computer and Information Science at Temple University. He received M.S. degrees from Johns Hopkins University and Purdue University and his Ph.D. in Computer Science from Purdue University. Dr. Friedman is the co-author of Problem Solving, Abstraction, and Design Using C++ and other textbooks on programming in Fortran and Basic. His current research and instructional interests are in software engineering, specifically object-oriented paradigms for software design.