Cloud Computing

Course ID 15319

Description This course gives students an overview of Cloud Computing, which 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. Students will study its enabling technologies, building blocks, and gain hands-on experience through projects utilizing public cloud infrastructures. Cloud computing services are widely adopted by many organizations across domains. The course will introduce the cloud and cover the topics of data centers, software stack, virtualization, software defined networks and storage, cloud storage, and programming models. We will start by discussing the clouds motivating factors, benefits, challenges, service models, SLAs and security. We will describe several concepts behind data center design and management, which enable the economic and technological benefits of the cloud paradigm. Next, we will study how CPU, memory and I/O resources, network (SDN) and storage (SDS) are virtualized, and the key role of virtualization to enable the cloud. Subsequently, students will study cloud storage concepts like data distribution, durability, consistency and redundancy. We will discuss distributed file systems, NoSQL databases and object storage using HDFS, CephFS, HBASE, MongoDB, Cassandra, DynamoDB, S3, and Swift as case studies. Finally, students will study the MapReduce, Spark and GraphLab programming models. Students will work with Amazon Web Services and Microsoft Azure, to rent and provision compute resources and then program and deploy applications using these resources. Students will develop and evaluate scaling and load balancing solutions, work with cloud storage systems, and develop applications in several programming paradigms. 15619 students must complete an extra team project which entails designing and implementing a cost- and performance-sensitive web-service for querying big data.

Key Topics
Cloud computing overview, Public cloud infrastructures, Virtualization, Software defined networks and storage, Cloud storage, Programming models

Learning Resources
Open Learning Initiative for conceptual topics and assessments
TheProject.Zone for all project work on cloud (AWS, Azure and GCP) platforms
Piazza for Q&A and discussion
Videos of recitations

Course Relevance
This project-based on-line course focuses on skill building across various aspects of cloud computing. We cover conceptual topics and provide hands-on experience through projects utilizing public cloud infrastructures (Amazon Web Services (AWS), Microsoft Azure and Google Cloud Platform (GCP)). The adoption of cloud computing services continues to grow across a variety of organizations and in many domains. Students who are interested in adopting cloud resources or frameworks in their academic work or students who want to gain hands-on practical experience to improve their competitiveness in the big data/cloud job market.

Course Goals
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; cloud management techniques and cloud software deployment considerations.
Different CPU, memory and I/O virtualization techniques that serve in offering software, computation and storage services on the cloud; Software Defined Networks (SDN) and Software Defined Storage (SDS)
Cloud storage technologies and relevant distributed file systems, NoSQL databases and object storage;
The variety of programming models and develop working experience in several of them.

Pre-required Knowledge
Programming skills and knowledge of systems from 15-213

Assessment Structure
12 quizzes (20% of total)
10 individual projects (80% of total)

Extra Time Commitments
15-319 is the undergraduate version of this course. If a graduate student wishes to enroll in 15-319, the undergraduate version of the course, the graduate student must have permission from their academic advisor.
This class is offered in an online-only format. International students present in the U.S. cannot enroll in more than one remote class per semester.

Course Link
https://csd.cs.cmu.edu/course-profiles/15-319-619-Cloud-Computing