varies asynchronously for different users. Such variations in (time- frequency) channel conditions can be exploited to increase system throughput. An opportunistic scheduler assigns the channel to the user with the best chan- nel conditions at a given time. By exploiting this transmission multiuser diver- sity, one can achieve higher total system capacity as the number of users increases (Entrambasaguas et al. 2007, 24). If we consider the QoS requirements of the different data flows, they cannot be guaranteed by assigning a percentage of time to each user (i.e., round-robin policy) because each user may experience a different average link capacity. Hence, advanced scheduling algorithms have been defined to consider different aspects-such as the instantaneous channel conditions, QoS requirements, pending retransmissions, or UE capabilities-in order to allocate transmission turns to users adequately. In LTE, the eNodeB is responsible for implementing the scheduling policies in both downlink and uplink scenarios. The UEs are informed through control channels about the resource allocation decisions on a subframe rate. An example of how channel information is used to manage the resource alloca- tion among users in the downlink is shown in Figure 3.17. In this figure, the upper three-dimensional graph depicts the time-frequency evolution of the instantaneous signal-to-noise ratio (SNR) experienced by two different users. These SNR values will determine the CQI levels to be reported to the eNodeB, as described in previ- ous sections. The reported information is used at the eNodeB scheduler to decide the time-frequency resources used to transmit to each UE (depicted in the lower graph). As it was noted at the beginning of this section, the information about quality of the link, in terms of CQI, may not match exactly the current state of the channel. In order to mitigate this source of error in the scheduling process, a predic- tive algorithm might be applied. In order to achieve a higher system performance in LTE, sched