Quick summary about volunteer computing for school assignment..
Volunter computing is a type of distributed computing in which computer owners donate their computing resources (such as processing power and storage) to one or more “projects”.
Important characteristics of Volunteer Computing:
- Participating machines are not able to continuously connected or available to the system.
- It is highly dynamic, which means it has no guarantee how many participating machines will be available at given time or how long a given resource will be available in the system
- To reach certain level of availability, there are few methods:
- Collective availability , possible to be used as distributed data storage [5,6]
- Replication 
- Erasure code 
Availability in volunteer computing can be classified into
- CPU availability, refers to the fact that CPU is available to perform computations in behalf of distributed system. It is related to available CPU resource for computation.
- Host availability, it is more general than CPU availability because it includes other computer resources such as disk.
Example of Volunteer Computing systems:
Ensuring Collective Availability in Volatile Resource Pools via Forecasting
 The Computational and Storage Potential of Volunteer Computing , http://arxiv.org/ftp/cs/papers/0602/0602061.pdf
Network coding for distributed storage systems
DHT-based self-adapting replication protocol for achieving high data availability
The Volunteer Computing Architecture Based On Role Analysis
P3: P2P-based Middleware Enabling Transfer and Aggregation of Computational Resources
SETI@home: an experiment in public-resource computing
BOINC: A system for public-resource computing and storage
XtremWeb : A Generic Global Computing System
MyGrid – A complete solution for running Bag-of-Tasks Applications
Comments and suggestions are welcomed!!