Number of people involved: several (at least 3)
Status: (Projects 1 and 2 are taken)
Number of people involved: several (at least 2)
Architectures of traditional distributed systems follow the client-server paradigm. Here, a central server services many clients, and the server and clients have different responsabilities. In the last three years, a number of Internet applications such as Naptster, Gnutella, and Sethi@home have popularized another paradigm of networking which is based on a peer-to-peer (P2P) architecure. In a P2P architecture, each node -- peer -- acts both as server and client as well; that is why peers are sometimes called servents. Peers cooperate to provide a service, with as few an intervention as possible from central servers.
Gnutella is the best example of what is called a pure P2P architecture, where peers do not rely on an centralized indexing mechanism to perform search. Peers broadcast research requests over the network. This however generates a huge amount of traffic over the P2P network. Several projects have been initiated to tackle the issue of reducing traffic over P2P networks. The main idea used to reach this goal is to find appropriate distributed datastructures for performing search over the network. For example, one such project (CHORD) uses distributed hasch tables. Another one (P-Grid) uses virtual search trees. The perceived advantages of using these improved datastructures is to provide high scalability, fast search, efficient network construction, self-configuration of the network, etc.
The goal of these honours projects is to use an well-chosen distributed search datastructure in one of the existing P2P network architectures. Your task will first involve finding such a datastructure. Then you will have to design an appropriate protocol for it. Your design will merely improve on one of the existing search structures (trees, hasching, Knowledge base). Finally, you will implement it in a simulated environment. Of course you will not implement the whole simulator, but only change an existing simulator in some critical parts.
A pointer to the literature needed is: http://www.cs.toronto.edu/~kiringai/p2p-db.html
Number of people involved: several (at least 2)
Active relational databases augment traditional database technology with the capability of expressing reactive behavior. Normally, in traditional relational databases, a user captures information about a domain by giving a set of tables, also called relations. Those relations constitute a database which can be queried, updated, deleted, etc. Once data is stored, the only way to change it is through a user or an application program. In active relational databases, however, stored data can change automatically whenever some events occur in the database and some conditions are met. Such events and conditions are specified in a rule program that the database system will execute to monitor events that occur in the database. In commercial products such as DB2, Oracle, etc, such rules are called triggers.
The goal of these honours projects is to write a realistic trigger program that expresses the reative behavior of an interesting application domain. The programs will be written following an experimental development methothology called IDEA that is documented in a book that you will borrow from me. Your task will be to pick one of several domains that I will point out to you. Then you will apply the IDEA methodology to it. The outcome of this process will be a trigger program written in a SQL language of your choice that is supported by the IDEA tools and concepts. The IDEA tools support current versions of SQL such as Oracle, DB2, etc.
Number of people involved: several (at most 3)
Robotics is a well-known and fascinating research area in Artificial Intelligence. A robotics system usually comprises both hardware and software components. Hardware components are taken care of by computer engineers. From the Computer Science point of view, research in robotics deals with two main set of tasks. The first one amounts to designing algorithms for the so-called low-level tasks of robot motion, obstacle avoidance, path planing, etc. The second set of tasks takes care of high-level issues that generally involve achieving a goal (e.g. delivering mails to all people in an office environment, cleaning a surface, winning a soccer game, ...). Usually, low-level taks are better programmed in fourth-generation languages like C, C++, and high-level tasks are better programmed in fifth-generation programming languages such as Prolog or Lisp. A common problem that arises is therefore that of bridging the gap between high-level modules programmed for instance in Prolog, and low-level modules programmed in, let's say, C.
Your task in this project is to program a robotics agent in a special-purpose Prolog-like language called GOLOG, and couple that agent to some low-level robotics software. The project may just involve a simulated robotics environment. I will provide material about GOLOG and the simulated robotics environment.