Class Projects

Mini Project

The goals of the mini project are to make you familiar with a mobile development environment such as Android (e.g., Android Studio) or iOS (xcode). Even if your main project does not involve Android or iOS or utilizes a different tool for mobile development (e.g., web-based, hybrid tools, etc.), this project will provide you with an opportunity to develop a simple "native" mobile app.

The project includes the following steps:
  • Decide on either Android or iOS. If you use iOS, you also need to decide whether to use Objective-C or Swift. If you use iOS, a Mac platform for development is strongly recommended.
  • Install either Android Studio or xcode on your development computer (if it is not already installed).
  • Learn about the development platform, e.g., a recommended approach is to search for one or more tutorials (e.g., "Hello World!") using google or youtube and follow the steps in the tutorials. Whenever you encounter terms or tools that are unfamiliar (e.g., segue, list view, gradle, fragment, etc.), try to read up on those to slowly learn more and more about mobile development.
  • Once you feel comfortable, start with a new project and implement a simple app that includes the following minimum features:
    • It can display a map and your location on the map. For this you will need the map view feature, GPS data, and the ability to display a marker on the map.
    • It can perform something meaningful when certain motion is detected. For this you need to read the accelerometer (or gyroscope) of the device and respond to certain types or levels of activity (e.g., show different types of information on the map).
    • It provides, in addition to the map view described above, at least one more view, that second view being a "table view" or "list view". In this table view, when a table item is selected, some action should be performed (e.g., corresponding information is shown on the map view, a "detail view" is shown, etc.).

The project must be performed independently, but providing assistance to other students in class is permitted. Also the use of online tools and resources is permitted. The project deliverables include the source code and a brief report that describes what the app does, the includes features, and how to compile/run it. Note that to test features such as GPS or accelerometer, a physical device will be required (e.g., iPhone, iPod Touch, Android phone, etc.). If such a device is needed for development and testing, please contact the TA. All deliverables will be submitted via the AFS dropbox for this course. Create a directory called "miniproject" and place your files into this directory by the deadline (September 23, 11.59pm). The TA may ask you for a meeting if he runs into difficulties extracting your files or compiling/running your app.

Team Project Proposal Instructions

The main project of this course will provide you with an opportunity to work on a larger project in the area of mobile computing. The deadline for the proposal is September 9th, 11.59pm. The proposal should be submitted via AFS dropbox; create a directory called "mainproject" and place your document there. Projects can be performed in teams of 1-3 students; only one student needs to submit the proposal via dropbox, but all team members must be clearly identified in the proposal document. Once the proposal has been submitted, you should immediately start on the project. Note, however, that the instructor and/or TA may contact you with feedback about your project, e.g., if the proposed activities do not appear feasible (too ambitious) or insufficient or if there are any other suggestions and advice.

The project proposal should be a 1-page pdf or ps file containing the following sections:
  • Project Title
  • Team Members
  • Problem Statement
  • Proposed Solution
  • Technical Details
The title should be descriptive. In the problem statement, you describe in a few sentences the challenge or problem you are trying to address. In the proposed solution, you describe how you will address the challenge or problem. Finally, in the technical details, you describe why this is a mobile computing problem, which hardware and software you will utilize to develop your solution.

Project Topics

Your project should be an example of a "mobile" or "wireless" solution to a problem; typically, a mobile computing solution has one or more of the following characteristics (this is an incomplete list, but is presented to help you decide on a project):
  • a mobile/portable solution that provides anytime and anywhere access to services and/or information
  • a solution that takes advantage of "context information", such as the location of the device, the time of day, the habits of a user, the social context, past experience (historical data), etc.
  • a solution that utilizes wireless communication capabilities to obtain information from other mobile devices, cloud services, sensors, etc.
  • wearable and pervasive computing solutions (e.g., smart watches and other wearable devices, sensors embedded into the environment, etc.)
  • collection, analysis, and response to sensor data (video, audio, proximity, temperature, pressure, hazards, etc.)
  • control of (or close integration with) robots, unmanned aerial vehicles, in-vehicle technologies, etc.

