UP | HOME
2017-02-08 ../../

P3: Collaboration and Cloud Messaging in Android APKs

Table of Contents

1 Lab Goals

The purpose of this lab is (i) to give you more experience in developing Android APKs, (ii) to get you started with technologies that are essential in collaborative APKs, (iii) to familiarize elementary use of github and related utilities, (iv) apply all the above in a concrete instance of an APK.

This lab is a programming assignment.

2 Background

  1. This lab assumes successful completion of P2.
  2. Include in the "report" is short for include in the "report-P3.pdf file". The report must have page numbers.
  3. In the report, at the very beginning: Include (i) your full name, (ii) WSU UID, (iii) your GitHub link.
  4. In the report, make a section for each task. At the top of each section, list the deliverables you have included and where (page number, URL, …).
  5. Deliverables listed, exceptions described below, should be included in the report.
  6. The (i) pre- post-conditions and (ii) diffs go in the report.
  7. APKs, src code files, … should be uploaded (between due +2 and due +3 days) to your GitHub (or similar) account. Do not zip or tar ball these. Do create a decent directory structure.

3 Tasks

P3 contributes 5% to the course grade. The various tasks of P3 are very uneven in effort. The relative weights shown of different tasks reflect this.

3.1 Task: Collaborative Sudoku (weight) 60%

  1. Extend the P2-pruned Sudoku of yours into a Collaborative Sudoku using FCM. Use whatever features of FCM to complete this task. Authentication is singled out for credit.
  2. As you do the above, think about testing and debugging. In particular, log the content of every communication with Firebase.
  3. As you do the above, think about how you can emulate other players joining the collaboration.
  4. Deliverables: (i) Screenshots (4+) produced by running the APK you built, (ii) Dump of the log file, (iii) Screenshots of your APK showing the emulated users, (iv) The src code files, (v) A status report (How well is your APK working? bugs? crashes? hangs? …).

3.2 Task: FireBase Auth 10%

  1. Authenticate Sudoku players using Google, Facebook or Twitter services. Build a little database of such players. Build a log of their usage details. Further details are left to you.
  2. Deliverables: (i) Screenshots produced by running the APK you built, (ii) A display of the contents of this database, (iii) The APK. No need to upload the src code.

3.3 Task: A Quiz on FireBase 10%

  1. This task is revised. See below.
  2. About 10 simple quiz questions. Inserted one day before due date. Include your answers in report-P3.pdf.
  3. Take a 15+ lines-long method of Friendly Pix and write its pre- and post-conditions both in English and as Java assert statements.
  4. Deliverables: (i) The pre- post-conditions, (ii) Diff between the original file and JavaDoc commented file.

3.4 Task: Code Quality Improvement of Pruned OpenSudoku 10%

  1. A Quiz on Sudoku Internals is subsumed by this task.
  2. We have discussed "Code Smells" and "Code Factorization". Improve on these two.
  3. Identify in the Pruned Sudoku, two or mode code smells. Give source code line numbers. Describe why you consider these bad smells. Fix these smells.
  4. Identify in the Pruned Sudoku, two or mode areas that can benefit from code refactoring. Give source code line numbers. Describe why you consider these ought to be modified. Present the mods.
  5. Improve the quality of Java code. Java 6 to Java 8. Etc.
  6. Deliverables: (i) A diff of original and revised files, with explanations, (ii) Do the diffs for each of the three items above, (iii) Build the APK using the revised files (iv) The src code files.

3.5 Task: Speed + Size Improvement of Pruned OpenSudoku 10%

  1. Reduce the code size, as in lines of code. Use http://www.dwheeler.com/sloccount/. This program is not influenced by blank lines and comments. Aim for 5% reduction.
  2. Aim for 5% speed improvement. Use bash prefix time, and measure actual system + user time used – not elapsed time.
  3. Deliverables: (i) A diff of original and revised files, with explanations (explain how you speeded up and reduced the size), (ii) Size and time numbers for your claims, (iii) Build the APK using the revised files, (iv) The src code files. It is OK to combine the above two tasks, and build one APK satisfying both.
  4. Update (Feb 20, 2017): Do read and use one of the solutions ../AppDevelop/resourceUsage.html . Do include the bash-time numbers,chestert despite limitations.

4 TurnIn

Scripts are used to check various things – so file names should obey "rules". Submit report-P3.pdf on Pilot dropbox for P3.

5 End


Copyright © 2017 Dr Prabhaker Mateti • 2017-02-08