This document discusses and compares two lossless data compression algorithms: Huffman coding and arithmetic coding. It provides an overview of each algorithm, including how Huffman coding constructs a variable-length code tree based on character frequencies and how arithmetic coding replaces the input with a single fractional number between 0 and 1. The document also briefly describes run-length encoding. It implemented these lossless compression algorithms and experimentally compared their performance on compressing text data.