I disagree and agree. OO for the sake of OO does not make sense. Before I did OO built large, reusable code libraries. OO came into it's own with me when I understood the principles enough to write classes pretty much from scratch so I was not trying to work around the limitations of some one else's implementation. It took me years to get competent at writing truly reusable OO code. I can't imagine teaching it from scratch. Start out using a OOP language as a "better" procedural language and OOP stuff comes in gradually, after learning program structure, design, code reuse etc. But then again, hindsight is a handy pair of rose colored glasses.