Summer Session 1 2011

 

Mobile Application Development

 

CS 4520 / CS5520

College of Computer and Information Science


Class Location:           108 WVH

Class Time:                  11:40-1:20 Mon-Thu

Credit Hours:              4 SH

First Class:                  May 10, 2011

Last Class:                   June 23, 2011

 

Instructor:                   Stephen Intille, Ph.D.

Office:                         450 West Village H

Office Hrs:                  Immediately after class or by arrangement

Email:                          ...@neu.edu

 

Course Description:

 

This project-oriented course examines the principles of mobile application design and development. Students will learn application development on the Android platform. Topics will include memory management; user interface design; user interface building; input methods; data handling; network techniques and URL loading; and, finally, specifics such as GPS and motion sensing. Students are expected to work on a project that produces a professional-quality mobile application. Projects will be deployed in real-world applications. Course work will include project conception, design, implementation, and pilot testing of mobile phone software applications, using weight loss and physical activity motivation health applications as the target domain.

 

Prerequisites:

 

No course prerequisites, but students in the course should be comfortable with Java or C# programming. 

 

Course Objectives:

By the conclusion of this course, students will be able to:

Students will have created an innovative and robust mobile application that will be valuable addition to their programming portfolio.

 

Classroom Format: 

 

Most classes will be divided into two parts. The first half of the class will be devoted to a lecture and question and answer period on a technical concept. This will be followed by either a code walkthrough and critique or a hands-on programming and debugging example. In the second half of each class, students will present a paper on that day’s reading on mobile application design or development, which will be followed by class discussion. The last 20 minutes of most classes will be devoted to rapid prototyping design exercises. Some classes will be devoted entirely to project planning and/or idea presentation or pilot testing of concepts using low-fidelity prototyping.

 

Required and Optional Texts:

The required text will be:

Burnette, Ed, Hello, Android: Introducing Google's Mobile Development Platform [$19.97 at Amazon]. This is a good introduction for someone who knows Java or C# but is new to Android and Eclipse.

Note: The bookstore apparently did not get word that this is the text for the course, so you will need to order it online. It can often be found in bookstores that stock technical books.

Otherwise, we will use online resources for Android programming. In addition, we will read papers on the design of novel mobile applications that will be available online or handed out in class.

A recommended but not required purchase is: 

Jones, M. and Marsden, Mobile Interaction Design [$58.21 at Amazon]

Additional Materials: 

 

None required. Students are encouraged to bring their laptops to class during the code walkthroughs sections.

Phones will be provided for testing the projects as needed.

Course Schedule/Outline:

Course requirements include (1) readings for class preparation and class participation including short in-class quizzes, (2) programming assignments and code reviews, (3) in-class presentations of one or more research or design papers and leading of class discussion of those papers, (4) weekly programming assignments and design assignments throughout the course that will support the final project, and (5) the final programming project.

Because of the compressed nature of this summer session, this will be an intensive course that will require nightly reading and programming. Students should be prepared to fully immerse themselves in Android programming and mobile app design and development. If students are interested, we may schedule additional optional "Android hackfests" when students can work together after class in or adjacent to the Mobile Health Lab on the 4th floor.

This class is being redesigned from past offerings, and therefore some of the details in the schedule below, particularly the readings for each class, will be filled out as the session goes forward.  

Date

Class topic

Reading Due
(Beginning of class)

Assignments Due

Week 1: Ramping up                                                     

5/10

Introduction to the course; Q&A [Slides]

None

 

5/11

Getting started with development and debugging tools; Introduction to paper prototyping  [Slides]

ADG: (Android Basics Section)
Hello Ch. 1 & 2


Rettig “Prototyping for Tiny Fingers”

Email class survey answers

5/12

Activities, Hello World, the Market, and remote bug tracking [Slides]

Hello Ch. 13 & 14
ADG: Publishing

Design Wk 1: Hot (and not) critical analysis of mobile health apps

Teams formed


Recommended: Have your development environment setup

5/15 (6pm)

 

 

Programming Wk 1: Hello Mobile Application Development (HelloMAD) on Marketplace

Week 2: Basic GUI and design

5/16

