Mobile applications backed by cloud-based RESTful services have emerged as the primary face of computing in terms of massive consumer participation. Jason Christensen described this system architecture in his OOPSLA 2009 presentation [http://www.slideshare.net/jasonc411/oopsla-2009-combining-rest-and-cloud-a-practitioners-report]. Therefore, not only do we find it important to cover this system architecture in the curriculum, but we also see this architecture as a very effective context for teaching various important computer science topics:
Konstantin drew the inspiration to use Android instead of Swing as a context for teaching these topics from the mobile computing session at SIGCSE 2012 in Raleigh [http://www.sigcse.org/sigcse2012].
Furthermore, we have found the cost of switching from, say, Java Swing to Android minimal. Besides, Android matters in the real world: it is a widely used technology, and mobile app development skills are in increasing demand.
While our overall goals are similar to those of the Sofia framework project [http://sofia.cs.vt.edu/sofia-2114/book], we discuss here a language-based approach but are planning to enhance the practice of Android development in Scala through additional support classes.
As mentioned above, current and future focus has been on these courses:
There are two sbt plugins for developing Android:
The rapidly evolving topic of developing Android apps in Scala is the subject of this discussion forum:
After some experimentation, we have found pfn’s plugin [https://github.com/pfn/android-sdk-plugin] to be easier to use and have adopted it for our Scala-based Android development.
The learning objectives of each example are stated in the example’s readme.
An enhancement of this clickcounter app [https://bitbucket.org/loyolachicagocs_plsystems/clickcounter-android-scala] that addresses at least one following additional functional requirements:
- New user story: a max (^) button as the analogous dual to the reset (0) button.
- Retaining application state during rotation (see here to find out how to rotate the emulator [http://stackoverflow.com/questions/3916096/android-avd-rotate-portrait-landscape-how]).