Content-Type: BBCode I'm not familiar with C++ iterators, but java does have an iterator class. In my experience they have been clunky, ridiculous beasts. I think it might be worth looking into changing the way programming classes are taught. I had the same experience as you, it took me a long time to realize that object orientation was something more than just "public main{" window-dressing on my code. Perhaps we should start teaching with a language with only primitives, then pose them harder and harder problems till they start constructing their own data structures. At that point, give them object oriented code and let them see how useful it is for solving exactly the problem it was created to solve.