Ubiquitous Computing for Mobile Devices
Tues 6:30 – 9:00p
Instructor: Dennis Crowley
Office Hours: Tuesday 9-10p or by appointment
The world gets more interesting as the devices that we carry in our pockets get smarter. What happens when my phone is smart enough to know where I am and what's happening around me? This class is designed to experiment with using different contextual triggers (who? what? when? where?) to build applications that can change the way people experience the world around them. The class will introduce students to what is needed behind the scenes in order to create "ping-me-and-I'll-ping-you-back" style text-messaging applications. Class discussion will revolve around the future of emerging mobile technology (passive location tracking, proximity detection, etc) in the context of gaming, social software, etc. using examples that can be found both here in the US and abroad. Techniques covered in the class will be geared towards social and location-aware applications, though we'll experiment with parsing incoming photo messages, translating semacodes, using geocoders and proximity algorithms, and more. The class will focus heavily on building applications that work on "lowest-common denominator" phones, though students will be encouraged to find examples of applications that use emerging technologies (Java and Bluetooth), and discover ways to retrofit these apps to work with the phones we carry in our pockets today. This is not a class on Java/J2ME or Bluetooth development. Students will be expected to build at least two working applications during the semester (midterm + final). Prior experience in dynamic web development (PHP / Perl + MySQL) is encouraged as we start building on Week 2.
With all of the interesting things happening in the mobile space right now, I’m hoping to accomplish three main things with this course:
1. To teach students how to build basic text-messaging applications and then to introduce the add-ons that turn these basic apps into compelling products: location, presence, imaging processing, etc.
2. To familiarize students with what’s already out there – the products that start-ups are launching, the student projects that are coming out of other research environments, and the products and projects being developed outside the US that take advantage of technology / user-base that is not readily available in the US.
3. To look at the ways developers are using emerging technologies to do interesting things and to then find ways to make these products available to people on the phones they use today. This will entail both reverse-engineering technology and clever thinking about user experience design.
Each class will focus on a different topic related to mobile development. Each week, students will be asked to find examples of applications / products / projects that make use of this topic and to write-up a summary of their findings. Students are also expected to contribute to a class journal that will serve as an archive of the technical hurdles (and their solutions) that were discovered over the course of the semester.
I expect that most classes will follow a similar breakdown in structure:
25% presenting the week’s topic and reviewing student research on that topic
25% introducing the how-to of the technology behind the research topic
25% discussing ways to reverse-engineer examples of the week’s topic – how to turn emerging technology into ubiquitous technology
25% troubleshooting homework / student projects
The schedule you’ll see below is a starting point. You’ll notice that there are two “wildcard” weeks regarding class discussion (one before midterms and one before finals). I’m expecting that discussion topics for these wildcard weeks will be driven by the projects that students are developing for their midterms and finals.
Course Site + Journals + Assignments
One of the things I really want everyone to get out of this class is a good feel for the landscape of wireless apps. What has already been done? What has tried and failed? What ideas are worth resurrecting now that certain technologies are more mature?
Weekly assignments will be given and will consist of researching a given topic, finding an example of an application that illustrates an interesting use of the topic, and then writing up your findings on the course website. No duplicate project write-ups per week, please.
In the instance that two-people are researching the same project in a given week, whoever posts online first gets credit. (read: check the website first and make sure your topic hasn’t already been taken!)
Also, as you start to build wireless apps, you will become very familiar with the nuances of developing for specific phones and mobile carriers. Let’s make a solid effort to log these as we find them – the course website should serve as an archive of the problems and solutions we find in our development efforts.
Participation and Attendance
We’ll have a lot to cover each class, so please show up on time each week. If you are going to be late or absent, please email me in advance. Showing up 15 minutes late to class every other week won’t help your grade.
Please complete your research assignment each week and be prepared to present them in class. These assignments are due the class following whenever they were assigned and should be posted to the class website before the start of class. If they are late by a week, you will receive half credit. Any later and no credit will be given.
Please also be active in both class discussion and project critiques. Quietly sitting in the corner all semester will have a negative affect on your grade.
Final grades will be based on:
Participation and Attendance 30%
Weekly Research Assignments 20%
Our time in the classroom will be split discussions and tech work. During discussions, we’re going to go with the “No Wi-Fi” rule – we all know that classes aren’t that engaging when everyone’s checking email or browsing the ITP face book.
If you’re a die hard and need to take notes on your laptop, we’ll figure something out. Of course, you are free to type away when we start diving into our tech discussions.
Recommended Texts / Sites
If you haven’t already read Howard Rheingold’s Smart Mobs, please do so.
I want to try to avoid textbook style readings, but I expect everyone to keep up with the blogs that track interesting things in the mobile space. For starters:
The Feature http://thefeature.com
Please also sign up for the course listserv at:
Hello My Name Is…
January 18, 2005
This first class will include a discussion of the course goals and will take a look at the landscape of currently available applications for mobile phones. We’ll talk about the various approaches to building applications for mobile devices: ubiquitous vs. emerging technologies, working around carriers, developing for lower-common-denominator phones, etc.
1. Get an inbox that you can use for your text messaging apps. If you host your own website chances are you probably have a few free inboxes available. If not, get a free email account that supports POP access (e.g. Gmail)
2. Sign up for dodgeball.com (and yes, there’s a purpose to this :)
3. Join the class listserv:
4. Create a blog entry about yourself. Answer the following: Why did you take this class? What type of projects do you want to work on? What skills (technical / design) do you have? What type of phone / provider do you have? Tell us about your favorite use of mobile phones (outside text’ing friends and calling your parents).
5. Create a blog entry about any text-messaging application you’ve had an experience with. Tell us about what the product does, the user experience and what you could do to improve that experience.
6. Brush up on your programming (Perl, PHP, etc) and database skills (MySQL) as we’re going to get to work next week.
Ping Me and I’ll Ping You Back #1
January 25, 2005
On Week 2, we’ll dive right in and learn how to build text-messaging applications that both listen-for and respond-to users’ request. We’ll discuss the ways large companies (with large budgets) build text-messaging apps and introduce ways that we independent developers can do the same on the cheap.
Class time will be dedicated to explaining the infrastructure needed to drive these apps: email inbox, POP email parser, the code that handles application logic and outgoing messages. We’ll discuss the nuances between different handsets and carriers and the user interface challenges associated with building command line-esque text messaging apps.
Assignment: Create a blog entry about any camera phone application. Find an example of a camera phone game, a group camera phone moblog, a UPC / barcode lookup service, etc. (Don’t be afraid to write about things that are available outside the US!). Tell us about what the product does, the user experience and what you could do to improve that experience.
Ping Me and I’ll Ping You Back #2
February 1, 2005
We’ll spend Week 3 making sure that everyone is up and running with the ping-me-and-I’ll-ping-you-back infrastructure. We’ll also learn how to send and receive images to and from camera phones.
Blog it up about a location-based service you’ve had experience with (think: Vindigo, MapQuest, 411, CitySearch). How is this application aware of your location? What type of services does it provide? What would make it better? Easier? Smarter? Are they any privacy concerns with this app?
Flip through Chris Heath’s “35 Ways to Find Your Location”
Play around with the geocoder found at: http://geocoder.us/
Where Am I?
February 8, 2005
This week we’ll cover the nuts-and-bolts that drive location-based services. We’ll talk about converting street addresses to GPS latitude and longitude coordinates and learn how to calculate distance between these points. We’ll talk about different techniques for acquiring a user’s location (active vs. passive location tracking) as well as the privacy issues that go along with these methods.
Blog it up about a mobile application that gets more interesting as more people get involved (think: dating, games, social software). Start thinking about what you want to build for your midterm project.
Take a look what Intel Research is doing with their PlaceLab platform:
Debugging Midterms + Wildcard Discussion
February 15, 2005
This will be a wildcard week in terms of class discussion. Extra time will be dedicated to debugging midterm projects.
Mark Argo (ITP alumni, creator of mobjects) is tentatively scheduled as a guest speaker to introduce the concepts and development process behind emerging platforms.
Finish your midterm!
Midterm Presentations #1
February 22, 2005
Midterm Presentations #2
March 1, 2005
Blog it up about a mobile application for camera phones that involves image post-processing (think: UPC / barcodes, image-based language translation systems, etc). You may want to revisit the blog assignments from Week 3.
For inspiration, take a look at Simon Woodside’s “semacode” system:
Fun with Semacodes and Other Image Processing
March 9, 2005
So, even my Mom knows how to use a camera phone – now what? This week we’ll look at the interesting things that happen when you apply image-processing to the photos people are taking with their camera phones. We’ll look at the difference in both the ubiquitous and emerging approaches to building these applications and we’ll explore the competing standards used with 2-dimensional barcodes and other image-processing systems.
1. Blog it up about a way you could use a semacode-like system in NYC. Be original and skip the “bus schedule” example – for inspiration look at what the guys from YellowArrow (http://www.yellowarrow.org) did with using text messaging to annotate public space.
2. Blog it up about a project / product for mobile phones that lets users interact with a physical object (think: Tivo, home automation, jukebox, installation art). Bonus points if you can find an app that lives in an existing public space).
March 15, 2005
Working with Location (Part 2), Presence and Public Space
March 22, 2005
This week we’ll look at the ways mobile phone can be used to change / enhance their experience of a pubic space. We’ll specifically focus on how we may be able to use mobile devices to interact with physical objects - whether it’s a screen that’s behind the glass of a store window or a sculpture that’s hooked up to a PIC chip and a CoBox.
Let’s look at other ways we can provide services to mobile phones. We’ve all used IVR (voice) applications – Moviefone, Amtrak, 411- so blog it up about one you’ve used recently. Tell us about the experience – was it positive or negative? Would this experience work as a text-messaging app?
Sign up for a free account at: http://cafe.bevocal.com/account/signup.jsp
Do it With Voice: Using IVR + DTMF
March 29, 2005
Stepping away from text-messaging for a week, we’ll look at other ways we can provide interactive services to mobile phones. With WAP declared as “over with”, we’ll focus on IVR (interactive voice response) systems that drive things like MovieFone. In addition to looking at the software products that make this possible and the technology that drives them (VXML, grammar / speech recognition + processing DTMF tones), we’ll explore the more advanced user experiences that such systems allow.
1. Develop a quick and dirty IVR application using BeVocal’s development environment. Be prepared to discuss how your application would (or would not?) be able benefit from or co-exist with a VXML sidekick.
The Emerging Techology Family (J2ME + BREW + Bluetooth)
April 5, 2005
This week we’ll look at what lies ahead in mobile development. While we won’t get into specifics about writing Java / BREW code, we’ll look at what type of products are available, the pros and cons with developing for such platforms, the future outlook for this space, etc.
Think of your text messaging application as a downloadable application – what it would look like, what the user experience would be. Draw a flowchart that illustrates how you would port your app to a more sophisticated platform.
Debugging Finals + Wildcard Discussion
April 12, 2005
This will be a wildcard week in terms of class discussion. Extra time will be dedicated to debugging final projects.
Finish your final!
Final Presentations #1
April 19, 2005
Final Presentations #2
April 26, 2005