Fall 2012

Mobile Application Development

CS 4520 / CS5520
College of Computer and Information Science

Class Location:   WVH 110
Class Time:   3:25-5:05 Tue/Fri
Credit Hours:   4SH
First Class:   September 7, 2012
Last Class (4520):   December 4, 2012
Last Class (5520)   December 7. 2012
Instructor:     Stephen Intille, Ph.D.
Office:   450 West Village H
Office Hrs:   Tuesdays 8:30-9:30 AM
Email:   ...@neu.edu
     
Message group   https://piazza.com/class#fall2012/cs4520and5520
Paper archive   PDFs of some readings will be posted on Blackboard
     
TA/Tutor   Elica Farjadian Bajestan (elicaf@ccs.neu.edu)
Tutor   Matt Garnes (garnes.m@husky.neu.edu)
     
Hacking/help sessions
(1st floor computer lab)
 

Mon 6:30 - 8:30 PM
Wed 5:00 - 7:00 PM
Fri 10 AM - Noon
Thu 6-8 PM

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 that addresses a real-world problem in an innovative way. Coursework will include project conception, design, implementation, and pilot testing of mobile phone software applications, using health applications as the target domain.

Prerequisites:

No course prerequisites, but students in the course should be comfortable with Java or C# programming. The basics of Java, which are required for Android programming, are not taught in the course.

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 part of the class will be devoted to a lecture and question and answer period and/or code walkthroughs on technical concepts. The last 20 minutes of class will be devoted to short presentations from students on various technical and design concepts from the optional readings. Some classes will be devoted entirely to project idea presentations or project prototyping exercises. The instructor will assume all students have read the material for each class before arriving.

Required and Optional Texts:

The required text will be:

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 made available via Blackboard.

Strongly recommended but not required:

Other books Prof. Intille has found helpful:

Additional Materials: 

All students are required to setup a Google Play Store account for submitting assignments ($25).

All development tools required to program in Android on PCs and Macs are freely available, and many applications can be developed and tested using the emulator. The Eclipse/Android setup is available on CCIS lab computers.

A limited number of Android phones will be provided to teams as needed for testing during and after class and during the hacking sessions. The large size of the class this term may prohibit loaning of phones on a regular basis. When phones are loaned out, students are responsible for taking excellent care of the devices and returning them. Failure to return a phone will result in a grade not being assigned.

Hackfests/help sessions:

We will host four "Android hackfests" each week when a tutor will be available to try and help with your questions, and when students can work together in the same place and time so as to facilitate group learning. These sessions will be hosted in the CCIS 4th floor conference room. The Piazza web site should also be used to post technical questions, and students are expected to help other students when possible.

Course Schedule/Outline:

Course requirements include (1) readings for class preparation and class participation, (2) individual and team design assignments, (3) individual and team programming assignments, (4) in-class presentations of either a programming concept or a research or design paper, (5) the final programming project, and (6) preliminary and final presentations on projects.

This will be an intensive course that will require significant reading each week, design exercises, and programming. Students should be prepared to fully immerse themselves in Android programming and mobile app design and development for the semester. Students who are not comfortable in Java will most likely need to spend additional time becoming comfortable with Java syntax and libraries.

This class is being redesigned from past offerings, and therefore some of the details in the schedule below, are subject to change as the semester goes forward.

Date

Class topic

Reading Due
(Beginning of class)
Scheduled Presentations
(And recommended reading)
Assignments Due

Part 1: Ramping up                                                     

Fri Sep 7

Introduction to the course; Hello Mobile World; Q&A

None

   

Tue Sep 11

Project topic review; Android Activity Basics

ADG: (Android Application Fundamentals)
Hello Ch. 1 & 2
Hello Appendix A1
ADG: Workflow
Hello Ch. 13 & 14
ADG: Publishing
ADG: Signing Applications

Tapworthy Chapter 1
Tapworthy Chapter 2
Tapworthy Chapter 3

Email with presentation preference list sent to Elica and into survey sent to Prof. Intille

