Torvalds is talking out of his ass here.

OK, why he is talking out of his ass:

First of all, his rant is really nothing BUT rant. There's very little actual content here. The only reason it's really famous or even mildly respected is because it was made by the Linux God. His main argument is that C++ is crap and he likes to piss C++ people off. There's of course no reason at all to respond to that and anyone who considers it a reasonable argument is beyond conversation anyway.

As to what might be gleamed as his most objective points:

STL and Boost are utter crap <- whatever. You're an idiot.

STL and Boost cause infinite amounts of pain <- ridiculous. Obviously he's purposfully over-exagerating but then what is his real statement here? I don't know. There's some more than-trivially difficult to figure out issues when you cause compiler vomit in Spirit or something, but it's no more or less difficult to figure out than debugging UB caused by misuse of C constructs like void*.

Abstract models encouraged by C++ are inefficient. <- Like what? He never expands, never provides any examples of what he means, he just says it. BFD. Since I can't tell what he's referring to there's little point trying to "rebut" the statement. It is a common mantra of C bigots but that doesn't make it any more understandable or intelligible.

Correct use of C++ means you limit yourself to the C aspects. <- Actually the WORSE C++ code out there does this so I still don't know WTF he's talking about.

Basically, Torvalds is talking out of his ass. There's no intelligible argument being made about anything. To expect a serious rebuttal of such nonsense is just plain silly. I'm getting told to "expand" on a rebuttal of something that I'd be expected to expand upon if it where I who said it. If you really, honestly look at what Torvalds said you'd see that he didn't actually say anything.

Just because God says it doesn't mean it makes any sense or should be taken any more seriously than if some random bozo said it. Truth be told, God is just another random bozo.

Responding to the actual question:

Probably the worst, and most common, bad C++ practice is to treat it like C. Continued use of C API functions like printf, gets (also considered bad in C), strtok, etc... not only fail to leverage the power provided by the tighter type system, they inevitably lead to further complications when trying to interact with "real" C++ code. So basically, do exactly the opposite of what Torvalds is advising.

Learn to leverage the STL and Boost to gain further compile time detection of bugs and to make your life easier in other, general ways (the boost tokenizer for example is both type safe AND a better interface). It is true that you'll have to learn how to read template errors, which is daunting at first, but (in my experience anyway) it's frankly much easier than trying to debug something that generates undefined behavior during runtime, which the C api makes quite easy to do.

Not to say that C is not as good. I of course like C++ better. C programmers like C better. There are trade offs and subjective likes at play. There's also a lot of misinformation and FUD floating around. I would say that there's more FUD and misinformation floating around about C++ but I'm biased in this regard. For example, the "bloat" and "performance" problems C++ supposedly has aren't actually major issues most of the time and are certainly blown out of the proportions of reality.

As to the issues your professor is referring to, these are not unique to C++. In OOP (and in generic programming) you want to prefer composition over inheritance. Inheritance is the strongest possible coupling relationship that exists in all OO languages. C++ adds one more that is stronger, friendship. Polymorphic inheritance should be used to represent abstractions and "is-a" relationships, it should never be used for reuse. This is the second largest mistake you can make in C++, and it's a pretty big one, but it's far from unique to the language. You can create overly complex inheritance relationships in C# or Java too, and they'll have exactly the same problems.