This work traces the state of the art in quantum key distribution from the perspective of a computer scientist. A brief discussion of the relevant principles of quantum mechanics is given before reviewing the most important quantum key distribution protocols present in the literature. In particular, the BB84 protocol and its many variants will be described as well as Eckert's quantum entanglement approach. We will then see some of the problems that arise in practical implementations, including privacy amplification and the photon number splitting attac