Course discipline: Networking
Lecture/Lab/Rep hours/week: 1 hour Recitation per week, Weekly online modules, Weekly projects
Semester/year offered: Fall/Spring
Pre-requisites: Knowledge of Computer Systems, Java programming.
This on-line course gives students an overview of the field of Cloud Computing, its enabling technologies, main building blocks, and hands-on experience through 4 projects utilizing a public cloud (Amazon Web Services). Cloud computing services are being adopted widely across a variety of organizations and in many domains. Simply, cloud computing is the delivery of computing as a service over a network, whereby distributed resources are rented, rather than owned, by an end user as a utility.
The course will introduce this domain and cover the topics of data centers, virtualization, cloud storage, and programming models. As an introduction, we will discuss the motivating factors, benefits, challenges, and service models. Modern data centers enable many of the economic and technological benefits of the cloud paradigm; hence, we will describe several concepts behind data center design and management. Next, we will focus on virtualization as a key cloud technique for offering software, computation and storage services. We will study how CPU, memory and I/O resources are virtualized, with examples from Xen and VMWare, and present real use cases such as Amazon EC2. Subsequently, students will learn about different cloud storage concepts including data distribution, durability, consistency and redundancy. HDFS, PVFS, HBASE, Cassandra and S3 will be presented as case studies.
Students will understand the details of the MapReduce programming model and gain a broad overview of alternative programming models such as Pregel, and GraphLab. Students will work with Amazon Web Services, use them to rent and provision compute resources and then program and deploy applications that run on these resources. Student will develop and evaluate scaling and load balancing solutions. In addition, students will work with cloud storage systems and learn to develop applications in the MapReduce programming paradigm. Students will have to complete a project to design and implement a complete web-service solution for querying big data. For this project, the students are evaluated based on the cost and performance of their web services.
The goal of this class is to give students an overview of the field of Cloud Computing, and an in-depth study into its enabling technologies and main building blocks. Students will gain hands-on experience solving relevant problems through projects that will utilize existing public cloud tools. It is our objective that students will develop the skills needed to become a practitioner or carry out research projects in this domain. Students will learn
- the fundamental ideas behind Cloud Computing, the evolution of the paradigm, its applicability; benefits, as well as current and future challenges;
- the basic ideas and principles in data center design and management;
- different CPU, memory and I/O virtualization techniques that serve in offering software, computation and storage services on the cloud;
- about cloud storage technologies and relevant distributed file systems;
- the variety of programming models and develop working experience in one of them.
After completing this course students will be able to:
- Explain the core concepts of the cloud computing paradigm: how and why this paradigm shift came about, the characteristics, advantages and challenges brought about by the various models and services in cloud computing.
- Apply the fundamental concepts in datacenters to understand the tradeoffs in power, efficiency and cost.
- Discuss system virtualization and outline its role in enabling the cloud computing system model.
- Illustrate the fundamental concepts of cloud storage and demonstrate their use in storage systems such as Amazon S3 and HDFS.
- Analyze various cloud programming models and apply them to solve problems on the cloud.
- Build cloud services that apply these concepts