In the final project for this course, you should either team up into groups of two people, and work together on a large-scale mobile application. The specifics of the application that your team should implement is largely up to you, so long as it fits within the requirements outlines in this document.
If you are unable to find a partner able to work with you, you may request special permission to work on the project individually (before the project document deadline). However, there is not a huge difference in expectation between an individually-created project and a group-created one. Thus, working individually may require you to write more code than you would have had you been in a group.
The application that your group implements is up to you! So long as it can fulfill the requirements described in this document, and your group is agreeable to it, then go for it. I provide a few example ideas below. Don’t feel limited to these ideas though! Be creative!
Though the application that you write is largely up to you, it must meet the following requirements:
This is a 2-person, 3-4 week final project and thus the application you develop must have significant scale. Due to this, it should be significantly more feature rich and robust compared to, say, the News app or the Flickr viewer.
You may not create an app that is similar to one of the PAs. For example, you should not create a news-browsing app, a picture-drawing app, etc.
You should use the design patterns and best-practices discussed in class and in readings, when and where applicable.
Your application should use Fragments in situations where it makes sense to do so, rather than relying solely on Activities for the user interface.
The application must use at least one implicit intent, which would cause an Activity from a different application to be opened. For example, an intent that opens the camera app to take a picture, or an intent that opens up the email app to compose a message.
The application must utilize at least one content provider. We used (or will use) content providers in three main ways in class: to access contacts, to view images, and to view messaging conversations. You may use one of those three, or you can choose another content provider to use. Which one you choose will depend on the feature requirement(s) of your application.
The application should be capable of saving data and/or user preferences to the local storage on the device. You should use at least one of the storage techniques discussed in class and/or the readings, such as internal files, external files, or shared preferences.
Your application should make web requests in some way. Your application could leverage internet access in a number of ways. For instance, you could:
The application should complete background work using a Thread / Runnable / AsyncTask / Service. You would want to do this anyway for internet connectivity, but you may use it for other feature(s) as well.
Your application should support both phone and tablet form-factors. The user interface should function well on either size of screen.
Your project should include an in-app help page, which explains to the user (or the grader!) how to use the application.
It should include at least one non-trivial use of animation.
Each team should write a document, describing the plans for the application. Essentially, you can thing of this document as your own, custom final project specification. The document should be somewhere between 2-4 pages, and should be organized into several clearly-labeled sections:
You are required to inform me of your group formation by the date listed above. Submit this via Gradescope. When you submit your group, you should try to have a general idea of what your project is going to be, but you do not need to be finished with your document. Not submitting your group by the required time may result in a penalty.
You should have completed your project document by the date shown above. Your document should be structured according to the directions in the “Document” section. Submit your document to the gradescope assignment. You may begin implementing your code before this deadline if you have a clear idea of what your project topic is before hand.
There will be one checkpoint meeting on the class date specified above. Your whole group is required to be in attendance. By this meeting, I would like to see that the implementation of your project is at least 50% complete. These will be short meetings that happen during class time on 4/25 with either Ben or Thomas.
We will have one day for final project presentations. This will probably not be enough for every group to present, but will give groups an opportunity to “show off” your work. Your presentation should show off your application to your instructors and the class as a whole. At this point, your applications should be mostly complete. Also, can give your practise for your video, or you can screen-record the presentation and use that as your presentation.
The final project code-base will be due on 11:59pm on the last day of class.
You should submit to gradescope, along with the project document.
You are also required to record a 5-7 minute video presentation going over your application.
You should record the video, upload it to somewhere (dropbox, youtube, vimeo) and then include a file named video.txt
in your gradescope submission.
This file should contain the URL to the video presentation.
You should try to make a good-quality video.
This will be used to grade your project.
Not including this video could result in a significant grade deduction.