We seek to maximize the data throughput of an energy and time constrained transmitter sending data over a fading channel. The transmitter has a fixed amount of energy and a limited amount of time to send data. Given that the channel fade state determines the throughput obtained per unit of energy expended, the goal is to obtain a policy for scheduling transmissions that maximizes the expected data throughput. We develop a dynamic programming formulation that leads to an optimal closed-form transmission schedule. We then extend our approach to the problem of minimizing the energy required to send a fixed amount of data over a fading channel given deadline constraints.