It is my belief that you can only truly learn how to program by being passionate enough to set your own goals and implement solutions to your own coding challenges.
Structured coding tasks rarely offer this freedom, but large open-ended tasks, preferably with some scaffolding, such as an interesting dataset, do.
In 2017 at King’s, our first year undergraduates were set the task of implementing a piece of software to track reported sightings of UFOs around the world in semi-realtime. As well as being set some basic goals, they were also asked to implement an additional feature of their own choosing. They rose to this challenge brilliantly, and the fruits of their labor are shown here.
You can view more details of the task here. Thanks to O’Reilly for sponsoring our prizes.