Mobile App Development Semester Project
Final Due Date
The final project is due at 11:59p, Friday, Dec 6, 2024 (the last Friday before the final exam week). Individual viewing/rating of peer projects due on Blackboard discussion board by 5pm, Dec 10.
Objective
The objective of this project is to give students an opportunity to demonstrate their ability to acquire in-depth technical proficiency on a native mobile platform in an area that is not directly addressed in lecture / homework, and the ability to creatively apply the knowledge gained in a fully functional demonstration app and communicate what they’ve learned via a written coding tutorial / presentation.
Overview
Students will optionally self-organize into groups of 3 or less for the semester project. Each group of students must identify which platform their project will work on (Android or iOS), and which focus area they wish to study.
WARNING
Students who prefer to work solo on the project may do so. Project requirements remain the same whether you complete a solo project or a group project.
The project involves acquiring in-depth proficiency in the focus area, by reading platform documentation and relevant books, online tutorials, etc. Students will identify a demo app idea that clearly generates the functionality of their focus area in a creative and realistic use case. Finally, students will author a coding tutorial on their focus area that helps other developers get up to speed on that aspect of the platform. In addition to publishing the tutorial online, each pair will give a short overview presentation to the class on what they have learned and their demo app.
Group Formation Instructions
Students are free to self-organize into project groups of three or less students. If you would like to work in a group but do not know who else might be willing to work with you, feel free to start a conversation thread in the #semester-project
channel on Slack created for this purpose. To recruit other students it might be helpful to mention your platform preference and topic interest if you have any.
Once you’ve formed a group, have one person in your group create a private channel that consists of the last names of each team member of the group separated by hyphens. For example, if Jane Doe, Juan Perez and Zhang San choose to work together, their group name would be group-doe-perez-san. Add each member of the group to the channel along with the instructor. Then post which platform focus area your group has chosen to work on.
If you choose to work solo, indicate your intent to work solo in a direct message to the instructor on Slack. Include in the direct message which focus area you have chosen to work on. Either way, create a private channel for you "solo group".
Platform Focus Area
Each group of students or solo students will pick one of the focus areas below for their project, and only one group or solo student will be allowed to study each given focus area. Focus areas will be allocated on a first-come-first-serve basis. Once you’ve become part of a group or decided to work solo you can post your focus area selection as described in the previous section. I will cross out topics as they are selected below.
Select topics from the lists below.
Android Topics
ML Kit / TensorFlow(beal-dies)Data Storage (on device options)(barber)Wear OS(gritterb)- Google Fit
ARCore(martinez-avalos)Game Development(zinky)- OpenGL ES
Maps SDK(dob)Location and Context APIs(stacey-munson-lauer)Motion sensors(menrathn-eisele)- Camera/CameraX
- Google Play Billing Library/Google Play In-App Billing
Google Mobile Ads SDK(rileykee)Google Flutter(chov)Firebase Cloud Messaging / Google Push Notification Service(nguyenh1)- Android Launcher
iOS Topics
- Core ML
- Core Data
- Watch Kit
- Health Kit
- ARKit
GameKit(isip-fink)- SpriteKit/Metal
MapKit(brown)- Core Location
- Core Motion
- Camera and Media Capture
- StoreKit
- Google Ads SDK
- SwiftUI
- PushKit / Apple Push Notification Service
Demonstration App Idea
As you start to become technically proficient in your chosen focus area, start to think of a creative and realistic app scenario that you will implement to demonstrate the in-depth area of the platform you are studying. It is acceptable to use other platform features as well (e.g. if you are demoing Core Location, you might want to use MapKit as well) but keep the focus of your demo app on the area you have chosen. Avoid creating a “Swiss army knife” demonstration app!
Important
Please note that simply finding an existing tutorial on the Web and repurposing it as your own with minor tweaks to the source code is not acceptable. You must research your topic thoroughly and then write a demo app and tutorial of your own.
Project Deliverable Timeline
- Week 7: Identify your group and chosen focus areas via Slack as instructed above. Focus areas are assigned on first-come-first-served basis, so don't delay in figuring out what you want to work on!
- Week 8: Submit a short graph description of your proposed demo app idea on your group's private slack channel, or in a direct message if working solo
- Week 15: Final project submission (code + tutorial + presentation) is due end of day Friday.
Writing Your Tutorial
As you develop proficiency in your focus area, author a coding tutorial that will help peer developers quickly come up to speed. You should assume the target audience is proficient in general on the platform you are working on, but has no experience in the focus area you have studied. Your tutorial should consist of the following sections:
- Overview: Description of the platform focus area you studied as well as the demo app your reader will be implementing as they follow your tutorial. Use screenshots and/or video clips liberally to help your reader understand the proposed functionality of the demo app.\
- Getting started: Describe the software development environment, the reader will need on his/her machine to complete your tutorial, including things like IDE version, dependencies, and jump off links on where to download, install tutorials, etc.
- Step-by-step coding instructions. This could be subdivided into multiple sections as you see fit, but basically this will be the “meat” of your tutorial. It will consist of code snippets, text discussing the code, figures / videos of perhaps concepts that are hard to describe in text / code. Make sure any code snippets are formatted well and readable. Readers should also be able to copy/paste code snippets in your tutorial if they are attempting to follow along in their code editor as they read.
- Further Discussion/Conclusions. Summary of your tutorial, including any other alternative approaches developers might pursue to implement the same functionality (e.g. third party components that can be used in lieu of the native features you have studied) related platform features the reader might want to refer to for further study, as well as a link to a github repo of your complete source code.
- See Also Section: In this final section of your tutorial, provide a list of references (with hyperlinks) to similar or related tutorials, particularly those tutorials that you found helpful in learning about your topic and preparing your own demo and code tutorial.
Each project group will post their complete tutorial publicly on GitHub Pages, Medium or similar publishing platform when complete. It is also acceptable to use the wiki on your GitHub repo to publish your tutorial as long as you make it publicly viewable.
** Example Final Presentation / Demos
Here are a few final presentations/demos produced by students in recent semesters to give you an idea of the scope of the project.
Motion Sensors (Android)
Mobile Gaming with Unity (Android)
Health Kit (iOS)
Final Project Submission Requirements
Include the following deliverables:
A link to the GitHub repo of your project must be submitted via Blackboard by the project due date. Your project MUST be self-contained and build without further manual intervention by the instructor. 10 points will be automatically deducted from any project that does not build “out of the box”. Groups are free to use whatever workflow paradigm they wish in managing their code as the project progresses, but do make sure your final commits are all reflected on the main branch, so the Insights -> Contributors graphs accurately represent individual effort.
Important
It is important that every member of the team makes meaningful code commits to the repo. If you are pair programming, make sure each team member has a chance to “drive” and commit code under his/her identity. It is not acceptable for one person in the group to do all the work on the project!
A link to your final tutorial published on GitHub Pages.
A link to your final presentation Google Slides.
An embedded YouTube video recording of your presentation followed by a brief demo.
Grading Rubric
Your work will be graded on the overall quality/creativity of your work and whether or not it meets the documented requirements. Grading will follow the rubric given below.
Requirement | Point |
---|---|
Demo app | |
(a) Creativity / breadth of coverage in focus area | 20 |
(b) Authenticity | 15 |
(c) Implementation | 20 |
Tutorial | |
(a) Overall organization | 5 |
(b) Sufficient level of details for intended audience | 10 |
(c) Use and quality of code snippets and visuals (figures, video) | 10 |
(d) Formatting / general readability and correctness of tutorial | 10 |
Final presentation to the class | 5 |
Viewing and rating peer | 5 |