Springer, 2009. — 920 p.
From object technology pioneer, Design by Contract inventor and ETH Zurich professor Bertrand Meyer, winner of ACM Software System Award, the Dahl-Nygaard prize and the Jolt award,
Touch of Class is a revolutionary introductory programming textbook that makes learning programming fun and rewarding.
Instead of the traditional low-level examples, Meyer builds his presentation on a rich object-oriented software system supporting graphics and multimedia, which students can use to produce impressive applications from day one, then explore "from the outside in" as they learn new programming techniques.
Unique to
Touch of Class is the combination of a practical, hands-on approach with sound theory. Throughout the presentation of software concepts, the book relies on the principles of Design by Contract, critical to software quality and providing a gentle introduction to formal methods.
The coverage is notable in both its depth and its breadth. In addition to core programming concepts such as control structures, algorithms and fundamental data structures, it encompasses recursion (including theory and implementation), reference and pointer manipulation, inheritance and associated techniques of polymorphism and dynamic binding, topological sort as an example of algorithm and API design, syntax description techniques, important design patterns such as Observer and Visitor, event-driven programming, high-level function closures (including an introduction to lambda calculus) and software tools. The final chapter is a detailed introduction to the challenges and techniques of software engineering, from lifecycle models to requirements analysis.
The use of full color brings exciting programming concepts to life.
Touch of Class gives students the leading edge by teaching both the fundamental techniques of programming and the professional-level skills preparing them for the challenges of modern software engineering.
Community resources
Dedication
Prefaces
Student preface
Instructor preface
Note to instructors: what to cover?
Part I
BasicThe industry of pure ideas
Dealing with objects
Program structure basics
The interface of a class
Just Enough Logic
Creating objects and executing systems
Control structures
Routines, functional abstraction and information hiding
Variables, assignment and references
Part II
How things workJust enough hardware
Describing syntax
Programming languages and tools
Part III
Algorithms and data structuresFundamental data structures, genericity, and algorithm complexity
Recursion and trees
Devising and engineering an algorithm: Topological Sort
Part IV
Object-oriented techniquesInheritance
Operations as objects: agents and lambda calculus
Event-driven design
Part V
Towards software engineeringIntroduction to software engineering
Part VI
AppendicesAn introduction to Java (from material by Marco Piccioni)
An introduction to C# (from material by Benjamin Morandi)
An introduction to C++ (from material by Nadia Polikarpova)
From C++ to C
Using the EiffelStudio environment