Goal of the course: Millions of people around the world use cloud services, and the numbers are growing rapidly. This poses question: how do we build software systems and components that scale to millions of users and petabytes of data, and are "always available"?

Today service providers such as Google, Bing, Facebook, etc. run distributed systems that scale to millions of requests and thousands of machines from multiple geographically distributed data centers. Increasingly, the major providers (including Amazon, Google, Microsoft, HP, and IBM) are looking at "hosting" third-party applications in their data centers - forming so-called "cloud computing" services.

This course focuses on the issues and programming models related to such cloud computing environments and distributed data processing technologies: data partitioning, storage schemes, stream processing, and "mostly shared-nothing" parallel algorithms.

Content of the course:
  • Architectural principles of cloud computing
  • Scalability of cloud services (storage, computing, ...)
  • Building blocks for cloud services
  • Large scale computations in cloud environments
  • Programming models for cloud services
  • Providing scalable web services from the cloud

This course is supported in part by an AWS in Education Grant award.