Huffman Encoding is one of the very simple algorithms to compress data. Even though it is very old and simple , it is still widely used (eg : in few stages of JPEG, MPEG etc). In this project you will implement huffman encoding and decoding. You can read up in Wikipedia or any other tutorial. Your system should accept a file and you require to form a binary (huffman) tree for the same. During the construction of huffman tree, use the priority queue to select nodes along with smallest frequencies. Just one time you have constructed the tree, traverse the tree and create a dictionary of codewords (letter to code). Provided any new sentences, your system must show how the sentence is converted to huffman code and then decoded back to original sentence. Note that you must implement BST and Heap yourself and must not rely on any language libraries. You can use external libraries like GraphViz to display your huffman tree.