CS 329E Final Project


Final Project: A Complete App



Project Description

The final assignment will draw on the skills you've gained from previous assignments as well as the material discussed during lecture. This project will be done in groups of 2-4. You may stay with your previous group or reform into a new group for this assignment. While this project has a minimum set of required features, you are welcome to focus on the areas of app development that are relevant to your personal interests.

Since app development draws heavily from the "agile" workflow, we will follow that development cycle by having three milestones before the final due date: project mockups/wireframes, an alpha version, and a beta version of the app.

Basic Requirements

The app must implement the following features:
  1. Multiple views (at least three screens)
  2. Core Data storage of persistent information related to the user
  3. Core Animation and/or Core Graphics
  4. Use of at least one additional framework (Core Location, Gestures, Core Motion, Camera, Contacts, Events, etc)
  5. Networking functionality

Getting Started

You will create a new project, teamname_finalproject, based on the team name you and your teammates chose. As a group, you will decide what sort of app functionality you will implement over the remainder of the course. Some things you should ask yourself as you design out the project are:
  1. What view controllers should we use for each screen? (You are not limited to the view controllers discussed in class)
  2. What data and data models should be stored on the device? This data should pertain directly to the app's functionality and the user's preferences. For example, it could be a player character's stats in a game, or a set of favorite recipes in a cooking app. Even if you primarily store this sort of data in a remote database, you should use Core Data (or Keychain if it's private) to store the information you'd like to have for the user when in offline mode.
  3. What additional frameworks will benefit the user? This might be gesture or motion controls in a game, or location data for a restaurant service. Note that some functionality, like Core Motion, are very difficult to test without a provisioned device.
  4. What networking apis/frameworks will we need to incorporate? Networking can include a range of activities: retrieving movies from YouTube, previewing songs from iTunes, using your own backend database, or incorporating social media like Facebook, Twitter, or Instagram. What you choose will be highly dependent on your project, but I recommend you start looking into this as early as possible -- we haven't discussed how to add third-party frameworks to your projects, and it may take some time to familarize yourself with their API and integrating libraries with Cocoapods.

Extra Credit

To receive extra credit, you must first complete the required features. Include a README file explaining which extra features you included, so the grader can check for them.

Above and beyond (up to 5 points)

Create a well-constructed, well-polished app with features that extend beyond those discussed in class. You can receive up to 2 points depending on how much you "wow" the grader. Please include information in the README explaining what unique feature you implemented and why it deserves extra credit.

Some examples of "above and beyond" are: creating your own backend database on Amazon cloud for the networking, using OpenGL functionality directly, or implementing some unique algorithm in addition to the mobile requirements (e.g. incorporating AI into a game, or creating a unique way of analyzing movement data in a health app).

Milestone 1: Wireframes

You will submit your project with working segue connections between screens. Mock up info should be in place on each screen to demonstrate how the final app will look.

Milestone 2: Alpha

The alpha milestone will include basic functionality for all the app's features. These features do not need to be fully implemented (e.g. icons may not animate as intended, or data from frameworks/network apis may be successfully retrieved but not fully used), but the alpha should demonstrate how the features will work/be used in the final app.

Milestone 3: Beta

The beta milestone should be a mostly complete app showcasing all of its features and most of the functionality related to those features. While there may be known bugs in the beta version of the app, in general, this version of an app should be complete except for the final "polish" and should therefore be ready for use without any major bug crashes or functionality issues.

Final Submission

You will submit a zip of the project folder, teamname_finalproject, that contains the file folder with code, and teamname_finalproject.xcodeproj via Canvas. Include a README file with extra credit details to receive extra credit, as well as any instructions the grader needs to know to use all of the app's features.


Last modified: 1/14/20 by Sarah Abraham theshark@cs.utexas.edu