Multi-Paradigm Programming using C++ -- Preface

Many Computer Science programmes teach two programming languages in the first years of the core curriculum. The first language is selected for its simple semantics and ease of use so that students can learn about fundamental computing topics such as control structures, functions, recursion, abstract data types, etc. without bothering about the underlying hardware and operating system aspects. C++ is not a good language for this purpose.

The second language is then chosen to complement the first in that its teaching provides an opportunity to study the aspects that are abstracted from in the first language: efficiency, run-time support including operating system interfaces and memory management, compilation and linking, etc. Choosing an industrially relevant and wide-spectrum language has obvious additional advantages. C++ is an ideal candidate for this purpose as it exposes the student to all of the above aspects while at the same time it provides powerful abstraction mechanisms supporting generic and object-oriented programming.

This textbook presents a concise yet reasonably complete introduction to the C++ programming language and its abstraction mechanisms. The reader is expected to be familiar with basic programming concepts, making this book suitable, for example, for second year computer science students.

C++ is a wide spectrum language that provides a confusing number of features, which I've tried to streamline by providing a hierarchy of concepts centred around the notions of types and type constructors. The structure of the book reflects the gradual introduction of these concepts:

Each time, examples are provided to motivate the inclusion of a feature into the language.

The text also touches on the implementation of the various concepts. This is necessary to motivate the decisions that have influenced the design of C++, thus making it easier to really understand the language. Moreover, knowing a bit about the implementation is also useful when assessing the efficiency aspects of alternative designs.

Chapter Summary

Supplementary Materials

The programs from the book, as well as other illustrative programs and case studies can be found on the web site.

The site also contains a set of transparencies and a list of errata.

Acknowledgements

This book was greatly improved through the comments and suggestions of students and colleagues who read preliminary versions: Marina De Vos, Koen De Winter, Stijn Heymans, Viviane Jonckers, Carine Lucas, Michael Peeters, Frank Tavernier, Dirk Verdonck, Wei Wang. Any mistakes that remain are of course my own.
Dirk Vermeir (dvermeir@vub.ac.be) [Last modified: Thu Jul 5 10:49:24 CEST 2001 ]