In this course—-the third in a trans-institution sequence of MOOCs on Mobile Cloud Computing with Android–we will learn how to connect Android mobile devices to cloud computing and data storage resources, essentially turning a device into an extension of powerful cloud-based services on popular cloud computing platforms, such as Google App Engine and Amazon EC2.
This MOOC describes by example how to connect Android mobile devices to clouds via the use of object-oriented design techniques, Java programming language features, Jetty middleware, Java Servlets, the Java Spring Framework, and cloud computing platforms, such as Google App Engine.
An extended case study project will be used throughout the MOOC to showcase architectures for communicating with the cloud using HTTP, server-side processing of mobile data using servlets and the Java Spring Framework, and scalable storage of data using no-SQL databases and other platforms.
Because of the importance of building secure and scalable mobile/cloud platforms, this MOOC will not only show you how to program handheld systems that talk to the cloud, but how to do so securely, scalably, and efficiently. Security and scalability topics will be woven into discussions of cloud service creation so that students learn, from the start, how to create robust cloud services for mobile devices.
Although the cloud service topics in this course will be taught in the context of connecting mobile devices to the cloud, the concepts are broader and will give students the ability to create the cloud services to support large-scale web applications, such as social networking applications; cloud services for embedded systems, such as the Internet of Things and Industrial Internet; and wearable computing devices, such as Google Glass.
The course is organized into the following parts:
Section 0: Overview of all the topics covered in this part of the course, which helps you visualize the motivations for–and challenges of–building scalable cloud services to support mobile, embedded, and web applications on cloud computing platforms, such as Google App Engine and Amazon EC2.
Section 1: Applying patterns and frameworks to develop scalable and secure cloud services, which uses an open-source cloud service as a running example to illustrate patterns and frameworks pertaining to service access, mobile/cloud communication, request routing, session handling, data persistence, concurrency and synchronization, synchronous and asynchronous event handling, and security. The bulk of the examples are in Java using the Spring Framework and Jetty middleware platform. The examples can be run on Google App Engine and Amazon EC2.
The PDF and PowerPoint versions of all the slides used in the course will be available online as the videos become available on the course website.
Ideally, students who take this course will be familiar with general object-oriented design and programming concepts (such as encapsulation, abstraction, polymorphism, extensibility ), fundamental Java object-oriented programming language features (such as classes, inheritance, interfaces, and generics available in Java, basic systems programming concepts (such as event handling, processes/threads, synchronization), and networking terminology (such as client/server and peer-to-peer architectures).
Although the lectures are designed to be largely self-contained, it’s recommended (but not required) that students refer to the following books:
Martin Fowler, Refactoring: Improving the Design of Existing Code, Addison-Wesley Professional, 1999.
Goetz et al., Java Concurrency in Practice, Addison-Wesley, 2006.
Doug Lea, Concurrent Programming in Java, Prentice Hall, 1999.
Gamma et at., Design Patterns: Elements of Reusable Object-Oriented Software, Addison-Wesley, Reading, MA, 1995..
Schmidt et al., Pattern-Oriented Software Architecture, Vol 2: Patterns for Concurrent and Networked Objects, Wiley and Sons, 2000.
Buschmann et al., Pattern-Oriented Software Architecture:, Vol 4: A Pattern Language for Distributed Computing, Wiley and Sons, 2007.
Buschmann et al., Pattern-Oriented Software Architecture, Vol 5 On Patterns and Pattern Langauges, Wiley and Sons, 2007.
Much of this material is available online.
The class will consist of lecture videos with integrated quiz questions designed to ensure you understand the material covered in the videos. In recognition that not all participants have the same learning objectives or available time, the course is offered at two levels of engagement:
NormalTrack – Estimated Time Commitment: 3 – 5 Hours Per Week
Students at this level receive a Statement of Accomplishment that certifies advanced proficiency with the course concepts, which will be assessed by weekly auto-graded standalone quizzes. This track is designed for those who wish to engage the material by doing the auto-graded quizzes, final exam, and participating in the online discussion forums, but who may not have the time/interest to complete the auto-/peer-graded programming assignments.
DistinctionTrack – Estimated Time Commitment: 5 – 7 Hours Per Week
Students at this level will receive a Statement of Accomplishment with Distinction that certifies greater mastery of the practice of the course content. In addition to completing the auto-graded weekly quizzes and final exam from the Standard Track, students in this track will also complete auto-/peer-graded programming assignments. The programming assignments will involve writing cloud services using popular software frameworks written in Java, such as Spring Framework. This track is designed for those students wishing to achieve mastery of the course material and to understand its application in realistic project context.