This document provides lecture notes on cloud computing. It discusses distributed system models and enabling technologies, including the evolution from high-performance computing to high-throughput computing to meet increasing internet demands. It also covers computer clustering for scalable parallel computing, discussing fundamental design issues like scalable performance, single system image, internode communication, and fault tolerance. Finally, it briefly introduces virtualization and its implementation at different levels.