CSCI.4430/6969 Programming Languages

Spring, 2011

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:

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
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

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 or Only submit one assignment per pair via RPILMS.