In a balanced code, each code word contains equal number of 1's and 0's. These codes find many applications - data transmission in fiber optics, data integrity maintenance in optical discs, fault tolerant memory design etc. The objective of this research is to develop design methods for error correcting balanced codes. The aim is to design codes which have high information rate and at the same time have simple encoding/decoding algorithms. Other related topics such as DC-free coset codes, balanced codes over higher alphabets, etc. are also being investigated.