Q&A from Programming Assignment #1

Discussion Design Assignment #1

 

Mobile design guidelines #1

[Slides]

ADG: Activities

ADG: Activity and Task Design Guidelines

 

Why Angry Birds is so successful and popular: a cognitive teardown of the user experience [Presenter: TBD]

 

5/17

Basic Widgets; Themes and other UI customizations

[Slides]

Hello Ch. 3 & 5
ADG: Application Resources (excluding Localization Subsection)

ADG: Manifest File

ADG: Intents and Intent Filters

ADG: User Interface Section

Klasnja, Consolvo, et al., Using Mobile & Personal Sensing Technologies to Support Health Behavior Change in Everyday Life: Lessons Learned [Presenter: Varun Ramachandran]

Design Wk 2: Addictive game mashup

5/18

Saving data/state [Slides]

Hello Ch. 6
ADG: Menu Design

ADG: Reading and Writing Logs

ADG: Data Storage


Ginsburg, Exploring App Concepts [Presenter: Jiamin Hu] (Paper on wiki)
Ginsburg, Prototyping App Concepts [Presenter: Matt Garnes] (Paper on wiki)

 

5/19

2D graphics #1 [Slides]

Hello Ch. 4

ADG: What to Test
ADG: 2D Graphics

Pixel Perfect Code: How to Marry Interaction and Visual Design the Android Way (I/O Video 2009) [Presenter: Kevin Rottman]

FIRST Else smartphone hands-on demo from Mobile World Congress 2010 (short video) [Presenter: Trevor Sontag]

 

5/22 (6pm)

 

 

Programming Wk 2: Boggle (modified Sudoku from text)

Week 3: Sensing

5/23

Mobile design guidelines #2 

(Guest lecture Jason Nawyn)

ADG: Icon Design Guidelines

iOS Human Interface Guidelines (Human Interface Principles and App Design Strategies sections)

 

Simple and Usable Intro and Remote Sections [Presenter: Cedric McDougal] (Papers on wiki)
Simple and Usable Remove Section [Presenter: Rani Aljondi] (Paper on wiki)


 

5/24

In class paper prototoyping for projects


(Guest facilitator)

ADG: Services

ADG: Using DDMS
ADG: Processes and Threads

Simple and Usable Organize Section [Presenter: Greg Malkov]
Simple and Usable Hide Section [Presenter: Daniel Bostwick]

 

5/25

Threading, services, wake locks, and AsyncTask

BroadcastReceivers and sensors 

