Home > Mobile Multimedia Technologies

Mobile Multimedia Technologies

Course Description

The popularity of mobile communications such as smart cell phones and wireless PDAs is increasing with the rapid expansion of the mobile electronics market and its migration from text-based applications to various multimedia applications.

Real-time graphics and web applications are becoming one of the most attractive applications in mobile terminals due to its benefits for gaming, advertising, and avatars whose data can be downloaded over the wireless network. This course will cover introduction to developing mobile applications in 3 main modules:

  1. Python
  2. Java 2 Platform, Micro Edition (J2ME) focusing on 2D and 3D graphics APIs.
  3. Certain web technologies such as Flash Lite and Mobile AJAX.

This course is an advanced demonstration course in mobile multimedia. It serves as an introduction to advanced topics and research in the field. The course is open to graduate students and advanced undergraduates. The prerequisite for the course is a knowledge of OOP such as Java or C++. Knowledge of scripting is a plus but not a requirement. In this course, students will participate in lectures, simple programming exercises and discussion. In addition, phones will be provided for group projects and demos that will be showcased as an open house at the Nokia Research Center, Palo Alto.

Prerequisites

Knowledge of an object oriented programming language such as Java or C++.
Knowledge of scripting is a plus but not a requirement.

Textbooks

While there are no prescribed textbooks for this course, I have a list of recommended books and links that are useful for the different course modules.

Python:
A general guide to learning Python that is mostly applicable to mobile Python as well.
Learning Python, Second Edition by Mark Lutz and David Ascher.
J2ME:
Beginning J2ME: From Novice to Professional, Third Edition (Novice to Professional) by Jonathan Knudsen and Sing Li.
J2ME Game Programming (Game Development) by Martin J. Wells.
J2ME: The Complete Reference by James Edward Keogh.
Flash Lite:
Foundation Flash Applications for Mobile Devices (Foundation) by Weyert de Boer, Scott Janousek, and Richard Leggett.
AJAX:
Professional Ajax (Programmer to Programmer) by Nicholas C. Zakas, Jeremy McPeak, and Joe Fawcett.
AJAX in Action by Dave Crane, Eric Pascarello, and Darren James.

Reading Material and Software

The majority of the lectures for the course will be in the form of working through tutorials/reading material for the next class as reading assignments, discussing fundamental concepts and programming some simple exercises in class.

Reading assignments are linked to the topics and schedule, but some important ones are listed here:

Assignment Scores

Click here.

Topics and Schedule

( You are welcome to refer to these class notes, but do credit them appropriately. )

Thursday, Jan 25
  • Introduction and class logistics
  • Presentation: A Overview of Mobile Technology
  • Assignment 0: Prepare a one slide poster with your chosen mobile user. A template for the page an example is here:(Thanks to Mirjana Spasojevic for this idea.)
    This could be a family member, a friend, a neighbor or a relative who lives far away. We are looking for a few details about their life and what they typically do and would like to have in terms of technology. You will have 5 min to present details of your user during next class on Tuesday.
  • Please email me by end of tomorrow (Jan 26) the type of phone you have. Here is a list of supported devices.
  • Lecture notes
Tuesday, Jan 30
  • Python for S60 (pys60): Introduction
  • pys60 installation
  • Writing a 'hello world' pys60 script and testing it.
  • Assignment 1 (For group 1): Set up pys60 environment, run scripts on phone.
  • Reading: Python for S60.
  • Run through posters from assignment 0.
  • Lecture Notes
Thursday, Feb 1
  • pys60 GUI controls, widgets and input modalities.
  • In class lab exercises: Running sample pys60 GUI scripts.
  • Assignment 2: pys60 widget programming (due on Feb 8, 2007 at 11:59 pm). Email me the scripts in the format A2_FirstnameLastName.*
    Create an interactive script that offers the following functionalities: (Total 50 points)
    a) Add entries into the phone�s contacts. The script needs to ask for first name, last name and mobile number. Then would add to contacts folder. b) Add entries into the phone�s calendar. The script needs to ask for name of appointment, location and start time.
    Extra credit (10 points): Look at the APIs for modules used for contacts and calendar and try to add more functionality apart from just adding entries. (e.g. setting an alarm for an appointment, deleting entries, etc.)
  • Lecture Notes
