Assignments that teach Interfaces

The purpose of interfaces and abstract classes is to create standards for code development such that all classes implementing an interface share common methods. In the case of the Finch, one could create interface classes that are general - like a general interface for sensing, or another for output.  The student could then build sub-classes that implement this interface for a specific sensor or output.  This kind of architecture is also necessary to demonstrate a type of Polymorphism called Dynamic method binding.