Theoretical exercises:
Practical exercises:
The solutions are available.
Ideas for your own projects:
- Draw a diagram representing the modules in your system and the dependencies between those modules. Is it a clean design? Can you do better?
- Write documentation for each of your modules, describing what the module does and the proposed abstraction. Can you do it in a few words? If not, what changes are needed?
- Use MVP or MVVM in your project, to cleanly separate program logic and user interface