7

I 'm at the start of my second semester of college and I don't have any real practical experience with programming, but I have to take a class on OOP that is usually taught to juniors.

My OOP class teacher recommended "C++: How to program" 4th ed. by Deitel & Deitel as a textbook, which is a book with many horrible things written about it on the internet.

He also cited a couple generic manuals: "C++ primer plus" by S. Prata and "Absolute C++" that have cold reviews if any; plus a book on general theory: "Concepts of programming languages".

As an ultimate reference he suggested "The C++ programming language" which should be a very solid title, but seems to be more aimed towards experienced programmers.

I read the list at The Definitive C++ Book Guide and List and I'm really tempted to just pick up a title from it, maybe "C++ Primer" or "Accelerated C++".


Does anyone have any sensible advice about this kind of situation? Should I try to study from books that are recognized as faulted by all other sources but my teacher?

  • 21
    Pretty much every widely used book has horrible things written about it on the Internet - I'd suggest you wait to draw your own conclusions. – Nate Eldredge Feb 25 '15 at 13:05
  • 9
    @JeffE: A beginner doesn't know enough to make a professional judgment, and by the time he's not a beginning, unlearning all the bad habits is going to be quite difficult. – Ben Voigt Feb 25 '15 at 15:46
  • 3
    The opinions being expressed here by academics just illustrate how badly out of touch with modern C++ most computer science professors are. BTW, the Deitel and Deitel text does appear in the deleted answers of the Stack Overflow C++ Book Guide and List linked in the question. The comments were that people didn't like the style, but no technical objections were raised. It definitely wasn't on their "never touch this" list, so go ahead and use it. If you like I can post an answer here containing screenshots. – Ben Voigt Feb 25 '15 at 15:52
  • 3
    @BenVoigt: I have to object to your logic. I see exactly one comment above that says anything about "modern C++", and the person making it doesn't identify as a computer science professor (neither do any of the users who have posted answers). From this, you are able to draw conclusions about "most computer science professors"? Also, I would mention that this question shouldn't be read as actually asking for C++ textbook recommendations (which would be off-topic here) but rather general advice on how to select and use a textbook. – Nate Eldredge Feb 25 '15 at 15:58
  • 5
    @BenVoigt: Of those who have posted here, only one has a profile identifying himself as a computer science professor (JeffE). I myself certainly am not. Neither I nor he nor anyone else said anything about disregarding the opinions of experts such as Stroustrup (I am aware he is a CS professor; I am also aware he is not a god), rather that one should not make a decision based solely on reviews. I don't think I'll have anything further to say about this. – Nate Eldredge Feb 25 '15 at 16:13
2

First, note that a course on OOP is probably not the same as a course just on C++. The C++ language was designed by Stroustrup to support the developer in multiple styles of programming, including OO.

C++ today has become such a huge and complex language, moreover one for which which professional programming style has significantly evolved since the 98 standard. For example, its support for and take-up of functional programming has grown significantly.

I'm assuming you want to do well on the course, as opposed to simply learning skills.

Now, it's a long while since I've had a look at Deitel and Deitel, and I can't say I've good memories of it. However, hopefully the book is recommended because does take an approach supporting the OOP of the course and the subset of C++ you are expected to learn on the course. So go ahead and get the book.

Having said that, if you really want to learn C++ itself well enough to be able to use it as a professional, be prepared to buy a few more books and put in a lot more work after you've done this introductory course.

  • 1
    "I'm assuming you want to do well on the course, as opposed to simply learning skills." -- Indeed, skills can be forgotten but grades are forever. – Praxeolitic Feb 26 '15 at 7:35
  • 2
    @Praxeolitic this is what sucks about the educational system. – Alvaro Feb 26 '15 at 12:47
  • I do feel the other 90% of the answer is quite sound advice. – maja Feb 28 '15 at 6:33
28

Especially as a beginner, you should really get the recommended book. It is very likely that the course will follow the book rather closely, and trying to study the same material from a different book is usually not easy if you just started to program. If you think that the recommended text book is really bad, you can always get some other learning material in addition.

Some more explanation if you happen to think "C++ is C++ - it shouldn't matter which book the OP uses to study the same tool". Well, problems arise if the text book the OP studies uses a different didactic concept / ordering of content than the course. For instance, I am teaching Introduction to Programming in Java. Our specific text book introduces OOP notions, such as classes and methods, much earlier than most books. Students that choose to study using different books often end up being extremely confused in class, because their books never mention class hierarchies until half-way through while they are all over the place in in-class examples. Another aspect is that most programming books have their idiosyncrasies in terms of how code is formatted, how certain basic ideas should be expressed, what "good" and "bad" programming concepts are. Advanced programmers can easily abstract from such idiosyncrasies, but they tend to confuse the heck out of beginners when applied inconsistently.

  • I guess the need to stick with assignments when required is convincing enough to use the textbook at least as a primary source.. – maja Feb 25 '15 at 15:10
  • 7
    To expand on this: stick with the recommended book until you reach a skill level where you can tell for yourself whether it's a good book. If you don't know the subject well enough to draw your own conclusions, then go with whatever the person teaching you is using, just to be on the same page (pun intended). When you start having your own thoughts about how the book could have expressed something better, or whether their example code is well-written, or anything like that, then that's your sign that you're beginning to understand enough to find a book that works for you. – anaximander Feb 25 '15 at 15:42
  • "It is very likely that the course will follow the book rather closely" - Not necessarily. Most programming courses I've taken (as well as the one I tutor) recommend a reference for interested students, but teach using their own notes and at their own pace. It's worth waiting a few weeks to work out if this is the case. – sapi Feb 26 '15 at 3:58
