2017-04-10 ../../

P7: Android APKs with MBaaS

Table of Contents

1 Lab Goals

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

This is part of a project in CEG 3900.

2 Background

3 Tasks

3.1 Task: SETI@home (10 points)

  1. SETI@home / BOINC is a scientific experiment, based at UC Berkeley, that uses Internet-connected computers in the Search for Extraterrestrial Intelligence (SETI). You can participate by running a free program that downloads and analyzes radio telescope data. The project SETI@home was a popular distributed computing project that made use of idle PCs as a screensaver. It has been made into an Android APK in 2013. It runs on your Android device while it is asleep (with screen off). Obviously, sips battery power. Can be configured to work only while being charged.
    1. http://setiweb.ssl.berkeley.edu/beta/ Home Page.
    2. https://play.google.com/store/apps/details?id=edu.berkeley.boinc Link to APK download on Google Play.
    3. https://boinc.berkeley.edu/trac/wiki/SourceCodeGit Wiki. Note the use of "trac", a small piece of FOSS that can do a "wiki".
    4. https://github.com/BOINC/boinc This is an open source project.
  2. Install it. Let it run for a few days. Report on (i) your experience, (ii) critique its user interface, and (iii) what you expected it to inform you in general terms, in addition to its own technical computation.

3.2 Task: Word Wide Inflation of Grades (20 points)

  1. You are given a world-wide "database" (actually a not-so-tiny collection of individual files in a tar.bzip2) of graduate student grades. We need to compute the average grade per country. Average across all years, terms, courses, and students.
  2. File Format: Hundreds/ Thousands of files are given in a directory named D. (i) A single file contains the grades of one course offering. This is a text file of two columns, one row (line) per student. Left column has student id, as a non-negative integer, the right column has the grade the student received, as a floating point number in the range of 0 to 5. (ii) The name of the file encodes a lot of fields in the following order, separated by one hyphen: country code (4 digits), year the course was offered (4 digits), term the course was offered (4 digits), course "number" (4 letters immediately followed by 4 digits). Make further reasonable assumptions, if you must. (iii) Each file has anywhere from 5 to 1000 student records. (iv) Each country has 10 to 10000 course records. We have 80+ countries. (v) We have artificially constructed these files, using scripts. They are available at Google Drive location: WorldWideGrades.tar.bzip2 18 MB
  3. This is a design and implementation project. You must solve this problem using streams, and map + reduce. An Android APK as a front-end. Whose first thing to do is to get the GitHub URL and send it to the cloud. You may compute item#1 on any of the Clouds.

3.3 Task: Android Reactive Programming Coupled to Cloud Computing (20 points)

  1. Build the Android APK with the src code rxandroidsample, explained in the lecture notes.
  2. Replace the "Hello, World!" with an advocacy piece on our Password Helper that presents sections of a demo video and other images.
  3. For now, the video and the images need not be extensive. But, these are present in a cloud storage facility.

3.4 Task: Discover Docker Containers (20 points)

  1. Discover at least one Docker container that could be the base for Android Front End with MBaaS Backend APKs.
  2. This task is limited to discovery and a design idea sketch only. Actual implementation is not expected. The APK may be about any thing. Password related preferred.
  3. The design sketch should be so detailed that a sophomore can finish the implementation in about 10 hrs (not counting debugging). Use psuedo code and diagrams. Include sections on requirements, specs, design sketch as part of the developer's documentation.

3.5 Task: Enhance Password-Help Task#5 of P5, and P6 (30 points)

  1. This task further develops Android Front-End with Cloud Back-End. All of Task 5 description given in P6 is still applicable. Additionally, enhance it as follows.
  2. Check if the chosen password is crackable via one of the tools. Ideally, this should mimic how the target application (login, wordpress, …) encodes the password. But, for the purposes of this P7, let us just encode it as an MD5-hash. Here is a code snippet that should work. No salting.
  3. Actively suggest passwords created from multi-word phrases. Another related article is passphrases only only marginally more secure than passwords because of poor choices.

4 TurnIn

  1. Read ./3900-turnin-details.html
  2. The details of [most of the] deliverables are being omitted to your best judgement.
  3. Do remember to upload, on due + 2 days, src code (not bundles) and APKs to GitHub.

5 End

Copyright © 2017 Dr Prabhaker Mateti • 2017-04-10