| Welcome to a book about learning to program.
Before we go any further, you need to be absolutely clear about what it is that you are holding in your hand. This is possibly a book with the name of a programming language in the title that is unlike any book with the name of a programming language in the title that you have encountered before. And I expect that you have encountered many.
A big claim, that. But this is not a book about C++. This is not a book that seeks to explain all the minute details of the C++ language. This book contains no UML and none of whatever the flavour of the month is at the moment in systems development. This is not a book that an experienced programmer, working in industry, would use as a reference as they worked on some commercial project. There are lots of books like that, and lots of books written for experienced programmers, and this is not one of them.
This book came about like this. I’ve been to a few conferences on teaching computing, and I’ve given a few presentations describing some of my ideas on what’s wrong and right with the way we teach programming. I’ve come to the conclusion that there’s rathermore that’s wrong than right. A publisher ’s rep came up to me at one of these happy events and started to pester me to write my own C++ book. I declined, since there were already far too many C++ books about and I saw no need to add to this needlessly large pile of paper.
The problem that then emerged was that this was a persistent publisher ’s rep. I kept finding that she kept popping up in my office. I will admit to having been bought a beer, but despite advice from other authors, I always seemed to miss the free lunch. Eventually, during ITiCSE 2001 at Canterbury, I cracked and agreed to write something. But only on my terms. I was not going to write another totally unnecessary book about C++.
That is why this is a book about learning to program. Specifically, this is a book that is intended to support a student following an introductory programming course in further or higher education. There is sufficient C++ in this book to be included in such a course; there are also some pointers in the final chapter that would be of interest in the more ambitious courses1. My hope is that after reading this book, and after following your course, a student would be able to write some reasonably complex C++ programs and make sensible use of one of the many other C++ books that are available.
Now let me explain why this book is like this. I have taught programming for many years in what is probably one of the most respected university computing departments in the UK. Every year I have some successes, and every year there are failures. I see students struggle with this topic; they are struggling with something that lies at the very heart of our discipline. I often see students suffer as they attempt to come to terms with programming; often I have seen them drop out of their degree simply to avoid more programming. |