A. Build the database needed to manage the project. You will have to create the necessary tables, forms, reports, and management tools and scripts to complete the project. Be sure to include any scripts or other tools needed to initialize the database as well as manage incoming and outgoing blocks of data. Explain what criteria you use to decide the range of values covered by each work unit. Discuss briefly how you came up with the work unit criteria. Consider how you will manage and store the large amount of data returned by the clients (you can bet this will require lots of storage space). Develope criteria for handling old data blocks, such as embedding expiration dates in outgoing blocks and handling old or duplicate data as it is returned from the clients. Consider how you will prove the integrity of the data being returned when errors might be introduced in a network or while swapping data on floppy disks or other removable media.
B. Write and compile/assemble the clients to produce the 32-bit prime numbers on at least two distinctly different platforms. Keep notes on complications introduced into the clients because they are written for several platforms in a distributed system (multiple languages used, special compiler directives, etc.). Be sure to use plenty of internal and external documentation in case you have to fix bugs or make changes in the clients at some later date. Be sure to include a client version number (and any other important information) in the data returned to the block server so the data can be delt with as needed. Be sure to handle outdated and garbled blocks as well as valid ones. Remember that the output data will have to be handled by the block server database, and that the information displayed on the screen while the client is running will have to be useful and pleasing to look at. You will have to decide what modes the client will run in (background, displaying some sort of text or graph, etc.). Be sure to deal with interrupted operation, especially for single user operating system clients such as DOS.
C. Create some eye candy from the information returned to the block server. Decide whether you want to provide information on where the blocks have been returned from, values or counts of prime numbers produced, average processing rates for different clients and/or systems, and any other statistics which seem interesting to you. Decide how you will present this statistical information on a web site and then create the web site. Include information for individual efforts as well as the overall project.
D. Use the returned blocks of prime numbers. Allow for looking up individual primes and small ranges of primes. Include a method for checking whether or not a value is prime. Add any other uses for your large collection of values that you can think of. Decide whether to use valid, completed data blocks from the block server unchanged or in a new format, and write a brief explanation for your decision.
E. If you have survived all of the above steps and have produced a complete set of 32-bit prime numbers with a way to use them, decide whether to push ahead to 64-bit, 128-bit, or even larger prime numbers. Discuss how the extra storage requirements for these projects might affect your decision. Also discuss some of the changes the clients will require to handle this extended assignment.
F. Make your project available to the rest of the world. As more computing power is required, this project may require an ever growing amount of processing power. Build the extra security and data validation into all parts of the above project so that it can be run on internet. Be sure to use data encryption where hackers might try to return false data, and be sure the data validation is strong enough to handle such attacks. Be sure to set up the project with sufficient bandwidth to handle the large amount of web and data traffic which will result if the project gains any amount of popularity. Be sure to set up any and all mailing lists appropriate for this project--how else will you know how well it is going?