Cloud Computing

Title Cloud Computing (51083)
Quarter Summer 2015
Instructor Vasilios Vasiliadis, Computation Institute, University of Chicago (vas@uchicago.edu)
Website

Syllabus
Course Description
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. Software engineers must be familiar with cloud computing technologies since many new applications they develop will be 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 application development in two contexts: highly scalable (or so-called “web-scale”) web applications, and enterprise applications in a hybrid environment comprising both on-premises and cloud infrastructure. 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. Topics to be covered include:
 
  • A (very) brief history of distributed computing and the motivation for cloud computing
  • An overview of cloud computing service models and economics
  • Virtualization and the Infrastructure-as-a-Service (IaaS) service model
  • Authentication, authorization, and accounting in cloud computing systems
  • Application concurrency and consistency models
  • Cloud storage and data management considerations (S3, CloudFront)
  • Cloud databases
  • Inter-service communication (messaging, notifications, ………...
  • Cloud infrastructure for "big data” analytics (filesystems, tools, techniques)
  • Cloud services and mobile applications
  • Network considerations and application deployment models
  • Automated operations and the Platform-as-a-Service (PaaS) service model
  • Integration and hybrid cloud/on-premises applications
  • Security, privacy, and policy compliance
  • Designing for fault-tolerance and disaster recovery strategies
 
We will use commercial cloud offerings such as those provided by Amazon Web Services and Salesforce Heroku to build and deploy "real” cloud-hosted applications.
 
Coursework
During the first six weeks of the course, a series of short programming assignments will be due each week. During the last four weeks we will work towards a capstone project that brings together many of the concepts and technologies covered in the course. Some of the earlier programming assignments will provide components to be used in our capstone project so it is important to stay current on coursework, otherwise you may find completion of the capstone project very challenging.
 
Grading
The grade for this course will be heavily weighted towards the capstone project. There will also be a short quiz at the beginning of class in week four and in week seven. The quizzes will cover material that you should be familiar with if you have attended class and completed the programming assignments.
 
Prerequisites
This course assumes no prior knowledge of cloud computing. Programming assignments require familiarity with Python (an introductory course should be sufficient) and use of the Linux command line (basic commands and simple scripts). We will use the boto Python library to access Amazon Web Services, and some assignments, including the capstone project, will make use of the Bottle micro-framework for web applications. An overview of boto and Bottle, as well as a list of reference materials will be provided; additional concepts will be introduced as they are required. A basic understanding of relational databases and SQL is recommended. Knowledge of web APIs and the REST approach will be useful but is not required.
 
Reference Material
There is no formal textbook for this course. We will refer to an extensive list of online resources, including selected readings on cloud concepts, programming guides for Amazon Web Services, and references for various technologies used in programming assignments.
Prerequisites (Courses)

Core programming requirement

Prerequisites (Other)

Satisfies

Time

TBD

Location

TBD