smartphone sensing and programming

If you think smartphones are cool this might be a seminar/course for you.

We will focus on advances in smartphone technology, research and programming.

This class is a mix of a traditional seminar and more formal course; and will include paper reading (presentations and discussion by students), learning to program Android phones and group projects - the goal is to develop some cool concepts, code up apps and release them on the market if possible - taking your innovative ideas from concept to the android market in 10 weeks.

We will read the latest papers on this emerging field and program phones to test out some of the ideas that emerge in the seminar.

This is an advanced/senior class therefore a high degree of self-learning  is required and a strong set of programming skills needed -- just to be very clear: you will have to do a considerable amount of self-learning -- you will have to debug your own Androd code. Having said that we want this class to be informal, relaxed and most important fun more than anything.

prerequisite

The prerequiste for this class is CS23 (proficency in programming c and Java) and CS78 or CS58 or equivalent are required.

Prerequisites are stickly enforced. In order to keep the seminar small/manageable there will be no audits. 

 

admin

Instructor: Andrew T. Campbell; campbell@cs.dartmouth.edu; office hours Tuesday 4-5 pm.
Android Fung-Fu Assistant: Xiaochao Yang; Xiaochao.Yang@dartmouth.edu; office/lab hours Thursday 4-6 pm
When:  Tuesday and Thursday  2:00-3:50, x-hour Wed 4.15   
Where:  Life Sciences Center 105

future smartphone programming course for undergrads

For a number of years I have been asked if I'm teaching a phone programming class. I intend to develop this seminar into an undergraduate course on smartphone programming and offer it next year. I plan to develop the material for the undergraduate course taking as a starting point the code and labs I'll develop this term.

book



Buy it online now. 


grading

20% Presentation and class participation
70% Labs -- 10% per lab.
10% Demo or Die (10% if it works, 0% if not)

Lab submission. Students should send a tarball of their to Xiaochao.Yang@dartmouth.edu using labN-name.tar.gz (N is the lab number, name is your family name). Labs are due 23.59 hours on the due date.

Late policy: no late policy. Just sumbit what you have done -- working or none working code will be graded. Please note that the labs build on each other so you'll have to resolve any incompleteness to do the next lab.

Concession: each student has one free 48 hour pass for a late lab submisson
.  

useful resources

Android developers

Download the Android SDK

Developer Resources

Install Eclipse - The "Eclipse Classic" version is recommended.

Tutorials

tips for presenting a paper

You don't want to repeat all the details in the paper because we've all read it and know the content. Here are some tips for your presentation:
  • What's the problem addressed in the paper and why is it important?
  • What's the proposed solution and why is it novel in comparison to the related work?
  • Are the assumptions made by the authors reasonable, is the methodology OK?
  • What are the design tradeoffs?
  • Present one or two of the more important results
  • What are your ideas for improving the ideas in the paper?
A good presentation gets the essence of the paper and stimulates a discussion on the above topics. This is not a complete set of tips - I'm sure there are more. 

Important:
have a set of questions ready before your presentation and ask the class those questions at suitable points during your presentation: your job is to drive the discussion of the ideas in the paper - the good, bad, and the ugly. Practice your talk. Make sure you talk to the audience not the wall that the slides are projected on.


students

Student list

Thomas J. Bao
Xiaoyi Che     
Yuting Cheng   
Jonathan H. Guinther   
Vijay H. Kothari
David Y. Lam   
Yangpai Liu      
Rima Narayana Murthy  
Kevin J. Niparko              
Alexander C. Ott             
Jiawei Ou        
D. Parker Phinney          
Chen Qin         
Emma N. Smithayer    
Kan Wu  
Xiaochao Yang     
Yilong Zhao

Collaborative learning:  Note, this is a collaborative learning experince so you can help each other out with all the coding in this class -- just don't explicitly cut and paste code between each other.

schedudule

Typically Tuesday's will be for presentation of papers and Thursday's lectures. We might use some x-hours too. Material breaks down under: presentations, lectures, labs, tutorials, book reading and some addition papers. Later we will include information of projects.

Important, you have to impress the class with your discover of new cool apps in the "app store abyss" (which of the 500,000 apps do you like this week). Also, you better come armed with some jokes; that will help your grade ;-)

