Analyzing and applying agent oriented programming methods for teaching purposes

More Info


In this thesis we discuss ways to improve teaching methods for agent oriented programming. The research approach consists of several steps. First data is gathered from groups of students participating in a first year agent programming project that uses the Unreal Tournament 2004 environment. The stronger and weaker groups are analyzed in a qualitative way to establish differences in programming styles between the stronger groups and weaker groups. The focus of the analysis is on software quality and code constructs. This analysis establishes what the key success factors of the stronger groups are. The results of this analysis are applied while developing the HactarV2 agent system for the Multi-Agent Programming Contest together with other students. During the Unreal Tournament project we found that stronger groups spend more time and energy on testing than weaker groups. It was also established that they pay more attention to documentation, software quality factors and the style of their code. Finally a code pattern similar to the Strategy design pattern showed up much more often with the stronger groups than with the weaker groups. When these methods were applied during the Multi-Agent Programming Contest project it was established that some of the documentation methods do not work as intended and that code style sometimes has to be sacrificed for the sake of efficiency. On the other hand the use of testing was proven again and the use of the code pattern turned out to work better than expected. The fact that the HactarV2 team won the Programming Contest is a clear indication that these methods work. The conjecture of this thesis is that the quality of an agent system can be improved by the right approach to testing and documentation during the development and by applying code patterns that make behavioral control easier. Teaching these approaches and patterns to students will improve their skill level of agent-based programming.