Tuesday, Feb 6
  • pys60 messaging, networking and application basics.
  • In class lab exercise: Running sample scripts.
  • Lecture Notes
Thursday, Feb 8
  • pys60 sound and bluetooth.
  • In class lab exercise: Running sample scripts.
  • Assignment 3 (due on Feb 15 2007 at 11:59 pm):
    You will be creating a social networking application.The idea is that you enter a space and do instant messaging among your friends with your phones. You send and receive text messages from your friends.
    The communication between the phones is via bluetooth.You can also share media like images, video and audio (via OBEX).Assignment will be done in groups of 2 (preferably that is max unless someone is left out).
    Turning in: Your script and text file telling me the work split among the 2. Demoing your application to me (either during office hours or at a mutually agreeable time and place.)
  • Lecture Notes
Tuesday, Feb 13
  • pys60 active objects, graphics, camera and image handling
  • In class lab exercise: Running sample scripts.
  • Lecture Notes
Thursday, Feb 15
  • pys60 advanced application example: Geotagging
  • pys60 wrapup
  • Assignment 4 (due on Feb 22 2007 at 11:59 p.m.): Write a report (.doc or .pdf) on your thoughts about location-aware applications for phones. The total pages is a maximum of 4 pages that include an introduction, motivation of the problem, related work, example applications of your own, results and conclusion. You are free to use the reading assignments and the two applications in the lecture notes as resources. However, you are expected to research more related work.
  • Lecture Notes
Tuesday, Feb 20
  • J2ME intro and understanding MIDlet creation process.
  • Setting up J2ME environment
  • Run a simple MIDlet.
  • Assignment 5 (not graded): Set up J2ME environment and test with simple MIDlet creation on emulator and phone.
  • Lecture Notes
Thursday, Feb 22
  • J2ME: User Interfaces and MIDP 2.0
  • In class lab exercises.
  • Assignment 6 (due on March 1 2007 at 11:59 pm):
    Create a mobile ATM interface that mimicks how a user interacts with a real-life one. Basic functionality must include taking user information, displaying account balance before and after withdrawing amount, alerts if an operation is not allowed. Extra credit is given to any other functionality you apply. (It�s up to you to be creative!)
  • Lecture Notes
Tuesday, Feb 27
  • J2ME: Multimedia and MIDP 2.0
  • In class lab exercises showing various aspects of MMAPI - audio and video playback.
  • Lecture Notes
Thursday, Mar 1
  • Mashups! Class will be divided into groups and have to quickly prototype demos in an hour.
  • Mashup Topics
Tuesday, Mar 6
  • J2ME Gaming (Part I): Exploring the game API of MIDP 2.0 for developing mobile games.
  • Walk through an example of building a J2ME game - GameCanvas, TiledLayer
  • Lecture Notes