Recommended: Have your development environment setup

Fri Sep 14

Development and debugging tools; The Play Store (App Market); Mobile design guidelines; Addictive games

ADG: Get Started, Style, Patterns, Building Blocks (including Application Structure)
ADG: Activities

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

Why are video games addictive?

Chang, Gaming Will Save Us All

 





Sun Sep 16 by 9 PM       (Individual) Assignment 1: Hello Mobile Application Development (HelloMAD) on Marketplace and GIT

Part 2: Basic GUI and design

Tue Sep 18

Q&A from Assignment #1; Paper prototyping; Pair programming

Rettig “Prototyping for Tiny Fingers”

Ketola, Series 60 Voice Mailbox in Rome

Bolchini et al., "Paper in Screen" Prototyping

Williams, Integrating pair programming into a software development process

Introduction to Pair Programming

Pair Programming

Ginsburg, Exploring App Concepts

Ginsburg, Prototyping App Concepts

Hunicke and Chapman, AI for Dynamic Difficulty Adjustment in Games

Sweetser and Wyeth, GameFlow: A Model for Evaluating Enjoyment in Games

 

 
Fri Sep 21 Basic Widgets; Themes and other UI customizations

Hello Ch. 3 & 5
ADG: Application Resources (excluding Localization Subsection)
ADG: Manifest File
ADG: Intents and Intent Filters

FIRST Else smartphone hands-on demo from Mobile World Congress 2010 (short video)

Reward schedules (Article 1 + Article 2)

ADG: Icon Design Guidelines

ADG: Draw 9-patch and Simple Guide

Tohidi papers on Getting the Right Design and the Design Right: Testing Many Is Better Than One

 
Sun Sep 23 by 9PM      

(Individual) Assignment 2: Addictive game and project idea mash up

Tue Sep 25

1-Minute Madness
(1 minute presentations of preliminary project ideas by individuals for team-forming and initial feedback)

ADG: Menu Design and Say Goodbye to the Menu Button
ADG: Using DDMS
ADG: Using the Dev Tools App

How to Marry Interaction and Visual Design the Android Way

2D Physics with Box2D

Effective Eclipse and hidden features

 

Fri Sep 28

Activities and building blocks of apps

TBD

Simple and Usable Intro and Remote and Remove Section

Code Conventions for Java and nice summary

CheckStyle and Eclipse-cs

Listview

 
Sun Sep 30 by 9PM      

(Individual) Assignment 3: Project idea paper prototyping

Tue Oct 2

Saving data and state

 

 

Hello Ch. 6
ADG: Reading and Writing Logs
ADG: Data Storage

ADG: Making Android Games that Play Nice

ADG: Device ID

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

Android 3.0 Fragments API

Android + AppEngine

 

 
Fri Oct 5 2D graphics

Hello Ch. 4
ADG: What to Test
ADG: 2D Graphics
ADG: Drawable Animation

Simple and Usable Organize, Hide, and Displace Sections

Mobile Web Development

Findlater et al., Typing on Flat Glass

Selection from Design Basics Index

 

Sun Oct 7 by 9 PM

 


  (Individual) Assignment 4: Boggle! (modified Sudoku from text)

Part 3: Making apps more sophisticated and robust

Tue Oct 9

Threading, services, and AsyncTask

ADG: Services
ADG: Using DDMS
ADG: Processes and Threads
ADG: Security and Permissions

Unity3D

ActionBarSherlock

Cocos2d-x

 

Fri Oct 12

Broadcast receivers and sensors; Wake locks

ADG: BroadcastReceivers
ADG: Intents and Intent Filters
ADG: Manipulating BroadcastReceivers
ADG: WakeLock

Open Source Tymeac Service Container

CommonsWare Android Components (CWAC)

Android NDK


 

Mon Oct 15 by 9 PM

 



(Individual) Assignment 5: Final Project Preliminary Paper Prototype Design and Justification

Tue Oct 16

In-class project idea critique session

