Mobile Computing

Course Information

CS 4518: Mobile and Ubiquitous Computing
Term: B Term, 2017
Time: 3:00pm to 4:50pm
Days: Tuesdays and Fridays
Location:Washburn Labs 229

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. image and 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 six in-class quizzes, four individual Android programming projects, and a team-based (with up to four 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 useful 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 138
Office Hours: Tuesdays, 5:30pm-6:30pm. Appointments also available.

Teaching Assistant:Anand Ramakrishnan
Office: Fuller Zoo Lab
Office Hours: Mondays, 4pm-6pm; Wednesdays, 1pm-3pm

Teaching Assistant:Chaitany Nimkar
Office: Fuller Zoo Lab
Office Hours: Thursdays, 1pm-3pm; Fridays, 11am-1pm

Schedule and Readings

Below is a tentative course schedule along with a list of lectures and readings for the class and deadlines for projects. Readings include book chapters from our textbook (BNRG), papers, and free online resources. Weekly quizzes will be based on both lectures and readings covered in the prior week, unless specified otherwise. 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
[Due date calendar]
Oct. 24, 2017 Introduction, Android Overview Ubiquitous Computing
Oct. 27, 2017 Your First Android App BNRG Chapter 1-4, Chapter 6 Individual Project One Issued
Oct. 31, 2017 Second Activity, Fragement
Annotated Version
BNRG Chapter 5, 7 Term Project Issued
Nov. 3, 2017 RecyclerView and Data Management
Annotated Version
BNRG Chapter 8, 14, 15
Nov. 4, 2017 Individual Project One Due
Individual Project Two Issued
Nov. 7, 2017 Permission and ADB
Annotated Version
Permission Tutorial
ADB Tutorial

Nov. 10, 2017 Mid-term Checkpoint and Google Mobile Vision API In-class project: todo
In-class project: code
Nov. 13, 2017 Term Project Proposal Due
Nov. 14, 2017 Term Project Proposal Presentation
Nov. 17, 2017 Mobile Network Solution
Annotated Version
BNRG Chapter 25 Term Project Proposal Modified Due
Nov. 18, 2017 Individual Project Two Due
Individual Project Three Issued
Nov. 21, 2017 Cloud Backend
Nov 24, 2017 No class (Thanksgiving break)
Nov. 25, 2017 Individual Project Bonus Due
Nov. 28, 2017 Mobile Machine Learning
Annotated Version
Dec. 1, 2017 Energy-aware Mobile Computing
Annotated Version
Reading References
Dec. 4, 2017 Individual Project Three Due
Dec. 5, 2017 Mobile Code Offloading and Context-aware
Annotated Version
Reading References
Dec. 8, 2017 Mobile App Security
Annotated Version
Reading References
Dec. 12, 2017 No class (Reading Day)
Dec. 14, 2017 Term Project Final Due
Dec. 15, 2017 Final Project Presentation

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.

Course reading materials

Required textbook:
  • Android Programming: The Big Nerd Ranch Guide (Third edition), Bill Phillips, Chris Stewart, and Kristin Marsicano, The Big Nerd Ranch, 2017

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 six quizzes, each 15 to 20 minutes long, at the beginning of Tuesday's 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. This eases TAs efforts to provide prompt feedback for your performance and therefore allows TA to spend more of their time outside grading in helping you success in this course. The lowest quiz score will automatically be dropped, allowing for absences, illnesses, or simply "bad days". The quizzes will be short (1 printed page). Quiz questions will focus on, but not limit to, material that is covered in the most recent two lectures. The goal of quizzes is to help you internalize course material by applying course concepts to new challenges. To prepare for these weekly quizzes, please review lecture notes and understand the main concepts and their connections to previous lectures.
  • Individual Projects (35%): There will be four 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 (30%): There will be one term-long project that students pursue in teams of up to four people. The instructor will provide several potential project ideas that students may choose from. Students are strongly 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 four people. All course projects are due on 10 pm, unless specified otherwise.

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 two phases and each phase require a submission per team. This includes a proposal phase and final submission phase. The proposal phase requires each team to submit a project proposal and to present their proposed project in class. After the proposal presentation, every team is given some extra time to finalize their proposals based on feedback. Once the term project topic is finalized, there will be no changes allowed unless acquiring special permission from the instructor. The final submission phase include a project demo presentation that followed by submission of a final project report, code and demo submission. 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. Along with final project submission, you are required to submit a peer review that help us assess individual contribution to the project. Submissions are graded for each phase separately and all team members are assigned points based on indicated contributions.

  • 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. In addition, students can 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 10pm on Friday, Dec. 15, 2017 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.