Projects 


I. Overview


The overall goal of these projects is to gain insight into the algorithms
and models involved
in grid computing and into the inner workings of
middleware
.

 
You are expected to have a working knowledge of Java ,
the programming language for your projects.


The projects have a fair weight in the overall class grade
and each  student is expected to work by himself/herself.
Acts of academic dishonesty lead to an unconditional
failure of the class.

For your projects you will:


   - a. Design and implement a grid service and the kernel of a PN simulator.
         Evaluate and justify your design choices.
   - b. Document the project. Your documentation should be well organized
          and touch
every aspect of your project including:
                   - goal and objectives,
                   - measures of success,
                   - related work,
                   - algorithms,
                   - design alternatives and design choices,
                   - implementation,
                   - performance measurements and subsystem evaluation,
                   - user guide.

 The documentation should be written in Word; the drawings should
be done using Visio.


At the due date of each project you have to provide a Zip file
including the following directories:

  - literature
  - documentation (see the structure of the documentation,
     point (b) above)

  - source code

Programing style:

   i.)  Each sub-program should have a header describing:
       - the name of the subprogram and its function,
       - the author ,    
       - the modification history.

   ii.) The code should have enough comments to make it easy to read.

   iii.)  The names should be descriptive and reflect the function of the object.
   




II.  Project  1  -  Design and implement a grid auction service.

  Due date: Monday, September 16, 8 AM (hard deadline - no extensions)
   Grading guidelines :
                    - a.  Simple minded but working project - maximum  40 points
                              Simple minded means:
                                                (1) trivial bidding and auctioning algorithms, 

                                                          (2) single threaded server,
                                                          (3) simple client GUI,
                                                          (4) no bidder and seler services support (e.g, bidders
                                                      not required to register
, sellers unable to stop the
                                                      auction, etc.)
,
                                                          (5)  no security (authenticaten, encyption) .
                    -b.  Sophisticated project maximum 100 points.
                                                   
 Hints:
       - Familiarize yourself with the concept of an auction .
       - Connect to Ebay
, Sothebys and other auctioning sites and
                see what services they offer.
          -  Familiarize yourself with bidding agents and algorithms .
          -   Write and test a simple multi-threaded Java server.
          -  Add functionality to your server.


III.  Project  2  -  Design and implement a Petri Net simulator.

 Due date: Monday, November 25, 7 PM. No extensions.  

                    Step 1. Given a Petri Net generate its textual description in PNML.
                          Use the PN for the candy machine presented in class as an example.


                    Step 2. Parse the PNML description and generate an internal representation. For
                          example, this internal representation may consist of a list of all transitions,
                          for each transition you specify its pre-set and post-set. You maintain also
                          the current marking.

             Step 3. Create a PN Virtual Machine (PNVM) that takes as input the internal representation
                          and simulates the token game. In other words, it examines the current marking and
                         identifyies all enabled transitions; then it randomly pickes up one of the transitions
                         enabled in that state (marking), fires that transition and generates a new marking.

             The parser and the PNVM should be written in Java.

             Your program should be able to list: the orginal making, the final marking, the firing
             sequence (the list of transitions fired while the system moves from the intial to the final
             marking) and the individual marking reached after firing each transition.

            Extra credit will be given for:
                 - a well designed GUI
                 -  generation of the reachability graph
                 - generation of the coverability graph
                 - ability to diagnose liveness
                 - abilty to diagnose if a PN is a state machine or a markeked graph
                 - ability to diagnose if a PN is a free-choice net.

            You will turn in:
               - your parser
               - your PN virtual machine
               - the required test case (the candy machine)
               - another test case of your choice
             For each test case you will supply
the PNML description and the output of the
                     simulator.

             We will test your simulator with a test case of our own.