MPCS 51083 Cloud Computing (Spring 2022)

Section 2
Instructor(s) Barrow, Lionel (lionelbarrow)
Location Ryerson 277
Meeting Times Monday 5:30pm - 7:30pm
Fulfills Elective Specialization - Application Development (APP-2)

Syllabus

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”) 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. We will use commercial cloud offerings provided by Amazon Web Services to build and deploy "real” cloud-hosted applications.

Please refer to the course website above for details on course content and logistics.

Course Prerequisites

Core Programming

MPCS 52553 Web Development (not required, but strongly recommended)

Other 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 boto library to access Amazon Web Services, and most assignments, including the capstone project, will make use of Flask, a Python-based micro-framework for web applications. A brief overview of boto, 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. Knowledge of web application development is not required, but students with little or no web development experience may find some assignments particularly challenging. Ideally, students 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.

Note: Students in past courses have struggled to keep up with homework assignments due to limited experience with Python and knowledge of the Linux command line. See the notes on this page for more detail on expected knowledge: http://home.uchicago.edu/vas/#prerequisites. if you have doubts about your proficiency in these areas please talk with the instructor before signing up for the course.

This course requires competency in Unix and Linux. Please plan to attend the MPCS Unix Bootcamp (https://masters.cs.uchicago.edu/page/mpcs-unix-bootcamp) or take the online MPCS Unix Bootcamp Course on Canvas.

Overlapping Classes

This class is scheduled at a time that conflicts with these other classes:

  • MPCS 51050-1 -- OO Architecture: Patterns, Technologies, Implementations
  • MPCS 51400-2 -- Functional Programming
  • MPCS 51087-1 -- High Performance Computing
  • MPCS 51045-1 -- Advanced C++

Eligible Programs

Masters Program in Computer Science MS in Computational Analysis in Public Policy (Year 2) MA in Computational Social Science (Year 2) Bx/MS in Computer Science (Option 1: Research-Oriented) Bx/MS in Computer Science (Option 2: Professionally-oriented - CS Majors) Bx/MS in Computer Science (Option 3: Profesionally-oriented - Non-CS Majors)