Well, definitely real-world tasks with focus on usefulness and other practical concerns. Ideas would be:
- Implement a parser for some protocol/data with testing, etc.
- Implement a communication protocol/framework/driver/API
- Implement a sophisticated-enough simulation for a real-world question you're trying to address certainly with some calculations inside.
- Implement a game AI as defined by some spec
- ...