About The Course
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. Although there will be 10 weeks of lecture material, the required core of the course is six weeks long and can be completed flexibly within the ten week schedule to provide flexibility for students during the summer.
An extended case study project will be used throughout the required core of 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. Due to 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.
Four weeks of optional lecture material will also be provided for students who would like to gain a deeper understanding of the patterns and frameworks for building cloud infrastructure building. This material will be presented in the context of the open-source JAWS web server, which is implemented in C++ as part of the ACE open-source object-oriented concurrent and networked programming toolkit.
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.
Note: This course is part of a trans-institution sequence of MOOCs entitled Mobile Cloud Computing with Android
If you just want to take some of the MOOCs in this sequence or take them all in different order you’re certainly welcome to do so, and you’ll still learn a lot. If you take all the MOOCs in this sequence in the order presented, however, you’ll gain a deeper, end-to-end understanding of handheld systems, their applications and services, as well as their integration into the cloud.
Frequently Asked Questions
- What are the course objectives?
Upon completing this course, students should be able to:
- Build cloud services that can support mobile, embedded, or web-based clients.
- Identify security concerns related to client-provided data and common programming flaws that lead to insecure services.
- Apply key pattern-oriented software architecture techniques to develop reusable concurrent and networked cloud services using the Java object-oriented programming language, Servlets, and the Spring Framework.
- Develop Android components to communicate with the cloud and design/implement application-level protocols on top of HTTP.
- Implement data persistence components for cloud services and understand scalability issues with varying architectures
- Know where to find additional sources of information on how to build secure and scalable cloud services for mobile devices, embedded systems, and web applications.
This MOOC and two other MOOCs called Programming Mobile Applications for Android Handheld Systems, which is taught by Professor Adam Porter from the University of Maryland, and Programming Mobile Services for Android Handheld Systems, which is taught by Professor Douglas C. Schmidt, have been designed to complement each other. In particular, some of the programming assignments and the course project for both courses will be coordinated. Professor Porter's will focus on the design and programming of user-facing applications, and will be taught first, starting in January 2014. Professor Schmidt's MOOC will focus on middleware systems programming topics, such as synchronous and asynchronous concurrency models, background service processing, management of structured data, and local inter-process communication and networking, and will be taught second, starting in April 2014. Additional information on our trans-institutional MOOC sequence is available here and here.
You can take the course without the other two courses in the sequence. If you just want to take some of the courses in this sequence--or take them all in different order--you're certainly welcome to do so, and you'll still learn a lot. However, if you take all the courses in this sequence in the order presented you'll gain a deeper, end-to-end understanding of handheld systems, their applications and services, as well as their integration into the cloud.
This MOOC is heavily based on courses we teach at Vanderbilt, such as the course Principles of Software Engineering. The course lecture material is similar. The quizzes, programming assignments, and level of feedback for the Vanderbilt courses are different, however, since the courses at Vanderbilt have many fewer students, so there's significantly more personalized guidance from the professor and TAs that can't (yet) be replicated via a MOOC.
The programming assignments in this course are designed for the Java programming language. Although you're welcome to use other languages to implement the cloud services, if you stray from Java you'll have more work to do to map what we're covering in the videos and projects to the languages you want to use. You may also find it hard to get feedback on your work via the Coursera peer-grading system .
Yes. Students who successfully complete the quizzes and assignments in this class will receive a Statement of Accomplishment signed by the instructor. There will be two levels of Statements of Accomplishment: Normal Track and Distinction Track. The difference between these two tracks is covered at the Coursera website for this MOOC.
We recommend watching the videos multiple times, looking for different levels of meaning in the diagrams and the examples. Likewise, we recommend reading any papers referenced in the lectures, as well as material from the (optional) recommended reading. Naturally, participating in the online discussion forum (and ideally, a meetup group if one is available in your area) will help make the course material more engaging.
Our course assumes that students are comfortable programming in Java and have some experience programming Android apps. If you don't have any significant Java programming background we recommend that you first take the Creative, Serious and Playful Science of Android Apps MOOC, which is a novice-friendly introduction to computer science and programming Android-apps for smart-phones and tablets. No prior programming knowledge is necessary for that MOOC. Likewise, we also recommend that you take Professor Adam Porter's MOOC Programming Mobile Applications for Android Handheld Systems since his course provides important coverage of Android app programming that will be useful in our course.
There is no required textbook, per se. There's lots of information available in the videos, slides, and the URLs mentioned in the slides that will help you learn the material we cover in this class. For deeper mastery of the material, however, please see the list of "recommended reading" on the course webpage for a list of books that are closely related to the topics of the course.
The videos from Professor Porter's MOOC Programming Mobile Applications for Android Handheld Systems provide step-by-step instructions on how to setup an Android development environment using Eclipse and Java. Eclipse will be the primary development environment used in this course. Videos will be provided on how to setup the Eclipse plug-in for Google App Engine. If you're using a non-Eclipse development environment (such as Intellij IDEA) you'll need to enlist the help of other students on the online discussion forum.
Many videos about patterns and frameworks appeared in the Spring 2013 offering of the POSA MOOC. You can find links to all these videos here. The videos in Section 2 and the Appendix have lots of background information on patterns and frameworks. If you're a Safari online book club member you should check out the Design Patterns in Java video training series that covers the "Gang-of-Four" patterns.
Coursera recommends using the Chrome and Firefox browsers. There's also a mobile app for Coursera MOOC, as well.