Ubiquitous Computing for Mobile Devices
H79.2505
Spring 2005
Tues 6:30 –
9:00p
Instructor: Dennis Crowley
Office
Hours: Tuesday 9-10p or by appointment
Email: dens@dodgeball.com
Description
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.
Class Overview
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.
Grading
Final
grades will be based on:
Participation and Attendance 30%
Weekly Research Assignments 20%
Midterm 25%
Final 25%
Wi-Fi Policy
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:
SmartMobs http://www.smartmobs.com
The Feature http://thefeature.com
Textually http://www.textually.org/
PicturePhoning http://www.textually.org/picturephoning/
MobileWhack http://mobilewhack.com/
Please also
sign up for the course listserv at:
http://social.itp.tsoa.nyu.edu/mailman/listinfo/ubiquitousmobile
Semester Schedule
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.
Assignments:
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:
http://social.itp.tsoa.nyu.edu/mailman/listinfo/ubiquitousmobile
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.
Assignment:
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?
Reading:
Flip through Chris Heath’s “35 Ways to
Find Your Location”
http://www.anti-mega.com/etech_35ways.ppt
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.
Assignment:
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.
Assignment:
Finish your midterm!
Midterm Presentations #1
February 22, 2005
Midterm Presentations #2
March 1,
2005
Assignment:
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:
http://www.semacode.org
or this quick write-up on Cambridge Positioning Systems at http://www.newscientist.com/article.ns?id=dn4857
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.
Assignment:
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).
SPRING BREAK
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.
Assignment:
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?
Take a look at the services BeVocal
provides through their BeVocal Café Developer program
(http://cafe.bevocal.com/) and the VXML
tutorial (http://cafe.bevocal.com/docs/vxml/).
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.
ASSIGNMENT:
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.
Assignment:
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.
Assignment:
Finish your
final!
Final Presentations #1
April 19,
2005
Final Presentations #2
April 26, 2005
[end]