Programming the Android Platform - A Student-Driven Effort to Develop Open-Source Android Teaching Materials

Adam Porter

Quick Links: Open Source Teaching Materials used in CMSC436: Programming Handheld Devices

Starting in the summer of 2008, I and several others developed and offered a course at the University of Maryland on programming mobile applications for the iPhone platform. These courses were well-received and the students really seemed to enjoy experimenting with this cool, new technology.

After a while however, as Android phones became more popular and more widely-available, students began approaching me, asking, "iPhone only? What about Android?" And I didn't really have a great answer. The truth was that it is a lot of work to put together a course. I had a lot of other work to do, and having just spent a year on the iPhone course, I wasn't too keen to do it all over again for Android.

Still, I knew in my heart that the students were right. Mobile application development skill were (and continue to be) in high demand, the Android platform had matured greatly since we started the iPhone course, and its user base was growing rapidly. So there was a market for Android development courses. Also, from an educator's point of view, Android, unlike iPhone, relies on tools and platforms that are already familiar and readily available to UMD students, such as Java, Eclipse, Junit and commodity PCs. This frees up about 25% of class time, allowing me to shift from teaching Apple-specific tooling to teaching deeper mobile application concepts.

To reconcile these forces (my lack of time and the student's interest in Android), I decided to make a deal with my students. I would organize a 1-unit seminar course on Programming the Android Platform; the students would each research different Android topics (mostly by reading the developer.android.com website and working through the examples found there), develop presentations on those topics, and then present them to the class. As each student prepared their presentations, I worked with them, providing further technical resources, slide templates and presentation feedback. By the time the semester finished the students had created a initial set of slides covering a wide variety of Android topics.

Starting from the student's original work, I then extensively edited all the presentations: reorganizing material, refactoring some presentations into multiple smaller, more focused presentations, adding many source code examples, filling in gaps in topic coverage, etc. Although these materials continue to be a work in progress, we're now publishing them so that others freely use them.

Going forward, I will continue to expand this work. In particular, I am actively adding new topics, new conceptual material, and new infrastrucure and applications. Some examples of this include:

Click here to see our original Android teaching materials. Click here to see the latest version being used in CMSC436: Programming Handheld Devices . Feel free to browse, use and share any of these. I also welcome your comments, corrections and improvement ideas. You can reach me at aporter@cs.umd.edu.