I have written a collection of labs and supplementary assignments, the Aquarium Lab Series, that introduces a number of introductory topics using elementary patterns. In these assignments, students build a small program with several fish moving around in an aquarium (the screen). The topics covered in this series are:
I have developed C++ and Java versions of the series. The C++ version of the Aquarium Lab Series consists of two full-length labs that need approximately two hours to complete, four mini-labs that can generally be completed in less than an hour each, and several supplementary assignments. The Java version consists of four mini-labs and one follow-up assignment. The Java version is slightly more up-to-date; in particular, the first mini-lab in the Java version contains patterns and exercises for constructing and initializing objects, whereas the C++ version contains only the exercises.
The labs and assignments build on one another, and should be done in order. The mini-labs are grouped into sets of pattern-based exercises that may be used as units, but it is also possible to treat each exercise as a separate unit or use other groupings as units, keeping the sequential order intact. The mini-labs are based on the following patterns: