Problem Solving, Abstraction, and Design using C++

Frank L. Friedman / Elliot B. Koffman  
Total pages
March 2010
Related Titles


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.


  • Flexible coverage of programming concepts.
  • Conforms to ANSI/ISO C++ standards, including material on the Standard Template Library (STL).
  • Makes use of proven pedagogical features, including end-of-section self-check exercises and programming exercises, extensive examples, robust step-by-step case studies, clearly marked program style displays and syntax displays, in-depth chapter reviews, and detailed syntax and run-time error discussions in each chapter.
  • Utilizes a dynamic two-color design to draw readers' attention to important material.
  • Includes interviews with leading computer scientists to show the significance of the material to the real world.
  • Introduces objects early while focusing on problem solving and program design.

New to this Edition

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 ( A command-line platform based on the open-source GNU g++ compiler and the emacs program editor is distributed by the University of Colorado ( 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.

Table of Contents

Brief Contents
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
Index 851
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

Back Cover

introductory Programming / C++

Frank L. Friedman & mdash; Elliot B. Koffman

Using the classic Software Development Method advanced by authors Frank Friedman and Elliot Koffman, this Sixth Edition of Problem Solving, Abstraction, and Design Using C++ provides a solid introduction to programming with an emphasis on softeare engineering principles and object-oriented programming using the C++ language. Case studies throughout the book ensure the student's comprehensive understanding of the Software Development Method's five-step problem-solving process.

The Sixth Edition includes:

  • A new chapter exploring the fileds of study in computer science and the career paths available for those who major in computer science-related disciplines.
  • New examples in several chapters to introduce students to graphics programming.
  • New and revised Case Studies.
  • Revised Exercise Sets and Programming Projects.

Save money. Lighten your backpack. Access your textbooks anytime, from anywhere.

This title is available as an eTextbook from CourseSmart. Purchase your assigned textbook as a CourseSmart eTextbook, and stop lugging books around campus! You can also access CourseSmart eTextbooks from your iPhone.

Instructors, request your exam copies online and get instant access. Learn more at


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.