Cloud Computing (Section 2)
|Title||Cloud Computing (Section 2) (51083-2)|
|Instructor||Lionel Barrow (firstname.lastname@example.org)|
|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”) 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. 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.
MPCS 52553 Web Development (not required but strongly recommended)
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 some 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—if you have doubts about your proficiency in these areas please talk with the instructor before signing up for the course.