To further help you with project selection, you will have access to the following tools (although if you have a unique hardware/software requirement, we may be able purchase it for your project if cost is reasonable):
  • Smartphones and tablets (Android-based and iOS-based)
  • Embedded/development boards (Arduino, Intel Galileo, Raspberry Pi, etc.)
  • Sensors (cameras, Kinects, gas sensors, RFID/NFC tags, etc.)
  • Smartwatches and other wearables (e.g., Google Glass)
  • Robots (Nexus, Dr.Robot, etc.)
  • Quadcopters (Crazyflie, IRIS, Draganflyer)

Project Progress Reports

The purpose of the progress reports is to provide evidence that you are making satisfactory progress in your project. The first project report is limited to one page of text (plus up to 4 pages of figures, graphs, screenshots, tables, etc.), the second project report is limited to two pages of text (plus 4 pages of attachments). Each report should briefly repeat the objectives of the project in 1-2 sentences (e.g., "This Android project will build an emergency alert app that allows a user to send previously customized SOS calls to either friends, family, or law enforcement. Notifications can be triggered in several ways (user interface, voice, certain device motions, pressing certain key combination, etc.) and each alert is accompanied with location information (and history), voice data (the microphone turns on and records everything until help arrives), and motion data"). This is followed by a section that describes the objectives or features achieved or completed and the features that are currently in progress. Finally, the report describes any major difficulties, proposed changes to the problem statement due to these difficulties (if any), and what the team hopes to achieve before the next report is due. In addition to the 1-page document (first progress report) or 2-page document (second progress report), up to 4 pages of additional information in the form of figures, screenshots, etc. can be added.

Summary of required steps:
  • State title/name of project and all team members
  • Briefly restate goal(s) of project
  • Describe status of work (completed, in progress)
  • Describe complications, changes, and next steps
  • Attach figures, graphs, results, screenshots to document progress
  • Submit as a single PDF document ("firstreport.pdf") by the deadline via the AFS Dropbox (in the mainproject directory)

Project Presentations

The purpose of the project presentation is to demonstrate your project ideas and solutions to your classmates and too demonstrate the current functionality to the course instructor. The presentation will count for a large portion of the overall project (and course grade) and should therefore be taken very seriously. Each team should prepare a presentation/demonstration for about 5-8 minutes (we're aiming for a total time of about 10 minutes per team, which includes Q&A), covering the following aspects:
  • What problem does your project/solution solve? Can you provide evidence for the need for a solution (e.g., case studies, statistics, etc.)?
  • How are you addressing the problem? What solution(s) do you propose? How does your solution compare to existing solutions if they exist?
  • What are the details of your solution? What problems and challenges did you run into and how did you address them? What are all the components of your solution and how do they interact/integrate?
  • What is currently working and how? Can you demonstrate your solution using a live or recorded demo? Can you show screenshots/graphics for pieces of your solution not yet fully implemented?
For the demonstration part, it is suggested to video tape a demonstration of your solution. You can use a projector in class for a live demonstration, but you should be prepared that things fail, so a taped demonstration is safer. Use the project presentation/demonstration to convince the instructor that you have worked on a significant problem and made good progress towards its solution! After the presentation, teams are asked to submit their presentation documents to the TA. Students in class may be asked to score each presentation.

Final Project Deliverables

The final project deliverables are due on Wednesday 12/9, 11.59pm! The deliverables should include, at the minimum, all source code, the slides used for the final presentation, and a brief final report. The report should summarize the project's functionality, briefly describe the missing/incomplete features, how to compile it, and how to run/use it. This document should ideally be no longer than two pages. If appropriate, additional information/resources can be provided (e.g., hardware lists and descriptions if work involved hardware development). The purpose of this brief report is to provide all information needed to compile/execute/use your solution and to summarize what has been achieved and what open issues remain (i.e., what has not been completed/achieved). The materials should be packaged into a single file (e.g., .tar, .rar, etc.); this file should be placed in your AFS dropbox in a subdirectory called "Deliverables". If the file is too large, please coordinate with the TA to transmit your deliverables in a different way (e.g., email, box.com, Dropbox, etc.).