One of the important blocks in any communication system is the source encoder which reduces the rate of transferred data. In many applications, instantaneous decoding is an essential requirement. This enforces the designer to use prefix-free codes in which no codeword is the prefix of any other codeword. Redundancy is the most important measure for evaluating the performance of a code for a source. The optimal prefix-free code for a source is one with the minimum redundancy. The optimal code can be easily obtained by the well-known Huffman algorithm. Shannon showed that in general, the redundancy of the optimal prefix-free code lies between zero and one. Clearly, if something about the symbol probabilitites is known, the bounds zero and one can be improved. The bounds in terms of the most likely, the least likely and an arbitrary symbol probability have been obtained in the literatures which are reviewed in this thesis. After investigating the known approaches to obtaining the bounds, some different viewpoints are proposed which lead us to derive new upper and lower bounds in terms of two known arbitrary symbol probabilities. Also, the proposed approach is used to obtain new lower bounds for the redundancy of the optimal fix-free codes and the optimal codes with a given Kraftsum. Key words: Prefix-Free Code, Redundancy, Huffman Code, Fix-Free Code