#### Programming Assignment 3.

This assignment is to be done either individually or in pairs. Do not show your code to any other person and do not look at any other person's code. Do not put your code in a public directory or otherwise make it public. However, you may get help from the TAs or the instructor. You are encouraged to use the RPILMS Discussions page to post questions so that other students can also answer/see the answers.

The goal of this assignment is to practice concurrent and distributed programming using the SALSA programming language.

You are to analyze three-dimensional data from the Sloan Digital Sky Survey, in particular, stars in our MilkyWay galaxy, for future human space colonization. Your program needs to compute the following:

• Closest neighbours Compute the set of pairs of stars that minimize pairwise distance.
• Farthest neighbours Compute the set of pairs of stars that maximize pairwise distance.
• Ideal hub stars Compute the set of stars which minimize the maximal distance to any other star.
• Ideal jail stars Compute the set of stars which maximize the minimal distance to any other star.
• Ideal capital stars Compute the set of stars which minimize the average distance to all other stars.

More information on Milky Way visualization can be found in the associated MilkyWay@Home forum.

You are given a stars text file with the first line giving the total number of stars in the file followed by one line per star representing each star's three dimensions <x,y,z> as X Y Z. Please remove duplicate entries in your program. Your output should look as follows:

```d1  // minimal pairwise distance
s11 s12
s13 s14
...

d2  // maximal pairwise distance
s21 s22
s23 s24
...

d3 // minimum maximal distance
s31 s32
s33 s34
...

d4 // maximum minimal distance
s41 s42
s43 s44
...

d5 // minimal average distance
s51
s52
...
```
where d_i denotes a distance and s_ij denotes a three dimensional star coordinate.

### Part 1 - Concurrent Solution

Using SALSA, write an actor-based solution to the space colonization problem.

### Part 2 - Distributed Solution

Write a distributed space colonization solution in SALSA.

### Extra Credit - Mobile Actors Solution

Write an extension of your distributed space colonization solution so that actors can move to find better computational resources.

### Other Possible Extensions

• Provide an analysis of sequential vs parallel execution performance.
• Provide an analysis of scalability.
• Develop a fault-tolerant distributed solution.

Due Date: April 29, 2011.

 Received Time Grade Modification before Thursday, April 28, 11:59PM +10% before Friday, April 29, 11:59PM no modification (on time) before Saturday, April 30, 11:59PM -10% before Monday, May 2, 11:59PM -25% after Tuesday, May 3, 12:00AM not accepted

Grading: The assignment will be graded mostly on correctness, but code clarity / readability will also be a factor (comment, comment, comment!).  See the professor or TAs, if you have ideas for other extensions for this assignment and would like extra credit for implementing them.

Submission Requirements: Please submit a ZIP file with your code, including a README file. In the README file, place the names of each group member (up to two). Your README file should also have a list of specific features / bugs in your solution. Your ZIP file should be named with your RPILMS user name(s) as the filename, either userid1.zip or userid1_userid2.zip. Only submit one assignment per pair via RPILMS.