Core Skills App Assignment

Due: Monday, October 23 @ 11:55 PM

This assignment will have you working with your final project partner to add in the code to complete eight core features for the platform you have chosen for your final project. You may or may not be using these features in your actual final project, but we want you to have exposure to all of these.

Many of these features will be covered in class with example code. You are welcome to use any example code we provide in class for this assignment.

We have provided a skeleton app for both platforms. When you create your GitHub repo for the project, it will be auto-filled with the starter code that contains all needed UI elements and libraries.

The eight features you will build are:

  • Accessing the GPS location
  • Registering a device shake
  • Getting data from the accelerometer
  • Using the camera
  • Consuming a JSON web service
  • Pulling data from a Firebase database
  • Using CoreData / SQLite to store and retrieve data
  • Using UserDefaults / SystemPreferences to store and retrieve key/value data

Getting Started: Partner Registration

To register your device and partner information for the core skills project and final project, please follow these steps:

  1. Decide whether you will have a partner or not. You may do the core skills and final projects solo, but note that there is no difference in grading between solo or partner projects. All teams must complete all requirements with the same high level of quality that we expect.
  2. Decide on your platform: Android + Java + Android Studio or iOS + Swift + Xcode. Your choice, but these are the only two choices.
  3. Pick the device you will use. Depending on your situation, you may have multiple devices or none of a given platform. If you have a device you can use, make sure you have all the components for it and set it aside. You will be required to return all other devices as soon as possible so others can check them out. If you do not have a device with all of the components of the type you want to use, you will need to see Prof. Sherriff to get one before continuing any further with this process.

Once you have decided these things, register your project team and device here:

https://goo.gl/forms/sAL4encFmvSunt0i1

If you are working in a pair, ONLY ONE person should fill out the form!

Once you have completed the form, accept the assignment and create a project team with the name "final-device", replacing device with the name of your device (i.e. final-gala or final-machamp, etc.), for the platform of your choice:

Your repo should be pre-populated with the skeleton code you need to get started. The first thing you should do is change the README.md file to have your names and computing IDs listed.

If you need to reference the original repos, they are linked below. You should NOT need to download these unless you need a reference! You should start with the pre-generated repos above!

Please let us know if you have any issues.

Returning Unused Devices

If you have unused devices, you can turn them in to Prof. Sherriff during his office hours. If you cannot make his office hours, email for an appointment time to come by to have the device checked in. Please do this as soon as possible after you have chosen your device and platform!

Feature Information

Accessing the GPS location
  • The user should be able to tap a button to activate the GPS and the latitude and longitude should update. Note that many of our devices do GPS through wi-fi, so it may not update that quickly. You can also test this with the emulator.
Registering a device shake
  • When the user shakes the screen, a count on the screen should go up by 1.
Getting data from the accelerometer
  • The user should be able to activate the accelerometer and show the current x, y, and z positioning. You can also test this with the emulator.
Using the camera
  • The user should be able to take a picture and display it on the screen or pick a picture from the image library.
Consuming a JSON web service
  • The user should be able to enter a department and number (such as CS 4720) and display the course name, instructor, and location. The location of the web service is http://stardock.cs.virginia.edu/louslist/Courses/view/CS/4720?json. You can replace CS and 4720 with other departments or course numbers to get different information.
Pulling data from a Firebase database
  • The user should be able to enter a department and number (such as CS 4720) and display the course name, instructor, and location. Here is what the Firebase DB looks like:

/images/firebase.png

Using CoreData / SQLite to store and retrieve data
  • The user should be able to enter a name and computing ID, store it by pressing one button, and loading the values into two Labels / TextViews by pressing the other button.
Using UserDefaults / SystemPreferences to store and retrieve key/value data
  • The user should be able to enter a name and computing ID, store it by pressing one button, and loading the values into two Labels / TextViews by pressing the other button.

Rubric

Each feature is graded on a works/mostly works/doesn't work scale.

Out of 10 total points:

These features are worth 1 point each and are graded on a 1/.5/0 scale:

  • Accessing the GPS location
  • Registering a device shake
  • Getting data from the accelerometer
  • Using the camera
  • Pulling data from a Firebase database
  • Using UserDefaults / SystemPreferences to store and retrieve key/value data

These features are worth 2 points each and are graded on a 2/1/0 scale:

  • Consuming a JSON web service
  • Using CoreData / SQLite to store and retrieve data

Submit

As before, we will grade whatever is in your GitHub repo at submission time. There are no partner evals for this assignment. We will use the final project evaluations since the partners are the same. If there are any issues with your partner, please contact Prof. Sherriff directly.

If you are doing Android, please also put a signed debug apk in the root of your repo. DON'T do a fully-signed apk - this is because the key that you use won't be linked to the Firebase DB, so the app will likely crash. So, use Build -> Build APK and submit the app-debug.apk file.

Make sure to change your README.md file to have your names and computing IDs listed.

more ...