The scheme used to assign energy and bits, known as bit loading algorithm, is an important aspect of the design of a Dscrete Multitone Modulation (DMT) system. Previous algorithms are either computationally efficient but suboptimal or optimal but not suitable for practical data transmission. In this thesis, we present an optimal integer bit loading algorithm. This algorithm assigns a number of bits to different subchannels in order to maximize the data rate for a given energy by using integer programming. Furthermore, since the bit loading problem requires the integer variable be binary (zero-one), the optimal solution can be obtained more easily than the general integer programming problem. The proposed algorithm not only offers significant implementational advantages over the well-known water filling method but also shows better performance than other algorithms that rely on rounding to integer rates. We also present simulation result of this proposed loading algorithm applied to the CAS HDSL test loops.