Touch of class typos
Typos for "Touch of Class" draft
How to report a typo
Report it under the appropriate chapter title below. Please include the original section number. The page number is less important as it changes. The best is to copy-paste the relevant text extract and mark the faulty word(s), for example by **...**. It is convenient to show the extract as a display (start lines with spaces) and also, if you wish, to give your name.
For example:
In section 16.1, just after the first figure: Money, Pass, Map, Louvre, Orsay Money, Pass, **Louvre, Map**, Orsay Money, Map, Pass, Louvre, Orsay The second one is wrong. -- Luchin Doblies, 1.12.2008.
(Indeed Luchin Doblies reported this error -- thanks! BM.) The entry should appear in the section for the corresponding chapter (it does now). I am sorry that I will not be able to respond to individual comments, but I will consider all reports and correct the text as needed.
As errors get corrected I strike them out.
Preface etc.
from Draft 22.02, 23 August 08 19:15 (Santa Barbara) page v, section Preface. in the 'note' clause of the class PREFACING. replace: "] by: ]" -- Eric Bezault, 12 December 2008
from Draft 22.02, 23 August 08 19:15 (Santa Barbara)
page xiii, section student_preface/Abstraction. middle of second paragraph. replace: you'll been encouraged by: you'll be encouraged -- Eric Bezault, 12 December 2008
from Draft 22.02, 23 August 08 19:15 (Santa Barbara)
page xv, section instructor_preface. second paragraph, third bullet. text: Eiffel and Design by Contract action: put the last letter of "Contract" in bold. -- Eric Bezault, 12 December 2008
from Draft 22.02, 23 August 08 19:15 (Santa Barbara) page xxi, section student_preface/OUTSIDE-IN: THE INVERTED CURRICULUM/The supporting software. middle of second paragraph. replace: In the seond week by: In the second week -- Eric Bezault, 12 December 2008
from Draft 22.02, 23 August 08 19:15 (Santa Barbara) page xxv, section student_preface/TECHNOLOGY CHOICES/Eiffel and Design by Contract. right margin. replace: at tinyurl.com/cq8gw.. by: at tinyurl.com/cq8gw. action: remove extra dot. -- Eric Bezault, 12 December 2008
from Draft 22.02, 23 August 08 19:15 (Santa Barbara)
page xxix, section student_preface/TECHNOLOGY CHOICES/Why not Java?. replace: university context,it is meant by: university context, it is meant action: space after comma. -- Eric Bezault, 12 December 2008
from Draft 22.02, 23 August 08 19:15 (Santa Barbara)
page xxxiv, section student_preface/TOPICS COVERED. paragraph starting with "Part III" text: It makes no attempt at action: missing end of sentence. -- Eric Bezault, 12 December 2008
1 The industry of pure ideas
page 5, section 1.1: Computers and related devices are called hardware, indicating that — although they are getting ever lighter — computers are the kind of machine that will hurt your feet. Programs **and all that relates to them** are by contrast called software, a word made up in the 1950s when programs emerged as topic of interest. Comment: one may argue that hardware may relate to hardware (depending on the definition of the relation). As the point is to separate the two concepts, to avoid confusion I would drop **and all that relates to them**. -- MP, 8/2/2009
page 11, picture caption: **(d) GPS navigation system**. For consistency with the iPhone, you may consider adding that it is a Garmin gps. -- MP, 8/2/2009
page 13, towards the end: This book emphasizes throughout, along with practices that **make your programs good for the computer** — for example, designing programs so that they will run fast enough —, practices that make them good for human readers. Remark: The way in which the sentence is formulated is not smooth and crystal clear to me. A suggestion could be: This book emphasizes throughout, along with programming practices that put to good use a computer processing power, practices that make programs understandable by human readers. -- MP 8/2/2009
page 14, at the end of box Touch of folk history: This did not deter **the programmer**: “See the holes? They are the software.” Could be: This did not deter one of the programmers: “See the holes? They are the software.” -- MP 8/2/2009
page 16, exercise 1-E.3, third bullet point: The exact set of letters does not**,** matter but Comment: Move the comma after the word matter. -- MP 8/2/2009
2 Dealing with objects
page 18, second line: The book**,** applies systematic typesetting conventions Comment: comma should be dropped -- MP, 15/2/08
page 18, in box Touch of style: (sometimes bold or italics according to precise rules**) Comment: I would add: (sometimes bold or italics according to precise rules that will be specified) -- MP, 15/2/08
page 18, line after box on class Preview: The first line says you are looking at a **small** “class” Comment: as the first line does not say that the class is "small", I would drop the word "small": The first line says you are looking at a “class” -- MP, 15/2/08
page 19, box title "**Magic?". Did you considered the title "Touch of magic?"? -- MP, 15/2/08
page 25, after the first code box: Paris.display Comment: you use the term "object", and then again many times in the same page. As you will define it on page 27, I would put a reference here, or give an informal definition, especially because you use it in the Touch of Semantics box (page 25) to define a feature call. -- MP, 15/2/08
page 27, sub-section "Objects you can and cannot kick", first bullet point, two lines before the end: ...your foot. **(Buying this book does not entitle you to a refund of medical expenses.)**. Comment: punctuation before and after the parentheses (or parentheses themselves) is (are) misplaced. Suggestion: ...your foot. Please be aware of the fact that buying this book does not entitle you to a refund of medical expenses.. -- MP, 15/2/08
pages 27 and 28: Comment: there are many references to "**Notre-Dame**" (I counted 5), but the figure on page 27 shows "Saint-Michel" as metro station. I would keep Saint-Michel everywhere to avoid confusion (not everybody may know that the real stop is "Saint-Michel Notre-Dame") -- MP, 15/2/08
page 28: last bullet list: first bullet "**or any other specified by its index**" Comment: you did not defined an index of a leg. Here you could drop the sentence fragment above without conceptually losing anything: Remove the first leg of the route, or the last leg, or any other. -- MP, 15/2/08
page 28: last bullet list: second bullet: **for example a metro leg from Notre-Dame to Jussieu (4 stations, see map on the previous page); the route will be changed to involve 3 legs, 3 metro lines, and 8 stations; the result now starts at Louvre and ends at Jussieu.** Comment: where is Jussieu? The "map on the previous page" does not help, nor the one on page 24. -- MP, 15/2/08
page 28: last bullet list: third bullet: For example we can make Route1 start with a leg going from Opéra to Louvre; Comment: It would be nice to locate on a map Opéra. -- MP, 15/2/08
page 29: line 3: **With a remove query**, it would be one less. Comment: It should be something like: "If you remove a leg, the same query above would report one less." -- MP, 15/2/08
page 31: box "Definitions: Feature, Query, Command", second bullet: A feature that may **modify** an object is called a command Comment: you don't define "modify". At the bottom of page 28 there was a definition of "change" of an object. I would use the same word in both cases, or put a reference here to the previous definition, or repeat the definition. -- MP, 15/2/08
page 31, 4 lines before the end: are **defined** for you Comment: as how to "define" an object has not been defined, I would use are created for you instead. -- MP, 15/2/08
page 33, first line: "**Palsis**" should be "Palais" -- MP, 15/2/08
page 34, Exercise 2-E.2, 3 lines before the end. There is a parenthesis to drop. -- MP, 15/2/08
page 35, 3rd bullet; **If either of the previous two relations holds between two terms “relies on” also holds** Comment: a comma is missing: If either of the previous two relations holds between two terms, “relies on” also holds -- MP, 15/2/08
page 35, exercise 2-E.3, point 2. **my_paragraph_remove_last**. Comment: my_paragraph_remove_last_word is a better name -- MP, 15/2/08
page 36, exercise 2-E.3, point 5. **my_paragraph.character_count (i)** seems a bit confusing example to me. Comment: looking at the semantics, I would suggest my_paragraph.word (i), to get the i-th word in a paragraph; then we can apply to the resulting word feature character_count, a query that should be a feature of class WORD. -- MP, 15/2/08
page 36, exercise 2-E.4 **Assume that you are building an MP3 player entirely software.** I am confused by the phrasing. Comment: "Assume you are building a software model of a MP3 player." looks better to me. -- MP, 15/2/08
from Draft 22.02, 23 August 08 19:15 (Santa Barbara) page 17. second paragraph. text: Everything else you will learn here and on the supporting Web site action: missing end of sentence. -- Eric Bezault, 12 December 2008
from Draft 22.02, 23 August 08 19:15 (Santa Barbara)
page 21, section 2.2 OBJECTS AND CALLS/Editing the text. second paragraph. replace: important element ofprogram texts by: important element of program texts action: add space. -- Eric Bezault, 12 December 2008
from Draft 22.02, 23 August 08 19:15 (Santa Barbara) page 25, section 2.2 OBJECTS AND CALLS/Dissecting the program. second paragraph. replace: Previous rules rules addressed by: Previous rules addressed -- Eric Bezault, 12 December 2008
from Draft 22.02, 23 August 08 19:15 (Santa Barbara)
page 25, section 2.2 OBJECTS AND CALLS/Dissecting the program. second paragraph. text: Then to highlight Line 8 we execute action: the code "Line8.highlight" appears on the next page after the end of the paragraph instead of embedded within the paragraph. -- Eric Bezault, 12 December 2008 I don't see the problem now so I assume it was fixed earlier
from Draft 22.02, 23 August 08 19:15 (Santa Barbara)
page 31, section 2.3 WHAT IS AN OBJECTS/Objects: a definition. second paragraph. replace: It is also s good by: It is also good -- Eric Bezault, 12 December 2008 I don't see this, so I assume the sentence was removed.
3 Program structure basics
from Draft 22.02, 23 August 08 19:15 (Santa Barbara) page 43, section 3.5 NESTING AND THE SYNTAX STRUCTURE. in the gragh. replace: -- Show city info including a monument.. by: -- Show city info including a monument. action: remove one dot. -- Eric Bezault, 12 December 2008
from Draft 22.02, 23 August 08 19:15 (Santa Barbara) page 48, section 3-E.1 Vocabulary. in right margin. text: The definition of "class" may be less precise than the others. action: remove this text. It's copy/pasted from 2-E.1 -- Eric Bezault, 12 December 2008
4 The interface of a class
from Draft 22.02, 23 August 08 19:15 (Santa Barbara) page 52, section 4.2 CLASSES. in sixth paragraph, second bullet. text: there some names such as Paris and Route1 action: The 's' in 'such' should not be in italic. -- Eric Bezault, 12 December 2008
5 Just Enough Logic
6 Creating objects and executing systems
7 Control structures
8 Routines, functional abstraction and information hiding
9 Variables, assignment and references
PART II: HOW THINGS WORK
10 Just enough hardware
11 Describing syntax
12 Programming languages
13 Compilers and friends: the basic software tools
PART III: ALGORITHMS AND DATA STRUCTURES
14 Fundamental data structures, genericity, and algorithm complexity
15 Recursion and trees
16 Devising and engineering an algorithm: Topological Sort
In section 16.1, just after the first figure: Money, Pass, Map, Louvre, Orsay Money, Pass, **Louvre, Map**, Orsay Money, Map, Pass, Louvre, Orsay The second one is wrong. -- Luchin Doblies, 1.12.2008.
Section 16.3, topic "Cycles in the constraints", line 4-5: "A topological sort program gets its input **in the form individual ordering constraints**, ..." Missing "of": "in the form of" -- L.D., 1.12.2008
Section 16.4, topic "The Loop", second last line of the code-square: if “Any elements remain” then-- Report cycle: cycle_found := True “Insert these elements into **cyclist**” end I believe cyclist should be plural, "cyclists". -- L.D., 1.12.2008
Section 16.4, topic "The Candidates", second page, line 4: "What concrete **date** structure should we use for candidates?" "date structure" instead of "data structure". -- L.D., 1.12.2008
Section 16.7, second line: "..., such as the "<“ relation on numbers." The quotes do not match in font. -- L.D., 1.12.2008
PART IV: OBJECT-ORIENTED TECHNIQUES
17 Inheritance
18 Operations as objects: agents and lambda calculus
19 Event-driven design
20 Program correctness and proofs
PART V: TOWARDS SOFTWARE ENGINEERING
21 Introduction to software engineering
PART VI: APPENDICES
A Using the EiffelStudio environment
B Eiffel syntax specification
C An introduction to C++ (material by Nadia Polikarpova)
p. 770, Section "Derived types": "since it is possible to assigned a dereferenced" --> "since it is possible to assign a dereferenced"
D An introduction to Java (material by Marco Piccioni)
E An introduction to C# (material by Benjamin Morandi)
p. 742, 4th line from the bottom: "reclaims an object;." --> "reclaims an object." -- Stephan 16/2/2009
p. 743, 2nd line from the top: "No overloading here;" --> "There is no overloading here" or "Destructors may not be overloaded" -- Stephan 16/2/2009
p. 743, Last line of text: "use at your own risk" --> "use them at your own risk" -- Stephan 16/2/2009
p. 744, Get consistency among "One-dimensional array" and "Two dimensional arrays", i.e. use "Two-dimensional array" -- Stephan 16/2/2009
p. 746, There is a black line in the margin next to the top box. -- Stephan 16/2/2009
p. 746, "C [G, H –> T create make end" --> "C [G, H –> T create make end]" -- Stephan 16/2/2009
p. 748, in "do {statements} while (condition)", the first curly brace should be blue. -- Stephan 16/2/2009
p. 748, "Typical causes of exception" --> "Typical causes of exceptions" -- Stephan 16/2/2009
page 756: Title of "INHERITANCE" section should be de-capitalized like in "Inheritance" for consistency with other section titles. -- MP 14/2/2009
p. 757, Just before B.5: "if (exp is T)" --> "if (exp is U)" -- Stephan 16/2/2009
p. 760, "The rest as before ...]" --> "The rest as before ...}" -- Stephan 16/2/2009
p. 761, "returns into an array" --> "returns in an array" or "returns an array of attributes" -- Stephan 16/2/2009
Typos reported by Ernst Leisi (no chapter numbers given)
(Second version [the one with 910 pages])
s. 51 - What this tells us is that the objects our programs manipulate classify ... sounds kind of strange... the objects our programs
themselves naturally into certain classes
s. 59 - Line8.i_th (2) is “La_Motte” and so on. ... there is no La_Motte on the picture
s. 61 - Line8.remove_all_remove_all_segments ... why two times remove_all ?
s. 69 - invariant (where * denotes multiplication: ... missing " ) "
s. 84 - (a = b) or (c and ((not d) = e))) ... the last " ) " is one too much or there should be one at the beginning ( " ( " )
s. 97 - Line8.i_th (2)).is_exchange ... " ) " in both examples
s. 98 - mathematicians often use a period “.” or a comma “,”; ... the last -> " <- is not written with normal "style" :O
s.100 - {3, 7, 911, 13, 15}: ... missing " , " between 9 and 11
s.111 - The first thing we need in our class is a feature representing the line to be built. ... "We call it (the feature) fancy_line... but the feature is " build_a_line " i guess
We call it fancy_line.
s.121 - line_exists: s /= Void ... line_exists: l /= Void
s.125 - instruction as executed by clients is jot just create stop1 ... jot ? ^^
s.125 - line_exists: s /= Void ... line_exists: l /= Void
s.128 - 1 • he precondition of its creation procedure. ... missing " T "
s.132 - One immediate question is how > you will you < specify the root class and root creation procedure of a system.
s.134 - This is true of unqualified calls: ... true for ?
s.136 - made of components to be developed autonomously and combined in may different ways. ... many
s.141 - 687 + 42 = 29 ... 729
s.146 - It is the control structure we have been using implicitly in all the examples so far, ... they would be executed (i guess)
since we have been writing instructions under the assumption that they would executed in the order given.
s.151 - full.extend (metro_1)] ... " ] "
s.152 - this is true in both its “” and its “”. ... its what?
s.162 - Afterexecution ... After execution
s.163 - If you have ever try to use a program only to see it “hang”, it might very ... tried
s.171 - Of course this convention is not there by accident, but intended ... to ensure ?
precisely ensure that the typical iteration scheme on a list
s.183 - chosen by the programmer, who lets the compiler maps them to memory ... lets the compiler map them
locations.
s.192 - part of the loop, The loop correctness rules ... , T
s.195 - interations ... (maybe iteration?)
s.195 - In the discussion of data structures.we will see that it is possible, without ... " . " ... " constrol " ... " to to " new constrol constructs, to to define powerful iterators applicable to a wide range of object structures.
s.197 - In addition, as yo may have ... you
s.199 - The rationale for this policy—which may appear surprising at first—is that a ... " lists " maybe ?! Multi-branch explicitly list a set of expected cases and their desired treatment.
s.208 - The last example of our study of conditionals provide a good case for defining ... " provides "
a “functional abstraction” in the form of a routine.