Tech Assignments

Core Skills App Assignment

Due: Monday, April 3 @ 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

Create a new repo and team with the appropriate link below based upon your platform of choice for the final project.

NOTE: Use "core-device" as your team name for this one to avoid the name collision issues we had before! So, if you are using Unown, you should register "core-unown" as your team!

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!

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. However... CS 4720 is the only course in the database right now. 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.

GitHub Practice Assignment

Due: Wednesday, January 25 @ 11:55 PM

Your first assignment for this course is to become accustomed to how GitHub works because we will be using it extensively in the class for your projects and for assignment submission.

Go to https://services.github.com/on-demand/ and do the three tutorials found here, using the repos we are providing through the GitHub Classroom infrastructure.

Adjustments to the Tutorials

Some of the instructions for these tutorials won't make complete sense with your own repo. Just follow along as best you can. We are not checking for an exact match to anything. But we will check to see that you have done all the tutorials and have made changes in your own repos that are provided. Specific notes can be found below:

  • GitHub 101 - Don't worry about posting a comment in their thread, etc. This wasn't working when I tried it due to too many comments. When you create your repo with the link above, it will be pre-populated with a copy of their example repo. Just do the steps as best you can, skipping the things that require the system to approve a change, etc.
  • GitHub 102 and 103 - The website loading stuff won't work because of how we have to name the repos. So you should be able to do everything else, just not actually view the website.

Submission

There is nothing to explicitly submit for this assignment. We will look at the state of your three repos at the submission time listed above and use that for grading.

You will also need to register your GitHub name with us against your computing ID so we know which repo is yours. Do that on the Google form here: https://goo.gl/forms/xkspAMecehV4CLMh2

Grading Rubric

Out of 10 total points:

For each of the three repos:

  • 3/3: The repo has all of the appropriate files, notes, and comments in it from following the tutorials.
  • 2/3: There are a few minor errors or missing components.
  • 1/3: The repo is either empty or missing a significant number of components.

Plus:

  • 1/1: All three repos were created.
more ...