
Cloud Computing (MPCS 510831)
Cloud computing is being widely adopted by enterprises of all sizes due to the low initial investment required, attractive operating costs, and elastic capacity that can best serve the highly variable demands of modern applications. In this class we introduce the core concepts and services that underpin public cloud infrastructure.
Note: Autumn 2025 class is online.
All class acitivies are held online via Zoom—there is no in-person session for this class. We use a modified "flipped classroom" structure: each week I present a summary of the week's topic(s) during class and you watch pre-recorded videos that futher expand on the topic(s). During class we engage in discussion, demonstrations and some hands-on exercises where you can follow along on your own computer or work in groups. Class will meet via Zoom for 2–2.5 hours each week. Class discussion will not be recorded. You are expected to attend class and ask questions, as this will greatly aid in your understanding of the material.
As a software engineer—and, really, anyone in a software-related role—you must be familiar with cloud computing technologies since most new applications are developed and deployed “in the cloud”, and existing applications will often require integration with cloud-hosted services to take advantage of new capabilities. This course provides an introduction to cloud computing, with specific consideration for web-scale application development. We will focus primarily on infrastructure and platform services, and will introduce software-as-a-service from the perspective of a consuming application. The course will emphasize practical applications of cloud computing technologies, with sufficient exploration of their theoretical underpinnings to inform architectural, design, and implementation decisions. We will use commercial cloud services provided by Amazon Web Services to build and deploy cloud-hosted applications.
Topics
The syllabus varies slightly each quarter, but we typically cover most of the following topics:
- A (very) brief history of distributed computing and clouds
- Cloud computing defining characteristics
- Virtualization and Infrastructure-as-a-Service
- Application concurrency and data consistency models
- Identity and access control in cloud computing systems
- Cloud economics
- Cloud storage systems: Characteristics and tradeoffs
- Inter-service communication: Messaging and notifications
- Cloud security, privacy, and policy compliance
- Serverless computing, microservices, and containerization
- Automated deployment and operations techniques
- Fault-tolerance and disaster recovery strategies
Coursework
Multiple programming assignments will be due each week. You are required to complete a subset of the assignments, and are encouraged to also work on a few optional assignments to enrich your learning. Many of the earlier programming assignments will provide components to be used in later assignments, so it is important to stay current on coursework.
Prerequisites
This course assumes no prior knowledge of cloud computing. Programming assignments require familiarity with Python and use of Linux commands, as well as simple shell scripts. We will use the boto3 SDK for Python to access Amazon Web Services, and some assignments, including the capstone project, will make use of Flask, a Python-based micro-framework for web applications. A brief overview of boto3, the web framework, as well as a list of reference materials will be provided; additional concepts will be introduced as they are needed to complete assignments.
Are you ready for this class?
Knowledge of web application development is not required, but students with little or no understanding of web methods may find assignments in this class particularly challenging. Ideally, you should understand the fundamentals of web APIs in general, and the REST approach in particular. An understanding of database concepts, such as referential integrity and ACID properties, is also useful.
Check readinessGrading and Guides
Assignments and Grading
Due dates and important information on the grading scheme used in this class.
Resources
The Canvas site for this course is here .
The Canvas site contains video lectures and final grades for homework assignments. All online discussion happens in Ed Discussion (also accessible via Canvas). Before posting a question make sure you read this important information.
We also use a question "parking lot" .
As you watch the videos (or at any point during the quarter) capture your questions here for discussion during class. You can also upvote questions added by other students. It's all anonymous so please don't hold back!
All other class content is on our shared Google Drive .
On Google Drive you will find lecture slides, assignment specifications, optional readings, and class exercises. You must be authenticated with your CNetID@uchicago.edu account to access these files; using any other Google account will not work.
If you need a refresher on Linux or GitHub, the department provides guides to these and other resources .
There is no prescribed textbook for this course. We will refer to a variety of online resources, including selected readings on cloud concepts, programming guides for Amazon Web Services, and references for various technologies used in programming assignments. If you really want a book to refer to, of the myriad introductory cloud computing texts available I recommend "Cloud Computing for Science and Engineering", by Ian foster and Dennis Gannon.