Teaching Cloud Computing: Motivations, Challenges and Tools