Mobile App Project

Getting Started

You should already have your teams registered from the Core Skills assignment. Get a new repository for the final project using the link below:

https://classroom.github.com/g/13xNJFO7

Project Description

Now is the time to let your creativity shine! Using what you have learned during the first two project, create a mobile app of your own purpose and design! You may choose to do either Android or iOS.

The domain (i.e. what the app will do) is totally up to you. We find students enjoy projects more when they are invested in what the project actually does / means for them. So, here's your opportunity to build the app of your dreams!... within reason, of course... you only have a few weeks.

And you can't do a Bucket List app or anything that's basically just a list with an info page for each item. You HAVE to branch out and do something substantively different. Not that you can't have features in this space, but there has to be enough to establish that it is a wholly different project from the mini app assignments.

Features and Rubric

For the final project, there are a set of required features and points that must be completed by all projects. After that, you may choose any combination of optional features up to the max.

Notes:

  • No extra credit given past 100 pts.
  • Required Features = 40 pts / Optional Features = 60 pts.
  • You cannot do the same optional feature twice for more points.
  • Students declare in their docs what they want considered for the optional features.
  • We will not grade the "best" set of optional features (i.e. people can't "shotgun" for more points).
  • If your feature selection point total is between 60 and 70 points, and removing any features will drop you below 60 points, we will scale your points accordingly during grading (i.e. 65/65 => 60 pts, 63/65 => 58 pts, etc.).
  • If your feature selection point total is over 70, you must select features that will not be graded.

Required Features

15 pts - At least 3 "screens"/"major features"
- We expect your app to be of significant enough complexity that they are not "one screen" apps. "Trivial" screens will not be counted toward this (i.e. splash screen, etc.). (5 per feature - 5: Good and well-thought out, 3: Reasonable but lacking, 1: Poor)

5 pts - App can rotate / can be interrupted and works "correctly" given the domain
- We expect your app to handle rotation and interruption as a full, professional release would. Games and other required locked-perspective apps do not have to do rotation, but they have to make up the points in the optional features. (5: Works, 3: Mostly works, 0: Doesn't work)

15 pts - Design and Presentation
- We expect your app to be well-designed and polished. This includes everything from following interface guidelines to good layout to good fonts/colors. (15: Great, 12: Good, 9: Reasonable, 6: Okay, 3: Poor, 0: Unusable)

5 pts - Documentation
- Use the same format as the proposal, with these additional sections added after the wireframe explanation:

  • Platform Justification - What are the benefits to the platform you chose?
  • Major Features/Screens - Include short descriptions of each (at least 3 of these)
  • Optional Features - Include specific directions on how to test/demo each feature and declare the exact set that adds up to ~60 pts
  • Testing Methodologies - What did you do to test the app?
  • Usage - Include any special info we need to run the app (username/passwords, etc.)
  • Lessons Learned - What did you learn about mobile development through this process?

The format can be found here: https://docs.google.com/document/d/1I-4fN3LdXhIPiKXlqZICq3M7NRXnSGpNnB_1u4MpQZk/edit?usp=sharing

Optional Features

15 pts - GPS / Location-awareness (includes using Google or Apple Maps)
- Your app uses the location of the user in some meaningful way in the app. A plain Google Map with just your location and no modification will not earn full credit. (15: Excellent, 12: Good, 9: Reasonable, 6: Has issues, 3: Poor, 0: Does not work)

15 pts - Camera
- Your app uses the camera to take a picture and use it directly in the app. The image is saved somehow, either locally or remotely. (15: Excellent, 12: Good, 9: Reasonable, 6: Has issues, 3: Poor, 0: Does not work)

10 pts - Device Shake
- Your app responds in an appropriate way to a device shake. "Made up" usages that don't make sense will not earn many points. (10: Excellent, 8: Good, 6: Reasonable, 4: Has issues, 2: Poor, 0: Does not work)

15 pts - Accelerometer
- Your app responds in an appropriate way to tilt movements. (15: Excellent, 12: Good, 9: Reasonable, 6: Has issues, 3: Poor, 0: Does not work)

15 pts - Microphone / Audio management
- Your app uses the microphone to record audio and/or has advance audio playback capability. Simply playing sounds when a button is pressed does not count for this feature. (15: Excellent, 12: Good, 9: Reasonable, 6: Has issues, 3: Poor, 0: Does not work)

20 pts - Build and consume your own web service (including all server-side code)
- Your app uses a web service that you built yourself from the ground up. This service may running PHP, Python, or some other appropriate language and hosted on either the UVa web server or another approved server. (20: Excellent, 16: Good, 12: Reasonable, 8: Has issues, 4: Poor, 0: Does not work)

15 pts - Build and consume your own web service using a third-party platform (i.e Firebase)
- Your app uses a web service that requires some level of serious customization. A good example is Firebase, a mobile-ready cloud-based database you can use for free. (15: Excellent, 12: Good, 9: Reasonable, 6: Has issues, 3: Poor, 0: Does not work)

10 pts - Consume a pre-built web service
- Your app consumes some readily-available data source, such as weather or stock prices. (10: Excellent, 8: Good, 6: Reasonable, 4: Has issues, 2: Poor, 0: Does not work)

20 pts - Data storage using Core Data (iOS) or SQLite (Android)
- Your app stores data locally in a relational-type database model. (20: Excellent, 16: Good, 12: Reasonable, 8: Has issues, 4: Poor, 0: Does not work)

15 pts - Data storage using file read/write or data serialization read/write
- Your app stores data by either taking data structures (Array or ArrayList) and serializing them for direct writing to disk or you have your own data format you write to disk. (15: Excellent, 12: Good, 9: Reasonable, 6: Has issues, 3: Poor, 0: Does not work)

10 pts - Data storage using key/value pair storage (SharedPreferences or UserDefaults)
- Your app stores data in the provided key/value storage system of your platform. (10: Excellent, 8: Good, 6: Reasonable, 4: Has issues, 2: Poor, 0: Does not work)

10 pts - Open shared activity / features (i.e. Create an email to send, share with a text message, etc.)
- Your app interacts with another activity or feature of the device by passing data in a reasonable way. (10: Excellent, 8: Good, 6: Reasonable, 4: Has issues, 2: Poor, 0: Does not work)

Complete at least 60 pts for full credit. Points do not have to add up exactly to 60, but no more than 60 points can be earned. Any set of features that goes just over 60 will be scaled.

Optional Feature Clarifications

Sometimes, students will come up with unique situations that will require a decision by course staff. We will document those here for everyone.

  • Things cannot "double count" in two categories.

Project Proposal Submission - Due: Monday, October 30 @ 11:55 PM

Requirements:

Grading Rubric:

Out of 10 total point:

  • 1 pts: PDF follows the format and has all of the fields requested (-0.5 for each missing section; 0 if not a PDF)
  • 9 pts: PDF content sufficiently explains the project that will be undertaken (3 pt each for description, "system shall" list, and feature selection on a 3/1.5/0 scale for good/okay/poor or missing)

Submit:

Please upload your PDF proposal document(s) to the appropriate assignment on Collab.

Milestone Submission - Due: Wednesday, November 15 @ 11:55 PM

Requirements:

We are looking for good, obvious progress toward the completion of your project. We do not expect fully functioning projects, but we expect there to be something "demoable." Turning in a milestone that does not show good progress will not receive full credit.

Specifically:

  • The app loads and there is an obvious starting screen.
  • There is solid evidence of progress toward at least one major feature.
  • There is solid evidence of progress toward at least two optional features.

Grading Rubric:

Out of 10 total points:

  • 2 pts: App loads and does not crash
  • 4 pts: Visible and obvious good progress toward a major features; this is app and domain dependent - basically you have obviously made progress on your project (4: good progress, 3: reasonable progress, 2: lacking, 1: you have a screen that has a button)
  • 4 pts: Visible and obvious good progress toward two optional features (2 pts for each feature - 2: good, 1: okay, 0: no obvious progress)

Submit:

All code and resources must be kept in the GitHub repo you created as a part of your partner creation process above. Edit your README.md file explaining what progress you have made and what features we should be looking for when grading. We will do a checkout from Github of the latest push to the repo before the 11:55 PM deadline. Please make sure that the latest version of any supplemental materials are in the root of your repository. If you are doing Android, please also put a signed .apk in the root of your repo.

Final Project Submission - Due: Friday, December 1 @ 10:00 AM

Requirements:

Please make sure you have the following:

  • The final version of your code is fully committed and pushed to GitHub before the deadline.
  • If you are doing Android, also push a final version of your .apk to the root of the repo. iOS teams do not need to do anything similar.
  • Put the final version of your documentation in PDF format in the root of your repo.

Submit:

All code and resources must be kept in the GitHub repo you created as a part of your partner creation process above. We will do a checkout from Github of the latest push to the repo before the 11:55 PM deadline. Please make sure that the latest version of any supplemental materials are in the root of your repository. If you are doing Android, please also put a signed .apk in the root of your repo.

Partner Evaluations: https://goo.gl/forms/ZnO9aquNQUy9iC4o1

Demo Days

There are two demo days: Friday, December 1 and Monday, December 4. Students are only required to come to their assigned demo day, but are highly encouraged to come to both to see all the projects! ALL project code for both days is due at 10:00 AM on Friday, December 1. ANY change to the code between that time and demo will result in a 0 for the project for both partners.

  • Teams demoing on Friday, December 1: Android teams (Aipom through Spearow)
  • Teams demoing on Monday, December 4: Android teams (Spearow through Yanma) and all iOS teams

When you come to demo, please bring your device and all parts needed to turn it in. You SHOULD NOT wipe the device, but YOU MUST do the following:

  • Android devices: Ensure there are no passwords on the device at all.
  • iOS devices: Ensure that the password is set to 0000. You MUST verify that any iCloud accounts have been removed! Please also go ahead and update to iOS 11 if you have not done so.

I will wipe all devices after grading has been completed.

Please make sure to fill out your partner evaluations when your demo is done!

more ...