COMP 150-MOB: Mobile Development

Fall 2017 Semester Project

Overview

In a pair (with another student in the class or in some situations no more than three people), design and build an app that someone needs.

Caveats

That's it? Any more details than that?

No, that's it.

I am appalled by how students are generally uncomfortable with working on unstructured and open-ended problems. The problem becomes glaring during students' first internships as I constantly see comments in CPT reports such as "I wish my supervisors had described the overall structure in a little more detail" or "I was simply freaking out with the fact that I did not have an assignment with a roadmap." That's normal and reality. Generally speaking in the real world, you will not be given detailed specifications as you have been in most classes. You will also not be given details on how you will be graded on a project because there is no such thing as grades in the real world. The professional world "is unstructured, with competing priorities and decisions that need to be made on the fly. College is very task-based: take an exam, finish a paper, attend a club meeting, go to practice. The workplace is more of a mash-up of activities with no scheduled end."

The open-ended nature of the project in this course will make you care more about the project and ultimately enjoy the course more. The ultimate goal for me is to see you all "set your own schedules and let your curiosity shape the project with little involvement from me."

Are we only going to build one app in this course?

Tough call. Last year, students asked to have a lab to build a simple app. I understand the reasoning for that: to serve as a simple exercise, training wheels, because many have never dabbled with mobile development before. This year, there will be a simple app lab to be done individually that will take no more than two weeks to do. However, the focus of this semester will be on one app. Having taught a course with an emphasis on mobile development each year since 2012, there isn't enough time. There are thirteen weeks in a semester. If we spend a month writing the same app, that about only nine weeks to design and develop a "final project." The big problem with that model is that each app becomes a "one off," a throwaway, not meaningful.

Fall 2017 Apps

???? by John Fairfield-Sonn, Claudia Mihm, and Sara Goldstein-Weiss

???? by Kiki Chan and Will Mairs

TuftsNomNom by Timi Dayo-Kayode and Benard Ngaruiya

Blocking Tracker by Selena Groh and Ben Fuglini

Book Club by Shehryar Malik and Daniel Westrich

Crowder by Conner Erickson, Berkay Unlu, and Phil Wang

Favor! by Catherine Cowell, Iris Oliver, and Leah Stern

FlashVocab by Gyan Tatiya and Huixian Zhang

Hearound by Jianjie Liu, Rui Qin, and Max Turpin

Music Sketching by Chris Hylwa

Neural News by Brendan Voelz and Charles Winston

OnScene by Nikola Jovanovic

Over The Mystic by Rebecca Alpert, Anna Kasagawa, Monsurat Olaosebikan

Palette Paintbox by Rachel Hogue and Melissa Iori

Scanventures by Meet Patel and Jeremy Su

Speaky Jumbo by Tong Dong and Yedi Wang

StaticScraper by Jacob Jaffe

Time Steward by Xiaozheng Guo and Keyue Wang

ThriftEZ by Harper Hopkins and Sam Oakley

TripSharing by Wanqing Chen, Lu Meng, Taining Zhang

You In? by Frank Hattler and Frances Hughes


Leg 1: Proposal and Requirements

Instructions

In your engineering notebook:

  1. Briefly explain the need for the app (the "what").
  2. List the target audience (the "to whom").
  3. List the people and stakeholders who will be supporting your app along with a short statement of support from the person. The person cannot be the instructor of the course or another student in this course.
  4. List and briefly describe the core functionality of the app, the most important functions and transactions of the app.
  5. List and briefly describe the secondary functionality of the app, the functions and transactions of the app that are nice to have only if time allows.
  6. List the features on a mobile device that the app will use (e.g., camera, GPS, SMS, flashlight).
  7. Briefly describe any limitations each team member may feel that will hold back progress.

It goes without saying that the point of this leg is to plan accordingly: "have a plan, write it down." This leg is due on Friday, September 22nd. This should give you enough time to come up with a great idea. Teams will be giving a two minute pitch on their respective idea on Tuesday, September 26th.


Leg 2: Basic Foundation of Your App

Instructions

Check-In

In class on Thursday, October 5th, I will check-in with each team to note progress.


Leg 3: Lightning Tech Talk, Build Minimum Viable Product (MVP) of App

Overview

The idea of a minimum viable product (MVP) is to get something to market as soon as possible, get real people using it, and then iterate or add features based on user feedback instead of assumptions.

Doing an MVP

Some reads to learn more about the idea of an MVP of a product:

Instructions


Leg 4: Testing and Basic Security Audit of Your App (MVP)

Overview

Let's face it: generally speaking, we talk a good game about testing but have little to show for it (read: testing is not done).

The goal of this leg is to prove that you have done some testing and even have considered basic security in your app and app infrastructure. There are many methods to go about testing and basic security auditing, including:

Instructions and Requirements

  1. Analyze your mobile app code with lint. Lint is a code scanning tool that can help you to easily identify and correct problems with the structural quality of your code, without having to execute the app or write any test cases. Provide the initial lint report inside a folder named tests at the top level of your mobile app repository. Make any necessary changes. After making any necessary changes, rerun lint scan and also provide that report in your repository. There should be no errors on second lint scan.
  2. Install and use Fabric's Crashlytics for your mobile app: https://fabric.io/kits/android/crashlytics/install (free). The purposes of Crashlytics: (1) manage and report on app crashes and (2) pinpoint, down to the exact line of code, the issues causing the app crashes. I've been using Crashlytics since 2012 and it has helped immensely. Make sure to share the crash report with me (use my Tufts CS email address).
  3. Choose at least two other methods of testing. Make sure to provide initial test report and report(s) after changes based on initial test report.
  4. Write about your testing experiences and findings in your engineering blog. This is on top of your weekly status entry.

I will be reviewing your tests and evidence of testing on Thursday, November 9th in the evening (after dinner).

Small List of Tools

References


Leg 5: Launch App to the Google Play Store

Overview

This is the stage we have all been waiting for.

Before You Begin

Please read the official documentation Launch Checklist first. Make sure you have all the required assets before adding your app to the Google Play Store. This also includes an icon for your app.

Instructions

  1. Please read the instructions on How to use the Google Play Developer Console. Someone will need to pay the $25 registration fee. Also read Get Started with Publishing. The Google Play Developer Console is available at https://play.google.com/apps/publish/.
  2. Create a new entry for your app the Google Play Store. Complete all necessary details.
  3. When you are ready or when you have received confirmation, email me the Google Play URL of your app on at mchow AT cs DOT tufts DOT edu. Example Google Play URL: https://play.google.com/store/apps/details?id=com.instagram.android&hl=en. For the fun of it, use an exciting subject for email (e.g., We've Launched Our App!). Soft Deadline: Friday, November 17th.
  4. At long last, push your app code to the master branch of your repository.
  5. I will be posting Google Play URL of each app when I receive them.

Well done for accomplishing this much in a matter of 9 weeks. The real learning experience has only begun.


Leg 6: Get Customer Feedback on Your App; App Review and Code Review of Other Teams' Apps, Target for Thursday, November 30th


Leg 7: Update App on Google Play Store and a Reflection, Target for Thursday, December 7th