Introduction and Disclaimer

The purpose of this assignment is to introduce those interested in distributed processing projects to some of the details involved in putting such projects together. Try this sample assignment at your own risk! Distributed processing projects require a lot of resources, skill, time, and patience. I am not responsible for any smashed, burned, or otherwise destroyed or damaged hardware or software which may result from your attempts to complete any part of or all of this or any other assignment (distributed or otherwise). Neither am I responsible for any personal or other problems you might have to deal with if you get involved in this or any other project. Deal with life, the universe, this project, and everything yourself!

Distributed Prime Number Generater Assignment

Using the database management system (DBMS) and compilers and/or assemblers of your choice, create and run to completion a distributed project to produce all of the prime numbers which can be represented by an unsigned 32-bit integer (2 through 2^32). As you tear out your hair and ruin your social life working on this assignment, perform the necessary tasks to complete the following:

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?

Where to Turn in Your Work

If you have completed the entire assignment above, you are ready to turn it in to your brain. By this time, dozens of computers around the world may be producing prime numbers for you at any given second, and you will be continually dealing with complaints, system failures of all kinds, and continually upgrading the clients and changing the way they produce prime numbers for you. With all of that effort sapping your strength and damaging your brain, you will have to pour something back into your head to keep going. Maybe one of the mailing lists you set up will help, or maybe not. Just do not turn the projectin to me for grading--the participants who run the clients as they complain about the statistics will let you know exactly how well (or poorly) you are doing.

END OF DISTRIBUTED PROCESSING ASSIGNMENT

  • My home page.