Monday, April 28, 2008

Course on Real Time Systems - EE5903

Real Time Systems (RTS) are the systems that must respond to changes in environment within a specific interval of time. The course on RTS was an interesting but rather heavy, with a relatively large project, covering several topics and reading research papers. Some concepts I find one of most difficult in computer science like synchronization and mutual exclusion were a part of it.

The following major topics were covered:
  • Process Management, Synchronization, Concurrency (handout from Operating System Principles by Bic and Shaw)
  • Distributed RTS, Deadlock Management, Distributed Deadlocks (papers on HARTS, Token Passing for mutual exclusion)
  • RTS scheduling (paper on Rate Monotonic Scheduling by Lui and Layland), RT Operating System Kernel (paper on Spring Architecture)
  • RTS system development diagramming - DARTS, UML statechart (paper on Software Design by Gomaa)
We did a distributed game design and development project. In design phase, we reviewed several architectures for LAN based game development (see the report here). We then designed a flexible client-server load architecture. We implemented a prototype for this architecture in the second part of the project (see the report here).

Some ideas for future work:
  • Development of a flexible-load distributed game by continuing the work done in project.
  • Multithreading the Box2D library - this is an open source physics library we used in our project.

Course on Knowledge Based Systems - CS4244

This course taught about rule based systems. We used the CLIPS language to implement rules,. CLIPS automatically combines rules to perform a complex task. The course content topics included knowledge representation, knowledge acquisition, representing uncertainty including DS-theory, Classification and Construction Problem Solving, and basics of other kinds of knowledge based systems like Blackboard Systems, Case Based Reasoning, Machine Learning (ID3, Candidate Elimination) and Truth Maintenance Systems.

We encountered the following systems: STRIPS (planner), MYCIN (medical diagnosis rule based system), EMYCIN (empty mycin), R1/XCON (configuration of computer systems), CENTAUR (explanation system), MOLGEN (genetic experiment planner).

Book we followed: Engrossing book by Peter Jackson: "Introduction to Expert Systems"

We did a project on "Weekend Itinerary Planning". Here is the report. The planner had the following major components: itinerary generation, event selection, travel selection and user interface.

From this course, I generated two ideas for "good things to have":
  1. An Itinerary Planner for Weekend Travel (not just a toy project but on WWW);
  2. A Rule Based Library in C++/Java based on CLIPS engine - with one use in Computer Gaming.
See also:
  1. Peter Jackson's Expert Systems reading list
  2. Another course in a related field