CEG 3900: 2017 Spring Final

120 minutes 100 points Weight 30%

Use your Linux/Windows laptop while answering. You are welcome to use IdeaJ, and Android Studio + SDK tools, but not websites. Apart from these, this is a closed book, closed notes exam. Do not give or take help during the exam. In particular, you are honor bound not to Internet surf or access any content already existing (other than as indicated) once you access the exam until you turnin the final-answers.pdf and other files. Please leave wide margins in the pdf. All submissions are to be done in the Final dropbox on Pilot.

1 Part I

(5 points each) The following statements may or may not be (fully or partially) valid. First, explain the underlined technical term(s). Then, explain/ discuss/ dispute the statement. It is possible to write, say, five, sentences each, and yet receive full score.

  1. Using MBaaS we can build APKs with GUI in the Android device and business logic in Firebase.
  2. Event driven programming is not possible without concurrency and threads.
  3. Reactive programming is an extension of the observer software design pattern.
  4. A rainbow table enables password encryption when there is no salting.

2 Part II

This problem is in the context of "Task: Word Wide Inflation of Grades" of P7. Here is a link to a single file that contains the grades of one course offering. Recall that 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.

  1. (20 points) Write a method named Compute to compute the average grade given in this course, using Java-8 streams, maps and reduce. You lose 5 points for each loop you use.
  2. (20 points) Make a simple APK for the above. Introduce the app in the first screen. In subsequent screens, interactively obtain the link to one file of grades. After an OK, invoke Compute, and show the average grade. Submit the APK and the source code bundle.

3 Part III

(10 points each) Answer the following, at the level of Android app development details, Android internals, etc.

  1. Choose a public method, of 10+ lines, from your submissions to P5, P6, or P7. Give the weakest pre- and strongest post-conditions of this method, as Java asserts. Include the description of your choice: Px, path name of the Java file, class name, method name, the source code of this method, and ofcourse, the two assertions.
  2. Describe the process states named Start, Ready, Running, Wait and Terminated. Draw a diagram connecting these states, and label the arrows of transitions.
  3. Here is a link to the code of Eeny Meeny Miny Moe that we wish to build on our laptop, but deploy/ run it via docker. Develop a dockerfile for this, and verify that it works.
  4. Deploy the above on AWS or Azure and show evidence and result.

4 Part IV

  1. (0 points) [For survey purposes only.] Please record your effort, in minutes, for each of the above items. Other feedback you wish to give is also welcome.

5 End

Copyright © 2017 www.wright.edu/~pmateti • 2017-04-24