5

One thing about textbook review is, usually student who don't find the textbook has any problem, or who got good grades, would not care to write a review. People who usually write textbook review are those who failed the course and trying to blame the textbook. Sometime the textbook may be at fault but other times it may not. Also, sometime it depends on the level of the reader. Advance reader may find the book simple while some others may find it difficult. If I were you, I will go to the library or bookstore and read a chapter or two and decide myself.

For instance, my OOP class used premier C++, some of us love it and some of us hate it. Also, if the professor allows open book exam, you probably would want to have that book.

  • 2
    in this case the bad reviews are form ACCU and other Stackexchange questions. – maja Feb 25 '15 at 13:31
  • 1
    "People who usually write textbook review are those who failed the course and trying to blame the textbook" [citation needed]. In any case, it should a comment, not an answer (within Stack Exchange standards). – Piotr Migdal Feb 25 '15 at 16:23
5

There are two contexts in which a professor will generally point you at a textbooks:

  1. A requirement for a textbook that will be used directly for specific readings and exercises, in which case it is important to use the precise book and (unfortunately) edition, because otherwise you may not have the correct material for assignments on which you will be graded.
  2. A recommendation for a textbook as supplementary material, for you to use on your own for your own edification.

In your case, it sounds like one of the textbooks falls into the first categroy; if so, you should use the same textbook that the rest of the class is using It also sounds like the other textbooks fall into the second category: your instructor doesn't care how you supplement your background, just that you get sufficient reinforcement to be able to make up for your weakness in the class prerequisites. You should thus feel free to pick whatever text works best for you in that regard, including things like online tutorials that might not even be textbooks per se. If you think your instructor is a good teacher, however, you might consider that they may have had good past experiences with this text that causes them to recommend it to you.

  • in this case the "C++: How to program" book was explicitly presented as the textbook and the other texts as recommendations. – maja Feb 25 '15 at 13:33
  • 1
    @maja Then I was confused by your question, and it falls into Case 1 instead, and you should use the same textbook that the rest of the class is using. – jakebeal Feb 25 '15 at 16:05
3

You have no idea the context of the reviews.

  • The book may have bad reviews because it was too advanced for them.
  • The book may have bad reviews because it doesn't go into enough details.
  • The book may have bad reviews because most C++ books have bad reviews.

Even if the reviews are by field experts you still need to ask whether it applies to your situation. For a C++ book, if you're in a course covering general programming concepts, I hate to say this, but wrong information in the eyes of professors or professional software engineers may, in fact, be benign for your purposes. A "weeder" course would prefer to use a very good but very hard book, which students who should be in a intro or survey course would loathe.

A professor using a book with errors ideally will correct the errors as they teach. I had a very talented algebraic geometry teacher who preferred exactly this style. The choice was a readable book with several mistakes, or a very dense, very terse book that was hard to learn from. She used both and mostly lectured from the former.

More general advice is to compare several books and learn from the one that suits your learning needs. Using multiple textbooks is often ideal. What the professor requires for the class should be a pretty strong signal, though.

The bottom line is: be defensive! assume your professor will be right about 75% of the time, and your textbook will be right about 75% of the time, so corroborate multiple materials against each other and other resources (like StackExchange sites), and you will succeed.

  • He's citing reviews by experts, not just the majority opinion that e.g. Amazon ratings are based on. And a surprising number of C++ books teach information that is outright wrong. – Ben Voigt Feb 25 '15 at 15:53
  • @BenVoigt updated my answer to address this. – user18072 Feb 25 '15 at 15:57
  • @BenVoigt I explained my reasoning. If you want to call it absurd without explaining why my reasoning is wrong instead of just that you disagree with my point, I can't discuss this further. – user18072 Feb 25 '15 at 16:05
  • Well, given your point about correcting the bad information in class, I withdraw my objection. I just hope that's actually occurring... experience shows that it usually isn't. – Ben Voigt Feb 25 '15 at 16:07
2

You should definitely get the course-recommended book, not only because you're going to need it to follow along with the class insturctions, but because you as a beginner will need that tutelage to learn the basics in the first place.

You should follow along with this book for the duration of class. It may not be good, or it may surprise you, but it will help you with this class and with learning what the professor is trying to teach.


Now, if you are serious about learning the C++ language, and find that the book isn't as helpful as you'd like, then you can invest in another C++-primer or C++ introductory book, after you have taken this class and grown more accustomed to OOP and the C++ language.

In programming, especially collegiate-level programming, you'll find it's important both to know the standard practices and to practice on your own terms in order to grasp a language or coding fundamental properly. And there's no problem, assuming you have the time, with learning from two books instead of one.

In short

Definitely get the book your professor recommends, and use it during your course, because not doing so will seriously handicap you in this course. But, if you want to learn more, don't be afraid to pursue other sources.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.