Mobile Computing

Course Information

CS 4518: Mobile and Ubiquitous Computing
Term: B Term, 2016
Time: 8:00am to 9:50am
Days: Tuesdays and Fridays
Location: Fuller Labs 320

Course Catalog Description

This course introduces students to modern mobile computing in the era of cloud computing. As one of the most ubiquitously used devices, mobile phones have revolutionized the way we think about computing. With the help of cloud services, mobile devices are exhibiting unlimited potentials in terms of the types of tasks they can achieve, e.g. speech recognition. To help students develop both hands-on mobile programming and mobile solution design principles, this course is split into two coherent parts.

The first half of the course is designed to introduce the basic of mobile applications development for Android-based devices, with a specific focus on the essential concepts of software deployments for mobile and battery-constrained devices. Topics to be expected include UI programming, data management, localization, and programming sensors. The second half of the course introduces the concept of cloud computing, and provides students the opportunities to use a number of Google cloud services. Topics to be expected include performance optimization and mobile backend design.

The evaluation of the course will include thirteen in-class quizzes, four individual Android programming projects, and a team-based (with up to 3 persons) term project. Proficiency in an Object Oriented Language such as Java or C# is strongly recommended. Knowledge of operating systems (CS3013 or equivalent) and computer networks (CS3516 or equivalent) are important in understanding mobile design trade-offs. Familiarity with Linux or Unix is essential. Students who have credit for CS 528 may not earn subsequent credit for this course.

Teaching Staff

Course Instructor: Tian Guo
Email: please post via the class discussion board
Office: Fuller Labs B23
Office Hours: Tuesdays, 1pm-2pm; Friday, 1pm-2pm. Appointments also available.

Teaching Assistant: Thomas Grimshaw
Office: Fuller Zoo Lab
Office Hours: Mondays, 1pm-3pm; Thursdays, 4:00pm-6:00pm

Schedule and Readings

Below is a tentative course schedule along with a list of readings for the class and deadlines for projects. All students are expected to have read the readings prior to arriving for class on the indicated date. Readings include book chapters from our textbook, papers, and free online resources. Note that we might be reading different book chapters from the Head First Android Development (HFAD) and the Big Nerd Ranch Guide (BNRG). Clicking on the reading/project assignment will allow the student to either view the reading directly or download the reading/project assignments through Instruct Assist.

Date Description Readings Projects
Oct. 25, 2016 Mobile Computing and Android Papers: Mobile Cloud Computing(Required), Mobile Cloud Computing(Recommended)
Android Platform, Layout, Toast
API: Activity, Toast
Individual Project One (Due 10pm, Nov. 1 2016)
Oct. 28, 2016 Your First Android App BNRG:Chapter 1, 3, 5
HFAD: Chapter 1, 3, 4
Term Project: Description
Nov. 1, 2016 Android Data management BNRG: Chapter 14
HFAD: Chapter 11
Individual Project Two (Due 10pm, Nov. 11 2016)
Nov. 4, 2016 Sensors and context-aware service
GetKittenImage Demo
Sensor Demo
Camera Demo
Google I/O 2015, 2016 (Not Required for Quiz)
Term Project: Project Proposal Due
Nov. 8, 2016 Face Detection and Location Location-aware: Retrieve Current Location, Location Settings, Location Updates, Display Address, GeoFencing (Six HTML pages)
Nov. 11, 2016 Location, Google Play Service, And Android APK Security
(Supplement Material)
Map Overview, API keys, Map Intents, Location Data, Add Shapes, GeoJSON, (Six HTML pages) Individual Project Three (Due 10pm, Dec. 1 2016)
Nov. 15, 2016 Authentication and Cloud computing
Lecture Notes for oAuth2
Cloud Computing Overview

