Theoretical exercises:
Practical exercises:
Extra exercises:
The solutions are available.
Ideas for your own projects:
- Does your code use a convention for naming, formatting, etc.? Choose a convention, and correct deviations, if possible automatically.
- Add defensive code to your public methods, and assertions where they might be useful.
- For the next bug you encounter, use a debugger!