Getting Started: Partner Registration and Github
To register your project and partner information for the project, please follow these steps:
- Decide whether you will have a partner or not. You may do the final project solo, but note that there is no difference in grading between solo or partner projects. All teams must complete all requirements with the same high level of quality that we expect.
- Decide on your platform: Android + Java + Android Studio or iOS + Swift + Xcode. Your choice, but these are the only two choices.
- Pick the device you will use. Depending on your situation, you may have multiple devices or none of a given platform. If you have a device you can use, make sure you have all the components for it and set it aside. You will be required to return all other devices as soon as possible so others can check them out. If you do not have a device with all of the components of the type you want to use, you will register that on the form for future check out.
Once you have decided these things, register your project team and device here:
If you are working in a pair, ONLY ONE person should fill out the form!
Once you have completed the form, you may create your GitHub repo, using your device name as your team name:
You are creating a new repo with a new team, so we shouldn't have the issues that we had with the iOS project this time. Please let us know if you have any issues.
Returning Unused Devices
If you have unused devices, you can turn them in to Prof. Sherriff during his office hours. If you cannot make his office hours, email for an appointment time to come by to have the device checked in. Please do this as soon as possible after you have chosen your device and platform!
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.
- 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.
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
- Follow the basic format of 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?
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.
Project Proposal Submission - Due: Monday, March 20 @ 11:55 PM
- One PDF document (uploaded by only one person if in a pair) in the format of the example shown here: https://docs.google.com/document/d/1I-4fN3LdXhIPiKXlqZICq3M7NRXnSGpNnB_1u4MpQZk/edit?usp=sharing
- A wireframe of your app, either as a separate PDF or included in the main document, similar to the example shown here: https://cs4720.cs.virginia.edu/resources/BookBuddy.pdf
- Note in the submission text whether you are solo or in a pair - and if in a pair, the partner's name and computing ID
Out of 10 total point:
- 2 pts: PDF follows the format and has all of the fields requested (-0.5 for each missing section; 0 if not a PDF)
- 4 pts: PDF content sufficiently explains the project that will be undertaken (1 pt each for description, "system shall" list, feature selection, and wireframe description on a 1/0.5/0 scale for good/okay/poor or missing)
- 4 pts: Wireframe (1 pt the wireframe is sufficiently readable/understandable/legible, 3/2/1/0 points for quality and sufficient explanation)
Put the proposal in the root of your 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. There is nothing else you need to do to submit your proposal other than use the repo!
Milestone Submission - Due: Monday, April 17 @ 11:55 PM
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.
- 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.
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)
All code and resources (such as the wireframe) 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, April 28 @ 10:00 AM
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.
- Make sure the final version of your documentation is in PDF format and also in the root of your repo.
- Your original project proposal should remain in the root of your repo as well.
All code and resources (such as the wireframe) 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.
There are two demo days: Friday, April 28 and Monday, May 1. 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, April 28. 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, April 28: Android teams named Aipom through Squirtle
- Teams demoing on Monday, May 1: Android teams named Sunkern 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 there is either no password or the password is set to 0000. You MUST verify that any iCloud accounts have been removed!
I will wipe all devices after grading has been completed.more ...