Coding bat, project euler, python challenge for example are all amazing brain teasers that usually provide you with some learning material, ways to compact your code, and enhance your problem solving skills. At the end of the day, when you go through a few of those exercises, you learn something new, or you better understood a concept.
Are there similar exercises for OOP, MVC, MVVM, MVT, and so on type situations? In class it is usually taught to think of an object as a cat, part of an animal class. and you have mammals and so on. However, in real life, objects are more abstract, and harder to imagine and implement. The same could be said about MVC, MVVM, and MVT, where applying a small system is usually simple, but when the problem is scaled, it suddenly becomes a bit more daunting.