The exercises are based on 5 example applications: a short initial ‘toy’ one covering two exercises introducing the basic concepts such as instances, types, input and output, and then two large ones each covering 10 exercises, both broken in the middle by two small examples. The large examples helped with ordering the partial order of the material, since concepts could be introduced as they were needed for enlarging the functionality of the applications.
The first large example introduces external instances loaded over the internet, in this case the exchange values of a large number of currencies, and builds an application to display the exchange rate between two currencies of choice.
It is broken in the middle with a small application to show how times are manipulated, and to introduce the concept of events.
Submission is then introduced to show how to to load new instances, and how to deal with submission errors, and then how to generate a URL for use in submission.
The second application is a to-do list, in order to show how to manipulate lists, how to use submission to save data, how to detect when data needs saving, and finally how to automatically save data when it has changed.
It is broken in the middle with a small log-in application, that shows how to input passwords, and how to deal with validity errors.
In some senses, finding suitable examples that were expandable in this way, gradually adding new concepts as they were needed was the hardest part of designing the tutorial. It is easy to create one tiny toy example for each concept being taught, but more work to design ones that are meaningful and useful applications that have the right collection of necessary concepts.