This course provides working experience with, and an overview of the essential features of Cloud Computing, and puts them into a context of other computing architectures. Students will use multiple cloud providers’ platforms to implement fundamental algorithms as well as make use of these platforms for simpler purposes. This course describes the major variants and delivery models of Cloud Computing with their specific strengths, challenges, and the situations for which they might be best suited. Building on this background, we will then examine many of the quality attributes of software systems to see how well they are supported by the various Cloud architectures. We will pay particular attention to security and integration.

Practical exercises will include:

  • Virtualization (Xen, Virtual Machines, Containers)
  • Distributed File Systems (HDFS)
  • Programming models for distributed computations (MPI, Hadoop MapReduce, Apache Spark)
  • SQL and NoSQL databases (HBase, neo4j)

To build familiarity with the real-world use of Cloud Computing students will learn about and then apply a cost model for using traditional “on premise” deployment of a software system vs a Cloud deployment. Finally, students will build a very simple application on both PaaS and IaaS, starting with analyzing vendor offerings, then selecting a vendor and deploying into their environment.