Cryptography is the art and science of protecting secret information. In this course I will describe the main types of secret key cryptosystems and hash functions which had been proposed so far, and study their security against various types of cryptanalytic attacks. I will then describe the latest developments in side-channel attacks, which exploit physical leakages (running time, power consumption, electromagnetic radiation,etc) from the implementations of these mathematical schemes to efficiently break even the most secure cryptosystems. Finally, if time permits I will describe how such cryptographic schemes are used in practice in various internet protocols, and how cyber attacks manage to overcome these defenses.