I’ve spent time the last two weeks visiting various universities to see how they do research and teaching on mobile phone programming. I’m posted on the research elsewhere, but wanted to summarize here what I learned about teaching at MIT, Georgia Tech and UCLA.
Based on what I’ve seen, the model for a mobile phone programming class would be a project-based class that combines needs analysis, use cases and prototype system development. Add in some sort of revenue model analysis, and you have a course that introduces budding software engineers to the possibility of entrepreneurship. (Absent revenue model analysis you have the typical engineering “make something cool and let’s see if we can sell it.”)
The class assumes students already have basic programming down pat, and also have at least one project course under their belt. This would be either a master’s level class or an upper division class that follows (say) software engineering.
Building Mobile Applications. The most famous course on this topic probably that by Hal Abelson, who is now the dean of teaching programmers at MIT. 24 years ago he shifted the EECS introduction to programming to Scheme (MIT’s local dialect of Lisp) with his text, Structure and Interpretation of Computer Programs.
We met with Abelson for nearly an hour to discuss his Spring and Fall 2008 classes offered to MIT CS undergraduates. The spring course (Building Mobile Applications with Android) got great writeups, perhaps because one of his teams won $300K in prize money from the Android Developer Challenge, Google’s Java programming contest.
The student application, Locale, was one of the first made available on the Android Market, and the team is evaluating commercial possibilities. Not a bad return for a 13-week class.
This semester, the class has 10 teams and about 40 students. For Abelson, a founding director of the Free Software Foundation, the iPhone was ruled out due to Apple’s NDA requirements for iPhone developers (abandoned too late for this semester). The projects are instead spread across three platforms.
Instead of being entirely about Android, the Fall course has more balance. Four projects are using Android in Java. Three are using Microsoft Visual Studio and the Windows Mobile SDK, supported by Microsoft Research New England. The remaining three are supported by the Nokia Research Center in Cambridge — two Java applications and one using Python (PyS60).
The class is extremely labor-intensive. Abelson credited Andrew Yu, (manager of mobile services for MIT) with much of the work. Each team has an industry veteran mentor — essentially a voluntary TA. Paul Oka of MSR said he spends 3 hours/week in the class and team meeting, and as much as another 5 hours early in the semester when the students are getting started.
Pervasive Computing. Abelson’s was not the first mobile phone programming course at MIT. Larry Rudolph taught a series of pervasive computing courses, first with the iPaq and then with Nokia phones using PyS60. From this effort, he wrote a boo to provide a Bluetooth programming tutorial and a 2003 pedagogy article in IEEE Pervasive Computing.
NextLab. Abelson’s course is not even the only mobile phone course at MIT this semester. If Rudolph’s course was more technology-oriented than Abelson’s, then the Nextlab course at the Media Lab is more project and need oriented, with a distinct social entrepreneurship spin. The “NextLab” course is part of MIT’s “Next Billion Network,” referring to the next 1 billion cell phone users expected to be added over the next four years — mostly in less developed countries.
We met one of the NextLab instructors (Luis Sarmenta) and visited a class session run by the other (Jhonatan Rotberg). We heard presentations by three projects, servicing Mexican farmers, rural Indian mobile commerce, and Boston low income preschool parents.
In Spring 2008, Deborah Estrin taught “Current Topics in Computer System Modeling Analysis.” The class held 25 students — typical for a lab class — mostly master’s students, and was taught uses PyS60 with the Nokia N95.
The assignments are consistent with Estrin’s large research project on mobile sensing, with the students assigned to gather location and sound data and plot the data using Google map APIs. The 12 projects tended (not surprisingly) towards mobile social media.
At the College of Computing, there was other interest in mobile computing among researchers. I found two classes.
Mobile Computing. Thad Starner is a longtime (and prolific) researcher on pervasive and ubiquitous computing. Thus, it’s not surprising he’s taught several courses on “Mobile & Ubiquitous Computing.” I couldn’t find the website, but Starner said this semester he’s teaching about 45 students using the OpenMoko handset. Openness is a big deal to Starner, who is well known around Tech for not doing any business with Microsoft.
Augmented Reality Games. Conversely, Blair MacIntyre is teaching augmented reality (the intersection of virtual reality and reality) game programming using Gizmondo. This discontinued Windows CE-based handheld gaming console has limited communications capabilities.
My list is of necessity incomplete: I haven’t been able to visit all of the top C.S. programs in the country. Each school visit took a minimum of 2.5 hours, and then there’s the matter of the plane tickets. Here are a few that I found on the web.
Stanford. At least one faculty that I met this week mentioned Stanford’s course, “iPhone Application Programming,” being offered this quarter (Fall 2008).
Carnegie Mellon is offering a course this semester entitled “Mobile and Pervasive Computing.”