Debugging Arts of the Ninja Masters


Tips and Tricks

 

 

Fri Oct 19 Grabbing data from the web

Hello Ch. 7
ADG: Performing Network Operations
ADG: Cloud Messaging
ADG: Transfering Data and Battery Issues


Using the Google Docs API to Store Data in the Cloud

Storing App Data in the Google Cloud

Spring for Android

 
Tue Oct 23 Sensor data: motion, position, and environment

ADG: Sensors Overview
ADG: Motion Sensors
ADG: Position Sensors
ADG: Environment Sensors

TBD (Papers on motion data processing; Wocket API)


Ruiz and Yi, DoubleFlip

Smart App Design

Ruiz, Li, and Lank, User-Defined Motion

 

Thu Oct 25 by 9PM

     

(Team) Assignment 6: Persistent Boggle

Part 4: Designing and programming an innovative mobile app

Fri Oct 26

Sensor data: audio and speech

TBD

Halpern et al, MoBoogie

ADG: Audio Capture

Advanced Audio

Google Web Toolkit

PureData and Android

 
Tue Oct 30 2-minute madness (2 minute presentations of project plans by teams)    

(Team) Assignment 7: Project idea presentation

Fri Nov 2

Sensor data: location and maps

Hello Ch. 8
ADG: Making Your App Location Aware
TBD


Funf Toolkit

Speedy Maps

Secrets and Surprises of Google Geo API

 

Tue Nov 6

SQLite; Remote sync

Hello Ch. 9
ADG: Examining sqlite3 Databases from a Remote Shell
ADG: Data Backup
ADG: Storing and Searching for Data

Cheng et al, GoSlow

PhoneGap

Ignition

 

Fri Nov 9

3D graphics

Hello Ch. 10
ADG: 3D with OpenGL
ADG: Property and View Animation

Bringing C and C++ Games to Android

3D Graphics

Harison et al., Kineticons

 
Sun Nov 11 by 9PM      

(Team) Assignment 8: Sensor Processing / Trickiest Part of Project

Part 5: Final development of final project

Tue Nov 13

Useful tools #1 (audio and video, telephony, SMS, multi-touch, livewallpaper, widgets)

 

Hello Ch. 11
Hello Ch. 12
ADG: Media Playback
ADG: App Widgets
ADG: App Widget Design Guidelines
ADG: Copy and Paste
TBD

Lu and Li, Gesture Avatar

Bragdon et al, Experimental Analysis of Touch-Screen Gesture Designs

Android Debugging Tools

 

Fri Nov 16

Optimization and debugging tips

ADG: Designing for Performance
ADG: Designing for Responsiveness
ADG: Designing for Seamlessness
ADG: Optimizing Your UI
ADG: Profiling with Traceview and dmtracedump

How to Increase performance on Android

Coding for Life, Battery that Is (2009)

Designing Zippy Android Apps (2010)

 

Tue Nov 20

Wireless: Cellular, Bluetooth, WIFI, NFC

ADG: Bluetooth
ADG: NFC
ADG: WiFi Connect

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

NFC

Google Analytics

 

Wed Nov 21

 

 

   
Fri Nov 21 No class - Thanksgiving Holiday      

Tue Nov 27

Future mobile interfaces

TBD (Recent research papers)

Hinckley and Song, Sensor Synaesthesia

Designing and Implementing Android UIs for Phones and Tablets

Android Protips

Android Market for Developers

Optional: (Team) Assignment 9: All Downhill From Here(Grade will replace lowest grade on any prior assignment)

Fri Nov 30

Making a living – Licensing and Billing; Internationalization

Hello Ch. 13
ADG: Localization
Casting a wide net: how to target all Android devices (2010)

Optimizing Apps for Android 3.0

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

Articles on micropayments: Article1, Article 2, and Where are the MicroPayments

ADG: New Tools for Screen Sizes


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

Supporting Multiple Devices with One Binary (2009)

In-App Billing

 

Tue Dec 4
(last class for undergraduates)

