Department of Computer Science and Software Engineering

COMP90054 Software Agents


This intellectually stimulating subject focuses on the fast growing area of agency and non-classical logic that has enabled a range of cognitive reasoning skills to be engineered using computers, such as rational behaviour and the ability to learn from experience. In the software agents & agent programming languages (formally presented as two separate subjects agent programming langauges and software agents) we go beyond defining the general characteristics of agency, toward defining more definite properties for modelling complexity and computability important to language implementation.

The main question we will ask is "what are the principles of agent modelling and programming?" In particular, we will explore the implementation of reasoning strategies in agent languages, as presently used in computational linguistics, robotics and software agents.

Two important properties of agent languages are safety (making sure that certain things never happen) and liveness (making sure that certain tasks eventually complete). Theoretical work in the area of computational complexity indicates that promising algorithms and mechanisms very possibly exist for many complex problems, that remain to be discovered (and possibly incorporated into agent language design). This field has already lead to the discovery of some new algorithms, including asynchronous distributed constraint satisfaction.

The emphasis of the subject is on the efficient analysis, design and language implementation and salient issues that emerge in support of agent reasoning strategies. Agent modelling techniques are first covered and subsequently an agent programming language will be explored. Topics will cover agent-oriented modelling, high-level program execution, reasoning about knowledge; modal logic; reasoning about time: temporal logic; causal inference; and reasoning in the presence of incomplete information. All topics are addressed in the context of computational complexity and language implementation.


The objective of the subject is to gain understanding about the principles behind agent programming languages and agent algorithms. Upon completion of this subject, you should be able to better understand the difference between distributed computing --- where knowledge and computation is distributed across multiple entities and results are often recompiled after completion --- and agent-based computing --- where there isn't necessarily any centralised knowledge, nor any recompilation of results (think, for example, of a sorting algorithm where each agent has a different perspective on the ordering of a set of tasks, relevant to what each agent is intending to achieve).

And further, you should:

All topics are addressed in the context of computational complexity, language implementation and distributed agent algorithms.


Two written assignments, due in approximately weeks 6 and 11, of around 1750 words each (30% each); a 15 minute in-class oral presentation concerning assignment work (10%); and a 2-hour end-of-semester open-book written examination (30%).

Created: May 2011 Maintained by: Adrian Pearce
Copyright: © 2000-2011 Computer Science and Software Engineering
Disclaimer and Copyright Information Privacy Policy