Nov. 18, 2016 Mobile backend design with Google Cloud [Lecture Notes] [Handwritten Notes] Mobile Backend Design Overview Term Project: Design Document Due
Nov. 22, 2016 Cloud Data Solution Data Consistency
Nov 25, 2016 No class (Thanksgiving break) Optional Individual Project Four (Due 10pm, Dec. 08 2016)
Nov. 29, 2016 Energy-aware mobile computing [eprof_slides.pdf] [eprof_notes.pdf] Where is the energy spent inside my app?
Dec. 2, 2016 Computation offloading to the Cloud [Lecture_notes.pdf] [MAUI_notes.pdf] Code Offload to the Cloud Term Project: Implementation Document Due (Extended to Dec. 5)
Dec. 6, 2016 Context-aware mobile apps [Lecture notes] Context Aware Survey
Dec. 9, 2016 Mobile app security [Lecture notes] A Study of Android Application Security Term Project: Evaluation Document Due
Dec. 13, 2016 Wrap up and demos Demo Day Explained Term Project: Final Report and Code Due

Course Policies and Procedures

The following represent the official policies and procedures for the course. Please review this information and, if you have questions, discuss them with the professor as soon as possible.

Official Communication

Class discussion, class hand-outs, emails to the student's WPI email account, the class discussion board, and the course Web pages are avenues for official course communication. Students are responsible for any information posted through these venues.


For required textbooks, you can choose to get either one of the following.
  • Android Programming: The Big Nerd Ranch (Second edition), Bill Phillips and Brian Hardy, The Big Nerd Ranch, 2015
  • Head First Android Development, Dawn Griffiths and David Griffiths, O'Reilly Books, 2015.

In this course, we will be reading selected chapters from required textbooks and supplement materials provided by the instructor. Although there are a lot of free online resources for learning Android, the rationale of a textbook is to provide the student a systematic road map in learning. Students will be responsible for obtaining the reading from the links provided by the instructor and, if needed, printing it out for reading.

Course Grading

In this course, we will be using absolute grading for assigning final grades: all numerical grades of 90 and higher earn As, all grades from 78 to 89.9 earn Bs, and all grades from 65 to 77.9 earn Cs. No incomplete grades will be assigned unless there exist exceptional, extenuating circumstances. A description of each of the class components and their corresponding weights are as follows:

  • Quizzes (30%):  There will be thirteen quizzes, each 10-15 minutes long, at the beginning of each class (except for the first class). Quizzes are available in two forms: through InstructAssist (IA) or printed version. I strongly encourage you to take quizzes through IA. The two lowest quiz scores will automatically be dropped, allowing for absences, illnesses, or simply "bad days". The quizzes will be short (1 printed page). The first set of questions will cover material from reading due before class and will be more factual (and simplistic) in nature. The final question will be more design or application-oriented, requiring students to apply concepts from prior class discussions to new challenges.
  • Individual Projects (35%): There will be multiple individual projects in the course where students will complete Android-based programming with increasing complexities. These individual projects may have different point values and may have "checkpoint" deliverables in which students can earn partial points. Details for each project can be found through here.
  • Term Project (35%): There will be one term-long project that students may pursue in teams of up to four people. The instructor has provided several potential project ideas that students may choose from. Students are encouraged to propose their own projects. The detail of this term-based project is described here.

  • Participation and Professionalism (5%): Students are expected to be engaged in class, answering questions from the instructor and asking questions when needed. Students must regularly attend classes and show up to demonstration times they schedule. This grading component is a signed value that provides bonus scores for students who promote active learning environment. Students that simply attend class each day and participate adequately should expect to earn around an 85% in participation. Voluntary participation in discussion or the discussion board, via questions or comments, is required to earn full credit in this category.


This course will use the InstructAssist system which has been developed for interactive instruction. This system features in-class components, including Quiz Bowls and Activities, as well as out-of-class components, such as assignment submission and grading feedback.

You can access the InstructAssist system for this class at You will be required to log in through WPI's Central Authentication Service with your WPI credentials to access the system.

Course Participation and Professionalism

