This document discusses homomorphic encryption, which allows computations to be performed on encrypted data without decrypting it first. It covers partially homomorphic encryption that supports a limited set of functions, somewhat homomorphic that allows a limited number of operations before error occurs, and fully homomorphic developed by Gentry in 2009 that supports any function. Applications include cloud computing, electronic voting, data mining, and medical records. However, current fully homomorphic systems are too slow for many uses, but partial schemes have found some success.