There are a number of common and obvious paradigms for the development of CAA tools for grading programming exercises. Agar was developed with one of the more complicated of these approaches, but the whole spectrum of these paradigms are represented in Chapter 3.