In this tutorial, we study source coding algorithms. Namely, we discuss symbol codes, their properties, Kraft's inequality, optimal codes and Huffman coding. We then study the arithmatic codes. This tutorial covers Chapter 5 and the first half of Chapter 6 of the textbook.