Thursday, Mar 8
  • J2ME Gaming (Part II): Continue exploring the game API further.
  • In class lab exercises.
  • Assignment 8: Develop a first-person J2ME Pacman game. (Due on March 22, 2007 at 11:59 p.m.
  • Lecture Notes
Tuesday, Mar 13
  • The MIDP 2.0 Push Registry
  • In class lab exercise.
  • Lecture Notes
  • Start thinking about class projects. Will be discussed next Thursday in detail.
Thursday, Mar 15
  • Graphics platforms for mobile phones.
  • Reading assigment: SVG
  • Lecture Notes
  • Discuss initial project ideas.
Tuesday, Mar 20
  • J2ME: 2D Vector Graphics APIs
  • JSR 226 APIs.
  • In class lab exercises.
  • Lecture Notes
  • Continue discussing initial project ideas.
Thursday, Mar 22
  • Mobile 3D Graphics - An Introduction.
  • Continue discussing class project topics.
  • Assignment 9: Class project plan due on April 2, 2007.
    Should contain the following: Title of project, Team members, Technologies and devices being used, Weekly project tasks, Team split (who does what) at least for the first few tasks
  • Lecture Notes
Tuesday, Mar 27
  • Spring break - no class.
Thursday, Mar 29
  • Spring break - no class.
Tuesday, Apr 3
  • Anatomy of a 3D graphics engine.
  • Low level rendering primitives.
  • In class demos.
Thursday, Apr 5
  • 3D graphics: Scene management and animation.
  • Reading assignment: TBD
Tuesday, Apr 10
  • Mobile Java: M3G - Overview and design principles.
  • Basic concepts.
  • Discuss reading assignment.
Thursday, Apr 12
  • M3G scene graph.
  • Animation in M3G.
  • Discuss status of class projects.
Tuesday, Apr 17
  • Fun mobile application topic: Mobile phones and computer vision.
  • In class demos.
  • Reading assignments: TBD
Thursday, Apr 19
  • Invited guest speakers to talk about some of their research in the mobile domain. (TBD)
Tuesday, Apr 24
  • Flash Lite: Getting started.
  • Using graphics and text.
  • Assignment: Set up Flash Lite environment on your PC. Create a sample swf file and export to phone.
Thursday, Apr 26
  • Flash Lite: Creating Timeline Based Animation.
  • Movie Clips.
Tuesday, May 1
  • Flash Lite: Controlling Visual Objects with ActionScript.
  • User Interface Controls.
  • Reading:
Thursday, May 3
  • Flash Lite (contd.)
  • Discuss status of class projects.
  • Assignment: Create a Flash Lite movie.
Tuesday, May 8
  • AJAX: What is AJAX?
  • Basic functionality and patterns.
  • Web services.
  • In class lab exercises.
Thursday, May 10
  • Class projects due.
Tuesday, May 15
  • Pre-final preparation and discussion.
Thursday, May 17
  • Class Final

Lectures

Every week will begin with a 35-40 minute introduction to a programming concept by the instructor along with related in-class demos. This will be followed by presentations of lab exercises, previous assignments and readings by students, with accompanying discussion.

Learning Objectives

By the end of the quarter, you should be familair with some of the technologies used in mobile applications. While the course is more of a breadth-wise introduction to various topics, working on a class project should give a bit more insight into a specific technology.

Computer Use

Students will need to sign up for CS 110L (or pay a $45 fee) to get a CS department network account.

Presentations

Participating in reading and discussions is extremely important in this course. In addition to participating in discussions, each student will work on specific concepts make a Powerpoint presentation, and present the results to the class. These presentations will be posted afterwords onto the class website.

Expectations

This is a graduate level course and all students in it will be treated like graduate students. It will be assumed that students are interested in the material, that they can motivate themselves to learn, and that they are not afraid to venture into uncharted territory. The undergraduate section will differ primarily in that the expectations for the project will be slightly lower.

Assignments

Periodically, I will be giving you programming and reading assignments.

Programming assignments: will be due on the specified date.
Late policy: Don't be late: 20% maximum grade deducted every additional day.

Reading assignments: everyone is expected to finish the reading assignments. Evidence of completion will vary. Some students will be asked to present their thoughts about the reading while others will be asked to participate in discussions.

Regarding assignment submissions, you will be emailing me a zip file of the format A#[assignment number]_FirstnameLastname.zip . For example: A2_VidyaSetlur.zip.

Class Project

Over the course of the semester, you will apply what you learn to a project of your choice, and then document and demonstrate. All projects will be presented at an open house at the Nokia Research Center. Project topics will be chosen in consultation with the instructor. Projects may be done individually or in groups. Project complexity and expectations will be scaled by group size. The expectation for graduate students is that the project will be quality work that the students would not be embarrassed to submit to a workshop. The expectation for undergraduates is that the project be something they would be proud to list on their resumes, although all students are encouraged to aim high. There exists the potential for projects in this course to turn into longer-term research efforts at the Nokia Research Center. Because of the high expectations placed on the project, it is vital that students choose to work on something that interests them deeply.

Rules of the Game

You are responsible for all material covered in class and all the assigned reading, including any changes or additions announced in class. If you miss a class, please talk to someone who didn't.

Final Exam

The class will have a final exam consisting of objective type questions with a multiple choice of possible answers, along with a programming question. The final exam will be on May 17 from 7:45 p.m. to 10:00 p.m.

Course Evaluation

The proportion of the final grade associated with the different components of the course is as follows:

  • Participation 20%
  • Presentation 20%
  • Reading and Programming Assignments (including final) 40%
  • Project 20%
Terms Of Use | Privacy Policy | About Us | Feedback | Copyright © 2008 Nokia. All rights reserved.