Analyzing and applying agent oriented programming methods for teaching purposes