This document discusses the challenges of dynamic resource allocation and task scheduling in heterogeneous cloud environments. It outlines that resource allocation involves deciding how to allocate resources to tasks to maximize utilization, while task scheduling assigns tasks to processors to minimize execution time. The major challenges are optimizing allocated resources to minimize costs while meeting customer demands and application requirements. Allocating resources dynamically in heterogeneous cloud environments is difficult due to issues like resource contention, scarcity, and fragmentation. The document also discusses approaches to resource modeling, allocation, offering, discovery and monitoring that algorithms must address to effectively allocate resources on demand.