The book is very readable. You can use it as a reference -- such as we are learning the UI this week, I'm going to read those sections, etc. - or you can plough through the book as you go. I strongly recommend you read the first two chapters now.

Week 1: Thursday  5, January

Talk (Andrew): Introduction to smartphone sensing and Android
 
Tutorial: Hello World Tutorial

Book: Read Chapter 1 - Getting Started with Android Programming

Lab 1: (ungraded complete by Tuesday)

Week 2: Tuesday  10, January

Presentation (Rima): A Survey of Mobile Phone Sensing, Nicholas D. Lane, Emiliano Miluzzo, Hong Lu, Daniel Peebles, Tanzeem Choudhury, Andrew T. Campbell, IEEE Communications Magazine, September, 2010.

Presentation (Parker): Sensing Meets Mobile Social Networks: The Design, Implementation and Evaluation of the CenceMe Application, Emiliano Miluzzo, Nicholas D. Lane, Kristóf Fodor, Ronald A. Peterson, Hong Lu, Mirco Musolesi,  Shane. B. Eisenman, Xiao Zheng, Andrew T. Campbell,  Proc. of 6th ACM Conference on Embedded Networked Sensor Systems (SenSys '08),  Raleigh, NC, USA, Nov. 5-7, 2008.

Additional reading:

Ubicomp Systems at 20: Progress, Opportunities, and Challenges,
Ramon Caceres,  Adrian Friday,  IEEE Pervasive Computing, Jan 2012

How to Read a Paper, S. Keshav, ACM SIGCOMM Computer Communication Review, 2007

Tutorial: Hello Views Tutorial. Note, some of the views are more complex and require a deeper understanding of the environment. It is OK just to do the first three views. The last three include material we haven't covered. But feel free to see if you can get the code to work from the tutorial. It's cool. Don't worry if you can't get it to run.

Book:
Read Chapter 2 -- all of it if you can. And then read Chapter 3 - Designing your UI using Views (read as much as you can -- but don't over do it).

Lecture: What you need to know to do lab 1

Lab 1:  Setting up the User's Profile UI, due Wednesday Jan 18.
 

Thursday  12, January

No lecture

Week 3:  Tuesday 17, January

Presentation (Kevin): MAUI: Making Smartphones Last Longer with Code Offload, Eduardo Cuervo (Duke University), Aruna Balasubramanian (University of Massachusetts, Amherst), Dae-ki Cho (University of California, Los Angeles), Alec Wolman, Stefan Saroiu, Ranveer Chandra, Paramvir Bahl (Microsoft Research), ACM MobiSys 2010. 

Presentation (Yuting): EmotionSense: A Mobile Phones based Adaptive Platform for Experimental Social Psychology Research, Kiran K. Rachuri, Mirco Musolesi, Cecilia Mascolo, Jason Rentfrow, Chris Longworth, Andrius Aucinas, UbiComp 2010. 

Thursday 19, January

Lecture: What you need to know to do lab 2

Lab 2: Extending the UI with multiple activities and intents, due Tuesday Jan 31

Week 4:  Tuesday 24, January

Presentation (Vijay): Toward Trustworthy Mobile Sensing. Peter Gilbert, Landon P. Cox, Jaeyeon Jung, and David Wetherall. HotMobile 2010. Annapolis, MD, February 2010.

Presentation (Kan): TaintDroid: An Information-Flow Tracking System for Realtime Privacy Monitoring on Smartphones. William Enck, Peter Gilbert, Byung-Gon Chun, Landon P. Cox, Jaeyeon Jung, Patrick McDaniel, and Anmol N. Sheth. OSDI 2010. Vancouver, BC, Canada, October 2010.

Thursday 19, January

No lecture

Week 5:  Tuesday 31, January

Presentation (Jonathan): Using Mobile Phones to Write in Air, Sandip Agrawal, Ionut Constandache, Sharavan Gaonkar, Romit Roy Choudhury, ACM MobiSys, June, 2011.

Presentation (Chen): TagSense: A Smartphone based Approach to Automatic Image Tagging, Chuan Qin, Xuan Bao, Romit Roy Choudhury, Srihari Nelakuditi, ACM MobiSys, June, 2011.

Thursday 2, February

Lecture: What you need to know to do lab 3

Lab 3: The SQLite Database

Week 6:  Tuesday 7,  February

Presentation (Yangpai): Diversity in Smartphone Usage, Hossein Falaki (University of California, Los Angeles), Ratul Mahajan, Srikanth Kandula, Dimitrios Lymberopoulos (Microsoft Research), Ramesh Govindan (University of Southern California), Deborah Estrin (University of California, Los Angeles), MobiSys 2010.

Presentation (Xiaoyi): Social Sensing to Model Epidemiological Behavior Change, Madan A., Cebrian M., Lazer D. and Pentland A., UbiComp 2010.  

Thursday 9, February

Lecture: What you need to know to do lab 4

Lab 4: Google MAPs and Location Tracking using the GPS Sensor

Week 7:  Tuesday 14,  February

Presentation (David):  Cells: A Virtual Mobile Smartphone Architecture, Jeremy Andrus, Christoffer Dall, Alexander Van't Hof, Oren Laadan, and Jason Nieh.   ACM Symposium on Operating Systems Principles (SOSP '11), 2011

Presentation (Emma): Activity Sensing in the Wild: A Field Trial of UbiFit Garden, Sunny Consolvo , David W. McDonald , Tammy Toscos , Mike Chen , Jon E. Froehlich , Beverly Harrison , Predrag Klasnja , Anthony LaMarca , Louis LeGrand , Ryan Libby , Ian Smith and James A. Landay, Conference on Human Factors in Computing Systems, 2008.

Thursday 16, February 

Lecture: What you need to know to do lab 5

Lab 5: Integration of MAPs with MyRun App

Week 8:  Tuesday 21,  February

Presentation (Cole): SignalGuru: Leveraging Mobile Phones for Collaborative Traffic Signal Schedule Advisory, Emmanouil Koukoumidis, Li-Shiuan Peh, and Margaret Martonosi, ACM MobiSys 2011.

Presentation (Visting Scholar: Bing You):  HeatProbe: A Thermal-based Power Meter for Accounting Disaggregated Electricity Usage, Bo-Jhang Ho, Hsin-Liu (Cindy) Kao, Nan-Chen Chen, Chuang-Wen You, Hao-Hua Chu, Ming-Syan Chen, ACM UbiComp 2011

Additional reading:


Undistracted Driving: A Mobile Phone that Doesn’t Distract,
HotMobile 2011: 12th Workshop on Mobile Computing Systems and Applications, Phoenix, Arizona, USA, March 1-2, 2011.

Thursday 23, February 

Lecture: What you need to know to do lab 6

Lab 6: Activity Classification - running, walking, standing

Week 9:  Tuesday 28,  February

Presentation (Kan): Can Your Smartphone Infer Your Mood? Robert LiKamWa (Rice University), Yunxin Liu (Microsoft Research Asia), Nicholas Lane (Microsoft Research Asia), Lin Zhong (Rice University), PhoneSense 2011

Presentation (Kan): DailyAlert: A Generic Mobile Persuasion Toolkit for Smartphones, Andong Zhan (Johns Hopkins University), Jong Hyun Lim (Johns Hopkins University), Andreas Terzis (Johns Hopkins University), PhoneSense 2011

Presentation  (Chen): From Affect to Mental Health: A Speech Analysis Library for Unobtrusive Monitoring on Mobile Phones, Keng-hao Chang (University of California, Berkeley), PhoneSense 2011

Presentation  (Chen): Collaborative Crowd Density Estimation with Mobile Phones, Jens Weppner (University of Passau), Paul Lukowicz (University of Passau), PhoneSense 2011 

Thursday 1, March  

Lecture: What you need to know to do lab 7

Lab 7: The lecture slides serve as the write up: Putting it all together: MyRuns App + the  Cloud (AppEngine)

Note, there will be two tutorials this weekend for lab 6 and la7.

Week 10:

*Demo or Die Day* Wednesday March 7 -- 3-6PM on the Green

Each student must demo a fully functioning MyRuns App on an Android phone that works with the Cloud. You can't use any solution code in your demo or code submission (due midnight on March 7 to Xiaochao). Demos will be on the Green -- we need satellites! Note: If it works you get 10%, if not 0%.