The Big Picture

The MyRuns app that you will build over the next 6 weeks as a set of thematic programming assignments is a simple fitness app for Android. It allows you to capture your runs and walks and view the stats on Google Maps. It uses sensors (viz. GPS, accelerometers) in the phone to infer your activity (e.g., running) in an automatic manner. We start by building out the UI then add GPS, Google maps, the inference model and database components. The app comprises a client that runs on the phone and a backend cloud component using Google App Engine. So you get first hand knowledge on implementing a native app on the phone and a cloud component. That's very cool.

This is a fun and challenging set of assignments that let's you get experience with many of the common programming challenges when building an Android app. You can use this experience as a foundation for creating and programming your own ideas as part of the group project at the end of the class. We will also publish the apps from the project phase of the class on Google Play. We will therefore experience design, programming, testing and publishing an app -- the complete lifecycle.

What is the idea of this document? It presents a lot of details on the MyRuns app. Think of it as a high-level specification and some pointers on design. BTW, you are free to design your app as you like or follow the guidelines layout here.

The Small Picture

The class assignments break down into 6 thematic labs that allow you to incrementally and systematically build a complex app. While this document does not attempt to answer all the questions -- and in places it gives quite a lot of detail and is vague in other parts -- you can download the following APKs for each lab assignment to your phone and play with it. By doing this you will best understand what the app is doing. Your job is to replicate the UI (or modify it) and functionality. The labs area as follows:

Note, as part of the development of the app you will need a set of icons. You can see where to use them by demoing the apks (above). Feel free to use your own icons if you wish.

This Document

There is a lot of information in this document -- do not panic.

The document contains information for the complete MyRuns app. Again, do not feel overwhelmed by all the details. What you should do is read the complete document and then focus on what needs to be design and programmed for each lab. You start with lab 1 and finish with lab 6. So this week focus on lab 1 not the others labs. The reason we give out the complete design is so you can keep the complete project in mind as you develop each lab each week. The idea is that you can reuse common components as you move through the piecemeal programming of each successive lab.

Once more: this document contains a lot of material, but we need to know what the app does in the first place to help you digest it while keeping the big picture in mind. Each lab includes an example APK for you to download and run on your phone. This gives you a good idea of what is expect at the UI level and in terms of the new features each lab adds to the cumulative app.

In summary, read the spec. Each week read the lab description (which is more pointers into the document than a detailed lab description) and run the APK. Then start designing and programming the lab. Once you are done testing your code works you should submit the lab on the Canvas.

Tip: once you have read the complete document then read it again.

Sections

The document has the following sections:

Labs section describes what you need to accomplish for each lab. There are 6 labs.

Submission of labs explains what to submit and how.

User Interface section discusses the user interfaces and functionality.

System Design Principles section discusses an overview of MyRuns' system design principles.

User Interface Implementation section specifies how to implement the user interface.

Database Implementation section describes how to design and implement the database.

Service Implementation discusses the design considerations for service implementation.

Lab Assignments

The following labs make up the MyRuns app -- we just list the labs here and discuss them in more detail later.

Submission of programming assignments

Submit your work through Canvas. You need to put your files (Android Studio project, AssignmentName.apk, README.txt if needed) into a folder and name your folder FirstName_LastName_AssignmentName (e.g. Jun_Gong_MyRuns1). Finally you need to zip your folder and use the same name to name your zip file. Please leave a note on Canvas to specify the name of the other student if you do pair programming. Note that the same information should also show up in README.txt, which is usually used if you want to tell your graders that you are using your free 24 hour pass.