(Guest lecture: Fahd Albinali) [Fahd's Slides]

 

[Slides]

ADG: Security and Permissions
ADG: Services

Debugging Arts of the Ninja Masters

Simple and Usable Displace Section [Presenter: Sapna Krishnan] (Paper on wiki)

 

5/26

Location and sensing


[Slides]

Hello Ch. 8
ADG: Location and Maps (including Obtaining User Location)

 

Tapworthy Chapter 1

[TBD] (Paper on wiki)

Tapworthy Chapter 2 [Presenter: Naveen Babu E] (Paper on wiki)

Tapworthy Chapter 3 [Presenter: Alex Nikolayev] (Paper on wiki)

Design Wk 3: Final Project Preliminary Paper Prototype Design

5/29 (6pm)

 

 

Programming Wk 3: Track Stephen’s Activity

Week 4: Using the network and a database

5/30

No class - Memorial Day

 

 

 

 

5/31

More on sensors

Storing data robustly

Data from the Internet


[Slides]

ADG: Data Backup
Hello Ch. 7

 

 

6/1

Final project idea presentations # 1

None

Design Wk 4: Project idea presentation

6/2

Final project idea presentations # 2

Mid-course teaching evaluation

None


 

6/3

 

Individual meetings with Stephen scheduled about project ideas

 

Week 5: Graphics and other tools to add pizazz

6/6

Discussion of programming assignment 3

 

Review BroadcastReceivers and services

 

Start SQL database

[Slides]

Hello Ch. 9

ADG: Examining sqlite3 Databases from a Remote Shell

 

Case Studies (Case Study 1-6) [Presenter: Rahul Trivedi]

Case Studies (Case Study 7-13) [Presenter: Ben Johnson]

The Future of Persuasion article and Persuasive Games article [Presenter: Robert Steinbach] (Papers on the wiki)




 

6/7

2d and 3d graphics

[Slides]

Hello Ch. 10

ADG: Property Animation and View Animation (maybe)

 

Halpern et al, MoBoogie (paper on wiki) [Presenter: Kevin Cheetham]

Programming Wk 4: Context-sensitive “health game” (by 6PM)

6/8

3d  graphics [Slides]

ADG: 3D with OpenGL

 

Ruiz and Yi, DoubleFlip (paper on wiki) [Presenter: Weixun Ge]

(OPTIONAL) Design Wk 5: Critique of Project/Paper Prototype Design of a Peer Team

6/9

Useful tools #1 (audio and video, telephony, SMS, mapping, livewallpaper, widgets, text to speech, etc.) [Slides]

Hello Ch. 12

ADG: Audio and Video

ADG: App Widgets

Android Developer's Guide: App Widget Design

 

Cheng et al, GoSlow (paper on wiki) [Presenter: Prathamesh Chawan]

 

6/11 (6pm)     Critiques due for teams that participate in option Design 5 peer review or project ideas (6PM via email) (see Design 5 for details)

6/12 (6pm)

 

 

 

Week 6: More pizazz

6/13

 

ADG: Copy and Paste

 

Ruiz, Li, and Lank, User-Defined Motion (paper on wiki) [Presenter: Rashmi Nayak]
Hinckley and Song, Sensor Synaesthesia (paper on wiki) [Presenter: William Pardi]

 

6/14

Optimization tips [Slides]

ADG: Designing for Performance

ADG: Designing for Responsiveness

ADG: Designing for Seamlessness

ADG: Debugging and Profiling User Interfaces and Profiling with Traceview and dmtracedump

Coding for Life, Battery that Is (2009)

 

Designing Zippy Android Apps (2010)

 

Turbo-charge your UI: How to Make your Android UI Fast and Efficient (2009)

Purpura et al, Fit4Life (paper on wiki) [Presenter: Sajal Choukse]

Lu and Li, Gesture Avatar (paper on wiki) [Presenter: Ruma Nayak]

Programming Wk 5-6: One-Week To Go

6/15

Bluetooth, networks, and Wi-Fi [Slides]

ADG: Bluetooth


Bragdon et al, Experimental Analysis of Touch-Screen Gesture Designs (Paper on wiki) [Presenter: Jun Wang]

Shirazi et al, Real-Time Nonverbal Opinion Sharing (Paper on wiki) [Presenter: Christian Strano]

 

6/16

TBD based on class interest [Slides]

Hello Ch. 13

ADG: Localization

 

Casting a wide net: how to target all Android devices (2010)

 

Supporting Multiple Devices with One Binary (2009)

 

How to Increase performance on Android [Presenter: Pratibha Rana]

 

 

 

 

 

Week 7: Looking forward and final projects

6/20

Future mobile interfaces...

 




Vazquez-Alvarez and Brewster, Eyes-Free Multitasking (Paper on wiki) [Presenter: Josh Pogrob]

 

Gaming Will Save Us All (Paper on wiki) [Presenter: Savas Cinar]

 

Game design as marketing: How game mechanics create
demand for virtual goods

[Presenter: Nimrod Drizlikh]

 

6/21

Branching out to other devices and other countries

Making a living: Licensing and Billing

The Future of Persuasion and Persuasive Games (paper on wiki)
[Presenter: Robert Steinbach]

 

Optimizing Apps for Android 3.0

[Dongyoo Kang]

 

Has Apple Just Screwed the Business Model for Selling Software (including comments) and GDC 2010: Ngmoco's Neil Young on how freemium will change the App Store world

[Presenter: Madhuvanthi Balasubramanian]

Articles on micropayments: Article1, Article 2, and Where are the MicroPayments (on wiki) [Presenter: Hao Shu]

 

6/22

Project presentations #1

None

Final Project Instructions and Checklist

 

Final Project Presentation Template

6/23 Project presentations #2 None Final project and presentation due (end of day)

Course subject content is tentative and may change during the semester.  Students will be notified of such changes.

Schedule after the last class:

Grading Procedures and Criteria:

Prior experience suggests that work in this course will generally fall into one of three categories:

·         Superior, striking, or unexpected pieces of work with excellent effort demonstrating a mastery of the subject matter and a skillful use of concepts and/or materials discussed in class; work robustly and fully implemented; work that shows exceptional imagination, elegance of presentation, originality, creativity, and effort. 

·         Good work demonstrating a capacity to use the subject matter and the ability to handle problems encountered in the course. 

·         Work that is adequate but that would benefit from increased effort or preparation.

Course work falling into these categories correspond roughly to A, B, and C grades. The final grade for the course will be computed by weighting the results from each assignment according to the following formula:  

Class presentations and/or code reviews   

Most classes will have a student presentation on the assigned paper or a student-led code review.

Students will be provided with a template for the presentations and will be expected to use the Pecha Kucha format (20 slides, 20 seconds each, on auto advance). This format requires practice in advance! Presentations will be graded on adherence to the format and overall presentation clarity and evidence of practice, as well as demonstration by the student of a thorough understanding of the topic being discussed. All students will be asked to present at least once, possibly more depending on class size. This Powerpoint template must be used: PPT Template for Presentations.

For code reviews, a student will be expected to select a portion of code they have written for the class and step through it, explaining key design decisions. A second student from a different team will be assigned to ask questions and critique the code.

A presentation on the final project will also be given.

Design assignments  

The best way to reduce programming time is to spend time on effective design early in the development process. Therefore, in this class, design and rapid prototyping will be emphasized throughout. Five assignments will get students thinking carefully about design, leading towards a final project, and will ensure that students are working to help each other, across teams, to develop the most innovative mobile apps possible. Individual design assignments are described in more detail below.

Project programming lead-up assignments

A set of six assignments will help teams incrementally converge on an innovative final project. The assignments will get increasingly challenging, as teams first make simple modifications to an existing Sudoku game and then transform it into a completely different type of addictive game that has a health purpose. (It is anticipated that most final projects will look nothing like Sudoku or Boggle!)

All assignments will be “submitted” via uploading apps to the app store. For grading, the apps will be updated and run. Emphasis will be on usability design, creativity of the design, professionalism of the application, and technical robustness. Students will be able to ask questions about their code, but for the most part the code behind the applications will not be reviewed during the grading process.   

Final project design and implementation

Although there are design and programming projects along the way, they are all designed to support the development of an outstanding final project. Students will design and implement a fully-functional mobile phone application for Android mobile phones that must be sufficiently robust so that it can be deployed with actual users. Students will work in two-person teams (recommended) or individually. Teams are expected to produce a polished and professional-looking mobile phone application that works robustly on a variety of phone models, meets the user interface design standards discussed in the course, and shows a substantial amount of design creativity. The goal is not to produce yet another app that does the same thing as other apps on the app store, but to design an app that truly stands out from the crowd. Students should aim for simple apps that are addictive/fun/engaging but with a serious purpose of helping people with weight loss or getting physical activity. The app should be extremely easy and pleasing to use. To achieve these goals will require many rounds of design iteration.   

To ensure that students can benefit from the collective experience of one another, and to focus the course to maximize the likelihood that students will develop novel application ideas, the course assignments and project will focus on the area of apps for weight loss or encouraging physical activity.

For the final project, there are two general project area options:

Option 1: Design an engaging mobile application that assists with some aspect of long-term weight loss. The team's application will plug into an existing application being tested in a 2-year randomized clinical trial with overweight and obese 18-35 year olds being conducted by researchers at Northeastern, Duke Medical, and MIT (http://www.dukecitystudy.org). Applications might be incorporated into the actual study with 300+ people, providing additional research and publication opportunities for interested students.

Option 2: Design an engaging mobile application that either motivates some form of physical activity or discourages sedentary behavior using either the phone's internal sensors and/or multiple miniature wireless accelerometers that send limb motion data to the phone and detect type, duration, and intensity of physical activity (see the Wockets project (http://web.mit.edu/wockets)). Teams who build convincing, well-justified prototypes may have the opportunity to have their device tested in a study with about 50 people to take place after the conclusion of the course (with researchers from Stanford Medical, Northeastern, and MIT).

Android phones will be provided for development and testing as needed. Teams using the Wockets motion sensors will be provided with those as well.

At the end of the term students will present their project in class. Students will be provided with a template for the presentations. The Pecha Kucha format (20 slides, 20 seconds each, on auto advance) will be used again. Presentations will be graded on adherence to the format and overall presentation clarity, as well as demonstration by the student of a thorough understanding of the topic being discussed and evidence that the presentation was practiced.

Teams / Pair programming:

Students are strongly encouraged to form teams of two. Students will be able to self-select teams. Those students who do not will be paired by the instructor. Students may decide to work individually, but this may make the course more challenging.

 

Pair programming has been shown to have a number of benefits including increased personal satisfaction and fewer errors. When students work in pairs, both must work together on a single computer, and both must write approximately half of the code. Very little code should be written without the other partner present and watching.

 

Teams are expected to apply software best practices such as tracking tasks and using software configuration management, and select appropriate supporting tools.

 

Competition:

At the end of the class, students in the class and a small panel of distinguished judges who are experts in mobile health apps will try out the applications and vote for the Top Apps based on creativity, robustness, usability, and usefulness. The winning team will receive a small prize (and bragging rights!).

 

Equipment:

 

Android phones will be provided to teams as needed for testing during and after class. In some cases they may be loaned out. In that case, students are responsible for taking excellent care of the devices and returning them. Failure to return a phone in working condition will result in a grade not being assigned.

 

Classroom Policies:

 

Students are expected to demonstrate qualities of academic integrity: a commitment, even in the face of adversity, to five fundamental values:  honesty, trust, fairness, respect and responsibility.  

 

Actively engaging in verbal exchanges of ideas and concepts will be a major component of learning in this course. This will be stimulated by readings, class discussions and case problem solving. Therefore everyone will be expected to actively and positively listen to others and to communicate their ideas during class. Some students are less comfortable speaking in class than others, but open discussion of ideas and even disagreement is essential.  Therefore, all students are expected to read course materials prior to class and will be called upon at times even if they do not raise their hands. Participation does not result from talking a lot, but as a result of critical thinking and articulation of ideas.

 

University policy dictates that students must seek the instructor’s permission to tape record class lectures.  I will always allow the use of tape recorders to support your learning.

 

To facilitate discussion and learning, electronic devices, including laptops, must be turned off in class during the design and discussion period of each class session. Slides shown in class will be available on the course website after each class.    

 

Despite the lunchtime meeting time of our class, please do not eat during the class unless you plan to provide food for everyone.

 

Writing/Presentation Policies:

 

Assignments that involve writing and presentation will be judged on clarity of presentation as well as content. Students who are having difficulty with writing will be referred to the Northeastern University Writing Center.

 

Late Policy:

Prior to an assignment due date, a student may request an extension with a reasonable explanation.  It is the discretion of the instructor to permit late assignments.  Unexcused late assignments will be subject to a reduction in approximately one half letter grade per day late.

Academic Honesty:

 

All students are expected and encouraged to discuss the topics raised by this course with each other. Ideas incorporated from an outside source or another student must be documented appropriately in write-ups or presentations.  Students must abide by the NU Code of Student Conduct  (http://www.northeastern.edu/osccr/codeofstudentconduct.html) and Academic Integrity Policy (http://www.northeastern.edu/osccr/academichonesty.html). Acts of academic dishonesty will be referred to the Office of Student Conduct and Conflict Resolution.

 

Academic honesty is fundamental to the learning process. As a reminder,  

 


Any student found cheating on assignments will receive a zero on that assignment.  A second offense will result in a failing grade for the course.

 

Accommodation:

 

Students who have a disability are encouraged to seek accommodations though the University Disability Resource Center.  Please speak privately with me about your needs for accommodations and strategies to support your success. This information will be kept confidential.

 

Trace:

All students are encouraged to use the TRACE (Teacher Rating and Course Evaluation) system to evaluate this course and to help the instructor make it better for future students.