During lectures, students are to be focused on the course. Students should not use materials or electronic devices that would inhibit their attention to the course lecture and discussion. Laptops may only be used for note-taking purposes; transmission capabilities on these devices must be disabled and only appropriate note-taking applications may be used in class.

Students must treat each other and the teaching staff with respect at all times. Disagreement, debates, and criticism of ideas are healthy aspects of academic environments; however, students be careful to avoid demeaning language or comments which can be taken personally. The ability to handle conflict professionally and work with a variety of people is an acquired skill, yet it is increasingly important in technical careers.

Course Projects

In this course, students are expected to complete four individual Android Programming projects and a team-based term project with a group of up to 3 people.

Each individual project will have a series of objectives that must be met by students in order to earn credit. Instructions and project grading policy will be provided at the time when projects are assigned. Students may discuss high-level ideas and provide advice to each other to help each other. However, all submitted work must be the result of the student's own efforts and should not include files or systems used by other students. If students have questions about the appropriate about of collaboration, they should contact their instructor. Each individual project may have a different score weight associated with it. Students should not assume that all individual projects are of equal weight.

The term-long project is divided into multiple phases and each phase require a submission per team. The project is designed to help students design, implement, and evaluate a mobile-based application of their choices. The instructor has also provided a few potential application ideas for students to choose from. Submissions are graded for each phase separately and all team members are assigned points based on indicated contributions. Accordingly, students should be advised that the implementation will be a relatively small portion of the term project.

  • Google Cloud Credits: In this course, we will experiment with using public cloud services for course projects. The instructor has obtained supports from Google Education Grant that provides free cloud credits for all students in this course. We will be using Google Clouds for at least one individual project, and the credits are more than enough for completing the project. Optionally students can choose to use the remaining credits for their term projects. If so, please pay special attention to your cloud bills and plan carefully about how you want to allocate your credits. Note, most cloud resources are charged based on usages. If you are not using the resources, please remember to follow the guidelines to release unused resources to avoid unnecessary charges.

  • Version Control: Using version control such as Git is a good idea, especially for team-based project. However, please do NOT put your code in a public repository, such as a default free GitHub repository, as this will make it too tempting for other students in the course (now or later) to violate the academic honesty rules. Both GitHub and BitBucket offer free unlimited PRIVATE Git repositories for students. In addition, I have obtained supports from GitHub for an organization plan with unlimited free private repositories and unlimited seats. If you would like to use GitHub for your team-based project, please post a request through IA forum with your GitHub handler. And I will create a private repository for your team.

Late Submission

No quizzes may be submitted late. No make-up quizzes will be available.

Projects may be submitted late, but with significant penalties. Submissions that are late, where t represents the amount of time late, will have the following penalties:

0 minutes < t ≤ 1 day10% deduction from maximum grade before the rest of the grading begins
1 day < t ≤ 3 days30% deduction from maximum grade before the rest of the grading begins
3 days < t ≤ 5 days50% deduction from maximum grade before the rest of the grading begins
5 days < tno credit will be awarded

Projects are due at the exact minute specified, with all times rounded down to the nearest minute. The submission system is synchronized via NTP with the CS department servers. This time will be considered official.

However, any projects submitted after 10am on Tuesday, Dec. 13, 2016 will not be graded.

Student Disabilities

If you need course adaptations or accommodations because of a disability, or if you have medical information to share with me, please make an appointment with me as soon as possible. If you have not already done so, students with disabilities who believe that they may need accommodations in this class are encouraged to contact the Office of Disability Services (ODS) as soon as possible to ensure that such accommodations are implemented in a timely fashion. This office is located in the West St. House (157 West St) and their phone number is 508.831.4908.

Academic Honesty

The WPI Academic Honesty Policy describes types of academic dishonesty and requirements in documentation. In the case of academic dishonesty, I am required to report the incident to the Dean of Student Affairs. Further, my penalty for academic dishonesty is to assign a NR grade for the course.