Course Review – Programming Cloud Services for Android Handheld Systems: Security

Here is my review of Jun-Jul 2015 Coursera offering of Programming Cloud Services for Android Handheld Systems: Security, which is the last course in
Mobile Cloud Computing with Android Specialization. The course rankings are inconclusive, while I passed with 100% grade.

Technologies and Material. The course provides extensive introduction into client-server and mobile security. Discussed are web sessions, HTTPS, Oath 2.0, classic man-in-the-middle and SQL injection attacks + security model of Android. Homework includes checking and fixing the vulnerabilities of Android 4.0, implementing basic Oath 2.0 token authentication + basic (self-signed) certificate validation. Defensive programming techniques are outlined. Such material is often lacking in basic CS courses and this Coursera course fills the gap.

Instructor/lectures. The course is taught primarily by Dr. Jules White (Vandelrbilt) He uses a Lightboard described below. Unfortunately, no lecture notes/slides are provided, thus reconstructing course material is non-trivial. Relevant real life examples emphasize the importance of security.

Course Review – Programming Cloud Services for Android Handheld Systems: Spring

Here is my review of Jun-Jul 2015 Coursera offering of Programming Cloud Services for Android Handheld Systems: Spring, which is the last but one course in
Mobile Cloud Computing with Android Specialization. It is ranked 4 out of 5 (good), while I passed with 100% grade. The course migrated to a new platform since then.

Technologies and Material. The course provides extensive introduction into building REST API client-server apps. Students learn how to divide responsibilities between parts of code, how to seamlessly and efficiently integrate data processing within the server the Android client. The server is implemented with Spring MVC controllers launched by Spring Boot and compiled with Gradle. Data handling on the server side includes either JPA or NoSQL databases such as MongoDB and DynamoDB. Android client is implemented with Retrofit, while data processing on the client is done via Content Providers, Content Resolvers, and SQLite. Homework is hard and requires a lot of time, since specifications for the client and the server are extensive and approach the complexity of the real-world apps. Like in the real world, the homework apps are gauged by their ability to work correctly and not crash. Three homework assignments are (1) building a working client to a given server; (2) improving a server to add functionality; (3) building a working client-server pair. I tested all code with a client on an Android 5.0 phone connecting via WiFi to a server on a Windows 8.1 laptop.

Instructor/lectures. The course is taught by 2 professors: Dr. Jules White (Vandelrbilt) and his senior colleague Dr. Douglas Schmidt. Jules uses a new technology called a Lightboard – he faces the audience, writes with a marker on a transparent glass, and students can see both him and text. The professors deliver different material: Jules concentrates on API + basic principles, while Doug talks about patterns, structuring the code + advanced data handling in Android. All examples are posted on Jule’s GitHub page. A lot of optional material on patterns and his ACE server is provided by Doug.

Course Review – Programming Mobile Applications for Android Handheld Systems: Part 2 (Adam Porter, UMD)

Here is my review of May-Jun 2015 Coursera offering of Programming Mobile Applications for Android Handheld Systems: Part 2, which is the second course in
Mobile Cloud Computing with Android Specialization. It is ranked 4.4 out of 5 (very good), while I passed with 100% grade.

Technologies and Material. The course dives deep into user interactions with Android, interactions of applications with each other, and handling of sensors.
More specifically, basic Threading, Handlers, AsyncTasks, and Notifications are mixed with Graphics, Gestures, and Multimedia + handling of accelerometer and location sensors.
Programming assignments involve completing Java code. Students are asked to build a fully functional app from scratch for a final project. Unlike for the Part 1, the created app (DailySelfie) is quite meaningful. Course apps are implemented in Eclipse.

Instructor/lectures. Lectures are very applied, mostly consisting of in-depth discussions of working apps and their source code. Adam Porter supports his brand from Part 1 of the course, being very enthusiastic and very eager to check your knowledge every minute.
The course is a lot of fun. It discusses cutting edge topics of modern applications, especially the ones dealing with retrieval/processing/presentation of data.