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


  1. 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)
  2. ~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.

  1. File search application like that in Java
  2. 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
  3. 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
      1. Solar system simulation
      2. Race game/soccer game