When you enroll in this course, you'll also be enrolled in this Specialization.
Learn new concepts from industry experts
Gain a foundational understanding of a subject or tool
Develop job-relevant skills with hands-on projects
Earn a shareable career certificate
There are 5 modules in this course
Cloud computing systems today, whether open-source or used inside companies, are built using a common set of core techniques, algorithms, and design philosophies – all centered around distributed systems. Learn about such fundamental distributed computing "concepts" for cloud computing.
Some of these concepts include: clouds, MapReduce, key-value/NoSQL stores, classical distributed algorithms, widely-used distributed algorithms, scalability, trending areas, and much, much more!
Know how these systems work from the inside out. Get your hands dirty using these concepts with provided homework exercises. In the programming assignments, implement some of these concepts in template code (programs) provided in the C++ programming language. Prior experience with C++ is required.
The course also features interviews with leading researchers and managers, from both industry and academia.
This course is oriented towards learners with similar backgrounds as juniors and seniors in a CS undergraduate curriculum. Since learners come from various backgrounds, it is critical you view this lecture AND pass the prerequisite test. This will ensure you have many of the assumed prerequisite pieces of knowledge required to enjoy this course.
Introduction to Cloud Computing Concepts, Part 1•4 minutes
Orientation Towards Cloud Computing Concepts: Some Basic Computer Science Fundamentals•24 minutes
Week 1 Introduction•1 minute
1.1. Why Clouds?•7 minutes
1.2. What is a Cloud?•5 minutes
1.3. Introduction to Clouds: History•8 minutes
1.4. Introduction to Clouds: What's New in Today's Clouds•8 minutes
1.5. Introduction to Clouds: New Aspects of Clouds•8 minutes
1.6. Introduction to Clouds: Economics of Clouds•7 minutes
2.1. A cloud IS a distributed system•5 minutes
2.2. What is a distributed system?•16 minutes
3.1. MapReduce Paradigm•14 minutes
3.2. MapReduce Examples•11 minutes
3.3. MapReduce Scheduling•13 minutes
3.4. MapReduce Fault-Tolerance•9 minutes
Interview with Sumeet Singh•16 minutes
8 readings•Total 80 minutes
Orientation Overview•10 minutes
Syllabus•10 minutes
About the Discussion Forums•10 minutes
Instructions for Taking the Prerequisite Quiz•10 minutes
Course Learning Community and Social Media•10 minutes
Week 1 Overview•10 minutes
Homework 1 Instructions•10 minutes
Programming Assignment Instructions•10 minutes
3 assignments•Total 90 minutes
Homework 1•30 minutes
Orientation Quiz•30 minutes
Prerequisite Quiz•30 minutes
2 discussion prompts•Total 20 minutes
Getting to Know Your Classmates•10 minutes
Homework 1 Discussion•10 minutes
1 plugin•Total 15 minutes
Welcome! Please tell us about yourself.•15 minutes
Week 2: Gossip, Membership, and Grids
3 hours to complete
Module details
Lesson 1: This module teaches how the multicast problem is solved by using epidemic/gossip protocols. It also teaches analysis of such protocols. Lesson 2: This module covers the design of failure detectors, a key component in any distributed system. Membership protocols, which use failure detectors as components, are also covered. Lesson 3: This module covers Grid computing, an important precursor to cloud computing.
2.4. Which is the best failure detector?•5 minutes
2.5. Another Probabilistic Failure Detector•9 minutes
2.6. Dissemination and suspicion•9 minutes
3.1. Grid Applications•6 minutes
3.2. Grid Infrastucture•11 minutes
Interview with William Gropp•20 minutes
2 readings•Total 20 minutes
Week 2 Overview•10 minutes
Homework 2 Instructions•10 minutes
1 assignment•Total 30 minutes
Homework 2•30 minutes
1 discussion prompt•Total 10 minutes
Homework 2 Discussion•10 minutes
Week 3: P2P Systems
3 hours to complete
Module details
P2P systems: This module teaches the detailed design of two classes of peer to peer systems: (a) popular ones including Napster, Gnutella, FastTrack, and BitTorrent; and (b) efficient ones including distributed hash tables (Chord, Pastry, and Kelips). Besides focusing on design, the module also analyzes these systems in detail.
Lesson 1: This module motivates and teaches the design of key-value/NoSQL storage/database systems. We cover the design of two major industry systems: Apache Cassandra and HBase. We also cover the famous CAP theorem. Lesson 2: Distributed systems are asynchronous, which makes clocks at different machines hard to synchronize. This module first covers various clock synchronization algorithms, and then covers ways of tagging events with causal timestamps that avoid synchronizing clocks. These classical algorithms were invented decades ago, yet are used widely in today’s cloud systems.
Lesson 1: This module covers how to calculate a distributed snapshot, leveraging causality again to circumvent the synchronization problem. Lesson 2: This lecture teaches how to order multicasts in any distributed system. Algorithms for assigning timestamp tags to multicasts using various flavors of ordering – FIFO, Causal, and Total – are covered. The module also covers virtual synchrony, a paradigm that combines reliable multicasts with membership views. Lesson 3: Consensus is one of the most important problems in a distributed system, enabling multiple machines to agree. This module uses Paxos, one of the most popular consensus solutions used in the industry today. Paxos is not perfect because consensus cannot be solved completely – an optional lecture presents the famous FLP proof of impossibility of consensus.
The University of Illinois at Urbana-Champaign is a world leader in research, teaching and public engagement, distinguished by the breadth of its programs, broad academic excellence, and internationally renowned faculty and alumni. Illinois serves the world by creating knowledge, preparing students for lives of impact, and finding solutions to critical societal needs.
"To be able to take courses at my own pace and rhythm has been an amazing experience. I can learn whenever it fits my schedule and mood."
Jennifer J.
Learner since 2020
"I directly applied the concepts and skills I learned from my courses to an exciting new project at work."
Larry W.
Learner since 2021
"When I need courses on topics that my university doesn't offer, Coursera is one of the best places to go."
Chaitanya A.
"Learning isn't just about being better at your job: it's so much more than that. Coursera allows me to learn without limits."
Learner reviews
4.3
1,074 reviews
5 stars
63.59%
4 stars
21.41%
3 stars
5.95%
2 stars
2.88%
1 star
6.14%
Showing 3 of 1074
A
AK
5·
Reviewed on Jun 8, 2018
Liked the course very much. Only suggestion is if the speaker could speak a little slower. This will allow the listener to think alongside.
L
LF
4·
Reviewed on Dec 10, 2019
Great course overall as it gives a deep understanding of the cloud technologies. Some homework are too tedious to finish and not really interesting.
K
KP
4·
Reviewed on Dec 5, 2016
Great lectures. However, the starter code for the programming assignment is quite atrocious. Overall, would highly recommend to anyone wanting to learn high level concepts in distributed systems.
When will I have access to the lectures and assignments?
To access the course materials, assignments and to earn a Certificate, you will need to purchase the Certificate experience when you enroll in a course. You can try a Free Trial instead, or apply for Financial Aid. The course may offer 'Full Course, No Certificate' instead. This option lets you see all course materials, submit required assessments, and get a final grade. This also means that you will not be able to purchase a Certificate experience.
What will I get if I subscribe to this Specialization?
When you enroll in the course, you get access to all of the courses in the Specialization, and you earn a certificate when you complete the work. Your electronic Certificate will be added to your Accomplishments page - from there, you can print your Certificate or add it to your LinkedIn profile.
Is financial aid available?
Yes. In select learning programs, you can apply for financial aid or a scholarship if you can’t afford the enrollment fee. If fin aid or scholarship is available for your learning program selection, you’ll find a link to apply on the description page.