< previous page page_ix12 next page >

Page ix12
erly be called OBPobject-based programming. OBP entails the use of existing, externally supplied C++ classes, as-is. Although OBP is useful in allowing the student to construct programs with interesting (for example, graphical) objects, true OOP requires much more: design and implementation of abstract data types (ADTs), the analysis and design of inheritance hierarchies, and the use of polymorphism in the form of run-time binding of operations to objects.
The chapter organization of Programming and Problem Solving with C++ reflects a transitional approach to OOP. Although we provide an early preview of object-oriented design [Chapter 4), we delay a focused discussion until Chapter 16. The sequence of topics in Chapters 1 through 15 mirrors our belief that OOP is best understood after a firm grounding in algorithm design, control abstraction, and data abstraction. As one reviewer of the book manuscript, who was originally critical of the delayed introduction to OOP, stated in a subsequent review, The logical flow of the chapters is excellent. In the earlier review, I commented on the late introduction to OOP. I now (having nearly completed teaching a CS1 with C++) believe that is a good strategy.
Synopsis
Chapter 1 is designed to create a comfortable rapport between students and the subject. Because many students now enter the introductory course with some prior exposure to computers, Chapter 1 moves rather quickly into meaty topics. It includes a section on problem-solving techniques and applies them immediately in a case study. By the end of Chapter 1, students have a basic knowledge of what computers are, what programming is, and the techniques used in problem solving.
Because Chapter 2 is the student's first look at syntax, we include a section on metalanguages, which describes both BNF and syntax diagrams. Our experience is that students miss many of the subtleties of language syntax when it is presented by the traditional syntax diagrams. More generally, beginners have trouble translating from a metalanguage to programming language constructs when the metalanguage is formulated much differently from the programming language. Thus, Chapter 2 also introduces the syntax templatea metalanguage every bit as rigorous as the syntax diagram but one that closely resembles C++ constructs.
The goal of Chapters 2 and 3 is to bring students to the point where they can design a simple program independently.In fact, students should be able to do so after reading Chapter 2. Because there are so many concepts and rules to learn before even the simplest program may be written, the chapter concludes with a streamlined discussion of program entry, correction, and execution. Students then can reinforce the new concepts by trying them on the computer. Chapter 3 fleshes out the rudiments of C++ with more complex expressions, function calls, and output. Unlike many books that detail all of the C++ data types and all of the C++ operators at once, these two

 
< previous page page_ix12 next page >