Assignment 1: Agent programming in Oz
Deadline 14. may 2010, every day over the deadline brings 5% cut in points, zip archive send to olegus ut ee
Requirements
- source code ( 50% of the points )
- does not have to be large, >=+100 lines of Oz is sufficient
- should leave the impression that you actually spent some time working on it :)
- reasonably well documented (~1 comment for every 7 lines)
- at least 3 agents written by you (2 in case you extend existing application)
- use at least 1 purely functional data structure (immutable data) that is used/changed from several agents
- not allowed to use Cells, Objects or other Oz non-declarative constructs (except for ports)
- does not have to be large, >=+100 lines of Oz is sufficient
- ~2-3 pages of ( 50% of the points )
- program high-level description (main functions, general control flow, etc)
- diagrams (notation is your choice, either book, mine or some mixed)
- at least 1 component diagram
- at least 1 agent state diagram
- analysis of the concurrency in code
- at least 1 race condition that may happen because of concurrency (or why not if none)
- your experience with the task (PL related, concurrency)
- for example see web-crawler.pdf or lift example from the CTM book
Example projects
There is a choice out of several applications that I suggest, but you may take your own or some variation of the proposed.
- File search application like that in Java
- Enhance Web Crawler functionality, it may
- start code and description: web-crawler.tar.gz, web-crawler.pdf
- ignore HTML tags, recognize links to other pages (counts as work with purely functional data structure)
- store them for future browsing in separate agent - "database agent"
- schedule requests ("scheduler agent"), e.g. so that
- no site receives more than 2 HTTP requests at once
- Show some information in GUI, e.g.
- recently requested pages
- pages next to be requested
- If you don't like Web Crawlers, try something different: simple game/simulation with
- 10-20 moving or changing objects on screen
- several agents, e.g.
- one agent holds positions and other info
- agents that collect information, e.g. mean speed of all agents
- GUI agents that draw objects and information, process events from user (mouse, keyboard)
- For example
- Solar system simulation
- Race game/soccer game