Cloud computing enables on-demand access to computing and storage resources that can be configured to meet unique constraints of the users with minimal management overhead. The recent rapid growth in the availability of cloud services makes them economically sensible for users with limited computing or storage resources who are unwilling or unable to procure and maintain their own computing infrastructure.However, the top impediment that lies on the way of harnessing all of the benefits of cloud computing is security and privacy considerations that prevent users from placing their data or computations on the cloud. While in general sensitive data can be protected by the means of encryption, computation using the data encrypted via traditional means becomes impossible. Moreover, as the users no longer have direct control over the outsourced data and computation, the cloud provider can be incentivized to delete rarely accessed data or skip some of the computation to conserve resources (for financial or other reasons), which is especially true for volunteer-based computational clouds. Unintentional data or computation corruption might also take place for a variety of reasons including malware, security break-ins, etc. Therefore, it is essential to protect the privacy of sensitive data used in outsourced computation, and verify the integrity of computational results and data storage outsourced to the cloud.Toward this goal, we first devise an efficient storage verification mechanism that allows a user to verify integrity of his storage outsourced to untrusted servers, that might need to be modified through user update requests. Then, we propose computation verification mechanisms that allow a user to verify integrity of computational tasks including large-scale biometric and matrix computations, that have been out- sourced to untrusted servers. Lastly, we design a system for translating a general- purpose program written in an extension of C into its secure implementation and executing the program in a distributed environment. The C extension preserves all current features of the programming language (e.g., pointers) and allows variables to be marked as private and be used in general-purpose computation.