CSU 670 Spring 2009
Out: February 10, 2009
Due: February 17, 2009
                                                Karl Lieberherr
						Ahmed Abdelmeged

Surviving in the SDG robotic world.

Our robots become now teenagers
who can create and respond intelligently
to a more sophisticated world.

Subproject 6
=================================================================

Implement a robot capable of playing
Classic SDG CSP Fast Pitch Softball 2 Independent 
(2 relations not in an implication relationship) and T Ball
in our fourth robot competition.

PART 1: 30 points
========================================

Implement a deterministic algorithm for finishing products 
effectively. So far we used a randomized algorithm.
We call the new algorithm the Derandomized Softball Finisher.

Derandomize your algorithm based on the following
recurrence relation for raw material F:

look-ahead[F](b) = b * look-ahead[F[x=1]] + (1-b) * look-ahead[F[x=0]]
(F[x=1] and F[x=0] are Shannon cofactors.)

Test the recurrence relation by hand on the following example:

F =
1: 22 x1 x2 x3
1: 22 x1 x2    x4
1: 22 x1    x3 x4

Choose x=x1 and turn in 
look-ahead[F[x=1]] and  look-ahead[F[x=0]]
and check that
look-ahead[F](b) = b * look-ahead[F[x=1]] + (1-b) * look-ahead[F[x=0]]


Project Submission Guidelines:
==============================
1. Player:
1.1. Turn in the jar file for your player, without
source code, to /scratch/lieber/csu670-sp09-sdg/feb10
Make sure you name your robot after your team name
followed by the subproject number.
If your team name is SilverSnakes, call your jar on Blackboard
SilverSnakes6_Source.jar and the other one:
/scratch/lieber/csu670-sp09-sdg/jan27/SilverSnakes6.jar
for this subproject 6.

1.2. * Use the given manifest file
supplied with the GenericPlayer located at:
http://www.ccs.neu.edu/home/lieber/courses/csu670/sp09/source/GenericPlayer/player/player.mf

This manifest file has two important entries.
The first is the "Main-Class" entry which defines the
entry point for the player (the class with the public
static void main method).
This makes the jar executable and this is in turn important
for the Admin to run your player. In the generic player,
it is the GenericPlayer class.
The second important record is the "Player-Class" entry
which points to a class that implements the PlayerI interface.
In the generic player. it is again the GenericPlayer class.
This is important because we'll have an evaluator
that evaluates the intelligence of the different agents of your robot.



2. Source Code/Assignments:
2.1. Deliver Source Code/Assignment by checking them into svn BEFORE the
deadline. Check your projects into the following path:

https://trac.ccs.neu.edu/svn/speckerderivativegame/trunk/<GROUP_NAME>
Where GROUP_NAME is:
670km for: kathryn, mark,
670cx for: carol, xueyi,
670mm for: matthew, manny,
670gja for: ghadeer, jana, aron,
670jr for: john, ron,
670dl for: david, lee,
670dm for: dave, matt,
670ak for: alex, ken,
670ij for: ian, jay,
670ca for: charles, andrew,
670bk for: benjamin, konrad,
670cd for: christopher, duc,
670mb for: michael, brian,
670sj for: sarah, jeffery,
670kr for: kenneth, ryan,
670tj for: thomas, jorge,

Use your CCIS credentials

2.2. Have your group's submission subdirectory organized as:

https://trac.ccs.neu.edu/svn/speckerderivativegame/trunk/
<GROUP_NAME>/<PROJECT_NAME>
where project name is project6 for this project.

Then, if a project asks for part 1, part 2 with sub parts A and B, part 3,
your submission must have the same structure:

/part1
/part2
   /partA
   /partB
/part3

where partA is a subdirectory of part2, etc.
Readme files are appreciated. They should contain
information like: part 1 is in Y.java and part 2
in C.java and program.input.

2.3. If a part of your project asks you to develop a program, submit that
part as an Eclipse project. (From within eclipse, right click the project
and select "team" then "share project"). Your project should have the
following structure
 <PartName>
    |_src
    |   |_<your source code goes here>
    |_test
        |_<Junit 4.0 unit tests goes here>


3. Notes:

- Remember that your source code will be made available to the class
at a later time.

- The submitted robots are made available to the entire class
so that you can check the competition results and observe the
behaviors of all robots and learn from them.

- The Scrum masters need to decide which of those parts they
have time to implement with their team by the deadline.

- The subproject will be evaluated based on how many subprojects
you implement and based on the performance of your player
in the competition.

- It is important to unit test your application.
We expect you to put some "Brain Power" in writing the test cases.
Demonstrate this to us by writing a test plan and
a reasonable amount of test cases.