Final project presentations #1
(undergraduates and some graduates)

None

Try out other team apps

Final project and presentation due (Undergraduate)

Fri Dec 7

Final project presentations #2

None

Try out other team apps Final project and presentation due (Graduate)

Course subject content is tentative and may change during the semester until the date of assignment.

Schedule after the last class:

Grading Procedures and Criteria:

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

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

Optional: Assignment #9: Implement the hardest part of your final project and provide a constructive critique of another team's partially-implmented app.The grade on this optional assignment will replace lowest grade on any prior programming or design assignment for teams who decide to do it.

Expectations of quality work showing mastery of course material will increase with every assignment, culminating very high expectations for the final project. Class and Piazza contributions where students have clearly and regulalry gone out of their way to help other students will weigh heavily in borderline grade decisions.

Class presentations  

Most classes will have three student presentations on a programming or design topic.

Students will be provided with a template for the presentations and will be expected to use a modified Petcha Kucha format (18 slides, 20 seconds each, on auto advance, for a total of 6 minutes). 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. The goal for students is to teach the class an important idea/concept in as much depth as possible in 6 minutes (18 slides at 20s per slide). All students will present once, developing a presentation from this Powerpoint template.

Presentations on project status and the final projects will also use a similar format (although most will be much shorter).

Code review   

In some classes, code from assignments may be randomly selected. In this case, the student(s) who wrote the code may be asked in class (without prior notice) to step through it, explaining key design decisions. Other students may be asked to critique the code.

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. Design 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.

Programming lead-up assignments

A set of programming 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 and via committing code using GIT. For grading, the apps will be updated and run on an actual mobile phone (unspecified model). Emphasis will be on usability design, creativity of the design, professionalism of the application, and technical robustness. For the most part the structure of the code behind the applications will not be reviewed during the grading process unless a problem is identified.    

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 focused apps that are addictive/fun/engaging but with a serious purpose that creatively exploit some of the unique capabilities of mobile interaction and mobile devices. The apps must address one of the key project topics presented in class. 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 health.

Final projects must address one of the topics discussed in the first class:

Android phones will be provided for development and testing as needed. Teams using other wireless sensors (e.g., 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, using a modified Pecha Kucha format (16-20 slides, 20 seconds each, on auto advance). Presentations will be graded on adherence to the format and overall presentation clarity on the final project, 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 and we will have a class exercise that should help students find others interest in similar project topics. Students may elect to work individually, but this may make the course more challenging. Mobile phone programming can be tricky and frustrating at times, and working in pairs can not only improve efficiency but also enhance creativity of the final app. If students wish to have a partner but cannot identify one, the instructor will help with pairing.

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 from academia and industry 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!). Last year the prizes were Nooks for each team member. The prize this year has not yet been determined.

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 may 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 unless otherwise specified by the instructor. Slides shown in class will be available on the course web site 1-2 days after each 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:

Well 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 automatically be lowered by one letter grade. Assignments will not be accepted more than one week late. Because the team project activities each week build on the prior weeks’ results, teams are strongly encouraged to turn in their work on time in whatever state it is in.

Academic Honesty:

All students are expected and encouraged to discuss the topics raised by this course with each other. Ideas or content (including graphical content) incorporated from an outside source or another student must be documented appropriately in the app submissions, write-ups, and 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.

Students are encouraged to help each other with programming assignments, but copying of large blocks of code from another student or team not acceptable. Students must be prepared and capable to explain the work they have done. Similarly, students working in teams are expected to jointly work on the code they develop and BOTH students should have a thorough understanding of all of the code.

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

Any student found cheating on an assignment 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:

The instructor will distribute optional mid-term and final course evaluations, to be returned anonymously. Responses to the questions help to improve this course during the current semester and for future students.

All students are also strongly encouraged to use the TRACE (Teacher Rating and Course Evaluation) system near the end of the course to evaluate this course. An reminder about TRACE should arrive via email about two weeks before the end of the course.